《上海交通大學學位考試卷》由會員分享,可在線閱讀,更多相關《上海交通大學學位考試卷(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、建筑
上海交通大學學位考 試卷
操作系統(tǒng) 年 月日
姓名 學號 班級 得分
一、 選擇題:每題只選一個用字母表示的答案
1 .根據(jù)作業(yè)在本次分配到的內(nèi)存起始地址,將可執(zhí)行目標代碼裝到指定的內(nèi)存地址中,
并修改有關地址部分的值的方法稱為 B 方式。
A)固定定位 B)靜態(tài)重定位 C)動態(tài)重定位 D)單一重定位
2 .有9條磁帶機供4個進程使用,如每個進程最多同時分配 C 條磁帶機,就沒有死鎖
的危險。
A) 1 B) 2 C) 3 D) 4
3 .通道又稱I/O處理機,它能完成__B 之間的信息傳輸。
A )主存和外設 B) CPU和外設
C)外存和外設 D) 主存
2、和CPU
4 .在下面的shell命令中, A 命令與其他命令輸出不同。
A) echo $x B) echo " $x" C) echo ${x} D) echo $x
填充題
靜態(tài)重定
1 .由裝入程序?qū)嵤┑某绦虻倪壿嫷刂放c物理地址的轉(zhuǎn)換的地址重定位方式稱為
2 .在進程主要狀態(tài)轉(zhuǎn)換圖中,①表示 就緒 狀態(tài)。
5
3 .進程訪問臨界資源的那段代碼稱為 臨界區(qū)(或互斥段)
三、 簡答題、畫圖題
1 .整個UNIX系統(tǒng)的五層基本結構。
Shell 解釋程序
用戶程序 各種應用程序包
系統(tǒng)命令 窗口軟件 庫函數(shù)
系統(tǒng)調(diào)用
核心層:
存儲管
3、理 進程管理
設備管理 文件管理
硬件層
2 .出進程(不支持線程)的定義。
進程是程序處于一個執(zhí)行環(huán)境中在一個數(shù)據(jù)集上的運行過程, 它是系統(tǒng)進行資源分配和調(diào)
度的一個可并發(fā)執(zhí)行的獨立單位。
2.簡述可變分區(qū)存儲管理算法中的首次適應算法(包括分配和釋放算法) 。
(一)分配算法
采用首次適應法為作業(yè)分配大小為 size的內(nèi)存空間時,總是從表的始端的低地址部分開
始查找,當?shù)谝淮握业酱笥诨虻扔谏暾埓笮〉目臻e區(qū)時,就按所需大小分配給作業(yè)。如果分
配后原空閑區(qū)還有剩余空間, 就修改原存儲區(qū)表項的 m_size和m_addr,使它記錄余下的“零 頭”。如果作業(yè)所需空間正好等于該空閑
4、區(qū)大小,那么該空閑區(qū)表項的 m_size就成為0,接
下來要刪除表中這個“空洞”。
(二)回收算法
釋放區(qū)與原空閑區(qū)相鄰情況可歸納為四種情況。
(1)僅與前空閑區(qū)相連:合并前空閑區(qū)和釋放區(qū),該空閑區(qū)的 m_addr仍為原前空閑區(qū)
的首地址,修改表項的長度域 m_size為原m_size與釋放區(qū)長度之和。
(2)與前空閑區(qū)和后空閑區(qū)都相連:將三塊空閑區(qū)合并成一塊空閑區(qū)。修改空閑區(qū)表中
前空閑區(qū)表項,其始地址為原前空閑區(qū)始址,其大小 m_size等于三個空閑區(qū)長度之和,這塊 大的空閑區(qū)由前空閑區(qū)表項登記。接下來還要在空閑區(qū)表中刪除后項。
(3)僅與后空閑區(qū)相連:與后空閑區(qū)合并,使后
5、空閑區(qū)表項的 m_addr為釋放區(qū)的始址,
m_size為釋放區(qū)與后空閑區(qū)的長度之和。
(4)與前、后空閑區(qū)皆不相連:在前、后空閑區(qū)表項中間插入一個新的表項,其 m_addr為釋放區(qū)的始址,m_size為釋放區(qū)的長度。
四、2個信息發(fā)送程序a,b不斷向向緩沖區(qū)存放數(shù)據(jù), 由進程c取走緩沖區(qū)的數(shù)據(jù)(緩沖區(qū)初
態(tài)為空,容量為無限大)。下面的框圖,通過 P、V操作實現(xiàn)三個進程間的互斥和同步。請在 空框內(nèi)填上適當?shù)?P、V操作,并寫出信號燈的初值和意義:
data: 初值為0,緩沖區(qū)中已存放的數(shù)據(jù)個數(shù), (半)同步信號燈
mutex:初值為0,向緩沖區(qū)存放數(shù)據(jù)和從緩沖區(qū)取走數(shù)據(jù)的互斥信號
6、燈
a, b進程
P(mutex)
send(massage)
V(mutex)
V(data)
五、在下面的程序中,父進程首先創(chuàng)建無名管道,再創(chuàng)建一個子進程;然后從鍵盤上讀入一 個Shell命令串(如ls -l ),并通過無名管道向子進程發(fā)送該命令串;父進程等待子進程終 止。子進程通過管道讀到命令串并執(zhí)行該命令后返回。子進程然后打印“ Cmmand Completed.”后終止自己。父進程在子進程完成任務后,顯示返回狀態(tài)后結束運行。 在下面程序的下劃線上填寫適當?shù)恼Z句。
char cmd [100];
void main() {
int pid, status, chan[
7、2];
pipe ( chan )_;
if (_ pid = fork( ) 一) {
close (chan[0]);
printf("canmand=");
gets(cmd);
__wMte ( chan[1], cmd, strlen (cmd) ) _; close (chan[1]);
sleep(5);
__ wait ( &status ) ;
printf("status= %d\n", status);
return;
} else {
close (chan[1]);
bzero (cmd, sizeof(cmd));
__ read ( chan[0], cmd, sizeof (cmd))」
system ( cmd );
printf("Cmmand Completed.\n");
exit(2);
}