• yoon1
  • C/C++
  • 10KB
  • zip
  • 0
  • 1 积分
  • 1
  • 2020-11-25 14:37
pintos project1 document design timer file
  • project2-2_pintos_src_threads_thread.h
  • project1_project1_design_document.txt
  • project1_pintos_src_threads_thread.h
  • project1_pintos_src_devices_timer.c
  • project1_pintos_src_Makefile.txt
+--------------------+ | CS 140 | | PROJECT 1: THREADS | | DESIGN DOCUMENT | +--------------------+ ---- GROUP ---- >> Fill in the names and email addresses of your group members. Daesang Yoon <> Jihyeon Kim <> ---- PRELIMINARIES ---- >> If you have any preliminary comments on your submission, notes for the >> TAs, or extra credit, please give them here. >> Please cite any offline or online sources you consulted while >> preparing your submission, other than the Pintos documentation, course >> text, lecture notes, and course staff. ALARM CLOCK =========== ---- DATA STRUCTURES ---- >> A1: Copy here the declaration of each new or changed `struct' or >> `struct' member, global or static variable, `typedef', or >> enumeration. Identify the purpose of each in 25 words or less. struct thread int stopwatch give thread a time, I can't know what thread what time so input laytency raw data is stored By adding it to the thread_tick function, it is an advantage that only the stopwatch is changed because there is no other addition ---- ALGORITHMS ---- >> A2: Briefly describe what happens in a call to timer_sleep(), >> including the effects of the timer interrupt handler. Check enables or disables interrupts as specified by LEVEL and store rest tick in stopwatch and thread block at ready list it dose not yield and have CPUs. returns the previous interrupt status And at the end, the stopwatch decreases as the tick increases by 1 >> A3: What steps are taken to minimize the amount of time spent in >> the timer interrupt handler? Originally, when the current thread calls this function, the while statement continues to call thread_yield() for the specified tick and does not occupy CPU. So add stopwatch in thread to know last and once check all thread stopwatch at last per tick. Later, there are few functions, so there is no declaration, and the function of os itself is used so that there is no need for compatibility with the other function. ---- SYNCHRONIZATION ---- ---- RATIONALE ---- >> A6: Why did you choose this design? In what ways is it superior to >> another design you considered? It was the first primitive method that came to mind. The fact that you rarely need to use functions in a way that you implement in thread_tick without actually declaring a function can be an advantage of fewer errors. PRIORITY SCHEDULING =================== ---- DATA STRUCTURES ---- >> B1: Copy here the declaration of each new or changed `struct' or >> `struct' member, global or static variable, `typedef', or >> enumeration. Identify the purpose of each in 25 words or less. In thread.c , I add 2 functions for priority scheduling. bool cmp_priority; : To use the list_insert_ordered 3rd argument and to compare priority between list_elem *a and *b. void max; : To compare priority between first element of (sorted) ready_list and current thread’s. After that, decide whether current thread yield or not. ---- RATIONALE ---- >> B7: Why did you choose this design? In what ways is it superior to >> another design you considered? Sorting the ready_list is a convenient design. If we sort the ready_list, we requires comparing only the first factor of the ready_list whenever a new priority is assigned to the thread. (For searching next max priority) In addition, sorting the ready_list can also be simple to implement using the list_insert_ordered function already provided by pintos. When you give a priority, there is another way. It is comparing that priority with the priority of all the factors in the ready_list. This method is much more expensive. Therefore, when inserting threads into the ready_list, the list_insert_ordered function can reduce costs and make it easier to compare max priority. SURVEY QUESTIONS ================ Answering these questions is optional, but it will help us improve the course in future quarters. Feel free to tell us anything you want--these questions are just to spur your thoughts. You may also choose to respond anonymously in the course evaluations at the end of the quarter. >> In your opinion, was this assignment, or any one of the three problems >> in it, too easy or too hard? Did it take too long or too little time? too long and normal os has disadvantage about construction such as page 4kB making system error so linux often stop during exe. that's problem. array destructed. And pintos thread, device, list too wide code. >> Did you find that working on a particular part of the assignment gave >> you greater insight into some aspect of OS design? git used and ubuntu linux pintos setting. I think it just setting, include unix linux os development and accessiblity theory. >> Is there some particular fact or hint we should give students in >> future quarters to help them solve the problems? Conversely, did you >> find any of our guidance to be misleading?nope we should have problem about pintos because pintos code is too wide so we play and edit this code long and more difficult. i think pintos version little different >> Do you have any suggestions for the TAs to more effectively assist >> students, either for future quarters or the remaining projects?nope >> Any other comments?fun and good
    • 斯坦福大学课程设计project pintos-project2满分例程
      斯坦福大学课程设计pintos-project2满分例程,ubuntu16.04qemu&bochs;均满分(修改userprog/Make.vars 默认qemu)。注释不多,部分内容参考github。代码仅供参考,请勿直接搬运。测试直接在userprog目录下make check...
    • os pintos project2代码
      操作系统实验课,pintos project2 源代码,pass 76,和大家分享,绝对值得! 操作系统实验课,pintos project2 源代码,pass 76,和大家分享,绝对值得!
    • 斯坦福大学课程设计project pintos-project3满分例程
      斯坦福大学课程设计pintos-project3满分例程,ubuntu16.04 qemu 满分(修改userprog/Make.vars 默认qemu)。注释不多,部分内容参考github。代码仅供参考,请勿直接搬运。
    • Pintos-Project:斯坦福大学Pintos项目
      Pintos项目包含四个部分,分别处理操作系统框架的不同部分。 项目1 等待队列 优先排程 项目二 用户程序执行 流程管理 系统调用 专案3 堆栈增长 虚拟内存 内存映射文件 专案4 缓冲区缓存 可扩展文件 文件系统和子...
    • pintos project3
      这个是斯坦福大学操作系统CS104课程pintos Project3的源代码。
    • pintos project1代码
      操作系统 实验课pintos project1 完整代码,过27test
    • os pintos project2代码
      操作系统实验课,pintos project2 源代码,pass 76,和大家分享,绝对值得!
    • pintos project2 源码
      pintos os 操作系统 参数传递 系统调用
      pintos project 介绍. 包含4个, 供大家学习.
    • GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz