精華區beta NTU-Exam 關於我們 聯絡資訊
課程名稱︰作業系統 課程性質︰必修 課程教師︰薛智文 開課學院:電機資訊學院 開課系所︰資訊系 考試日期(年月日)︰2012/4/18 考試時限(分鐘):180 是否需發放獎勵金:是 (如未明確表示,則不予發放) 試題 : Operating Systems Name:╴╴╴╴ CSIE 3310, Spring 2012 SCORE: /110  ̄ ̄ ̄ ̄ ID:╴╴╴╴╴ Midterm, April 18th, 9:10-12:10 This is an open-book and open-own-note exam. Please do answer with your own SUCCINCT words in the order of question number in EXACTLY one given answer sheet. You can write in Chinese and keep this paper. Good luck. 1.When we design an OS, give an example when user goals and system goals are conflicted? [5%] 2.For a system call issued in a virtualized platform, what problem might occur? [5%] How to solve it? [5%] 3.What are the differences of a Web OS and a Cloud OS? [10%] 4.What is the purpose of upcall? [5%] If your OS such as Linux does not support upcall, how do you implement the same function of upcall?[5%] 5.Virtualization enables multiple OSes running simultaneously on a physical machine. What is "para-virtualization"? [5%] In what situation, we still need only one OS running on a virtualized environment? [5%] 6.What are the differences between simulation, emulation, and implementation of a scheduler? [10%] 7.What are the differences between kernel thread and user thread? [5%] In what situation, applications using kernel threads would not always have a better performance than using user threads. [5%] 8.When multiple threads run in parallel on a multicore system, would the more threads for the same task always finish earlier when the number of threads is less than the number of cores? Why? [10%] 9.Does preemptive shortest job first scheduling algorithm have the optimal average waiting time? Prove it. [10%] 10.Describe the problem for the following implementation of a critical section. [10%] do{ ┌──────────────┐ │turn = j; │ │flag[i]=TRUE; │ │while(flag[j] && turn == j);│ └──────────────┘ critical section ┌──────────────┐ │flag[i]=FALSE; │ └──────────────┘ remainder section }while(1); 11.The following codes with semaphores can be used to implement a monitor for synchronization, where F is an external procedure, x is a condition variable. Explain the purpose of using semaphores next [5%] and how the monitor can help for synchornization? [10%] semaphore mutux; // (initially = 1) ┌────────┐ semaphore next; // (initially = 0) │x-count++; │ int next-count = 0; │if(next-count>0)│ semaphore x-sem; // (initially = 0) │ signal(next); │ int x-count=0; │else │ x.wait() │ signal(mutex);│ ┌────────┐ │wait(x-sem); │ │wait(mutex); │ │x-count--; │ │ … │ └────────┘ │ body of F; │ ┌────────┐ │ … │ │if(x-count>0){ │ │if(next-count>0)│ │ next-count++; │ │ signal(next); │ │ signal(x-sem);│ │else │ x.signal() │ wait(next); │ │ signal(mutex);│ │ next-count--; │ └────────┘ │} │ └────────┘ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.244.207