作者harry2145 (harry2145)
看板NTU-Exam
標題[試題] 100下 薛智文 作業系統 期中考
時間Thu Apr 26 02:53:33 2012
課程名稱︰作業系統
課程性質︰必修
課程教師︰薛智文
開課學院:電機資訊學院
開課系所︰資訊系
考試日期(年月日)︰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