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