作者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