現代操作系統(一)——引論

  1. 什麼是多道程序設計?

多道程序設計是將內存分幾個部分,每一部分存放不同的作業,例如:

wKiom1kwLUvSFdz1AAA08stlgag180.jpg

當一個作業等待I/O操作完成時,另一個作業可以使用CPU。如果內存中可以同時存放足夠多的作業,則CPU利用率可以接近100%,在內存中同時駐留多個作業需要特殊的硬件來對其進行保護,以避免作業的信息被竊取或受到***。



2.什麼是SPOOLing?是否認爲將來的高級個人計算機會把SPOOLing作爲標準功能?

當一個作業運行結束時,操作系統就能將一個新作業從磁盤讀出,裝進空出來的內存區域運行,這種技術叫做SPOOLing(同時的外部設備聯機操作)



3.在早期計算機中,每個字節的讀寫直接由CPU處理(即沒有DMA),對於多道程序而言這種組織方式有什麼含義?


4.系列計算機的思想在20世紀60年代由IBM引入進System/360大型機,現在這種思想已經消亡了還是繼續活躍着?


5.緩慢採用GUI的一個原因是支持它的硬件的成本(高昂)。爲了支持25行80列字符的單色文本屏幕應該需要多少視頻RAM?對於1024*768像素24色彩位圖需要多少視頻RAM?在1980年($5/kb)這些RAM的成本是多少?現在它的成本是多少?現在它的成本是多少?


6.在建立一個操作系統時有幾個設計目的,例如:資源利用、及時性、健壯性等。列出兩個可能互相矛盾的設計目的。


7.下面的哪一條指令只能在內核態中使用?

    a)禁止所有的中斷

    b)讀日期-時間時鐘

    c)設置日期-時間時鐘

    d)改變存儲器映像


8.考慮一個有兩個CPU的系統,並且每一個CPU有兩個線程,假設有三個程序P0,P1,P2,分別以運行時間5ms、10ms、20ms開始。運行這些程序需要多少時間?假設這三個程序都是100%限於CPU,在運行時無阻塞,並且一旦設定就不改變CPU。


9.一臺計算機有一個四級流水線,每一級都花費相同的時間執行其工作,即1ns。這臺機器每秒可執行多少條指令?


10.假設一個計算機系統有高速緩存、內存(RAM)以及磁盤,操作系統用虛擬內存。讀取緩存中的一個詞需要2ns,RAM需要10ns,磁盤需要10ms。如果緩存的命中率是95%,內存的是(緩存失效時)99%,讀取一個詞的平均時間是多少?


11.一個校隊人員注意到一部將要出版的操作系統手稿中有一個多次出現的拼寫錯誤。這本書大致有700頁,每頁50行,一行80個字符。若把文稿用電子掃描,那麼 主副本進入【】每個存儲系統的層次要花費多少時間?對於內存儲方式,考慮所給定的存儲時間是每次一個字符,對於磁盤設備,假定存取時間是每次一個1024字符的盤塊,而對於磁帶,假設給定開始時間後的存取時間和磁盤存取時間相同。


12.在用戶程序進行一個系統調用,以讀寫磁盤文件時,該程序提供指示說明了所需要的文件,一個指向數據緩衝區的指針以及計數。然後,控制權轉給操作系統,它調用相關的驅動程序,假設驅動程序啓動磁盤並且直到中斷髮生才終止,在從磁盤讀的情況下,調用者會被阻塞(因爲文件中沒有數據)。在向磁盤寫時會發生什麼情況?需要把調用者阻塞一直等到磁盤傳送完成爲止嗎?


13.什麼是陷阱指令?在操作系統中解釋它的用途


14.陷阱和中斷的主要差別是什麼?


15.在分時系統中爲什麼需要進程表?在只有一個進程存在的個人計算機系統中,該進程控制整個機器直到進程結束,這種機器也需要進程表嗎?


16.說明有沒有理由要在一個非空的目錄中安裝一個文件系統?如果要這麼做,如何做?


17.在一個操作系統中系統調用的目的是什麼?


18.對於下列系統調用,給出引起失敗的條件:fork、exec以及unlink。


19.在count=write(fd,buffer,nbytes);調用中,能在count中而不是nbytes中返回值嗎?如果能,爲什麼?


20.有一個文件,其文件描述符是fd,內含下列字節序列:3,1,4,1,5,9,2,6,5,3,5.有如下系統調用:

lseek(fd,3,SEEK_SET);

read(fd,&buffer,4);

其中lseek調用尋找文件中的字節3.在讀操作完成之後,buffer中的內容是什麼?


21.假設一個10MB的文件存在磁盤連續扇區的同一個軌道上(軌道號:50)。磁盤的磁頭臂此時位於第100號軌道,要想從磁盤上找回這個文件,需要多長時間?假設磁頭臂從一個柱面移動到下一個柱面需要1ms,當文件的開始部分存儲在的扇區旋轉到磁頭下需要5ms,並且讀的速率是100MB/s。


22.塊特殊文件和字符特殊文件的基本差別是什麼?


23.在圖1-17的例子中庫調用稱爲read,而系統調用自身稱爲read。這兩者都有相同的名字是正常的嗎?如果不是,哪一個更重要?


24.在分佈式系統中,客戶機-服務器模式很普遍。這種模式能用在單個計算機的系統中嗎?


25.對程序員而言,系統調用就像對其他庫過程的調用一樣,有無必要讓程序員瞭解哪一個庫過程導致了系統調用?在什麼情形下,爲什麼?


26.圖1-23說明有一批UNIX的系統調用沒有與之相等價的Win32 API。對於所列出的每一個沒有Win32等價的調用,若把一個UNIX程序轉換到Windows下運行,會有什麼後果?


27.可移植的操作系統是能從一個系統體系結構到另一個體繫結構的移動不需要任何修改的操作系統。爲什麼建立一個完全可移植性的操作系統是不可行的,描述一下在設計一個高度可移植的操作系統時所設計的高級的兩層是什麼樣的。


28.請解釋在建立基於微內核的操作系統時策略與機制的分離帶來的好處


29.下面是關於單位轉換的

    a)一微年是多少秒?

    b)微米常稱爲micron。那麼gigamicron是多長?

    c)1TB存儲器中有多少字節?

    d)地球的質量是6000 yottagram,換算成kilogram是多少?


30.寫一個和圖1-19類似的shell,但是包含足夠的實際可工作的代碼,還可以填寫某些功能,如輸入輸出重定向、管道以及後臺作業等。


31.如果擁有一個個人UNIX類操作系統(Linux、MINIX、Free BSD),可以安全地崩潰和再啓動,請寫一個可以試圖創建一個無限制數量子進程的shell腳本並觀察所發生的事。在運行之前,通過shell鍵入sync,在磁盤上備好文件緩衝區以避免毀壞文件系統。


32.用一個類似於UNIX od或MS-DOS DEBUG的程序考察並嘗試解釋UNIX類系統或Windows的目錄。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章