有關操作係統
內存管理
對進程按固定大小進行劃分,單位為頁;對主存按同樣大小進行劃分,叫頁框。一個頁剛好對應一個頁框。
那麼進程內的指令或數據的地址表示為:頁號,頁內偏移量。
操作係統為每個進程分配一張頁表,內容為:頁號,該頁內存地址。用於實現邏輯地址到物理地址的映射。
頁麵置換算法:LRU。
LRU是Least Recently Used 近期最少使用算法。即把最久未訪問的頁框置換出去。
問:【2010研招真題】某計算機采用二級頁表的分頁存儲管理方式,按字節編址,頁大小為2^10(2的十次方,下同)B,頁表項大小為2B,邏輯地址結構為:一級頁號,頁號,頁內偏移量。邏輯地址空間大小為2^16頁,則表示整個邏輯地址空間的一級頁表中,包含的頁表項項數最少為(128)
答:一頁最多能存放2^9個頁表項,也就是說一個頁表中可以實現2^9個頁麵的映射。那麼映射2^16個頁麵需要2^7=128個頁表,那麼一級頁表中就需要有128個表項,每項的內容是:頁表編號,頁表地址。
問:【2009研招真題】一個分段存儲管理係統中,地址長度為32位,其中段號占8位,則最大段長是(2^24(2的24次方)B)
所謂Belady anomaly 現象是指什麼?
答:采用FIFO算法時,如果對—個進程未分配它所要求的全部頁麵,有時就會出現分配的頁麵數增多但缺頁率反而提高的異常現象。
進程通信
線程共享的環境包括:進程代碼段、進程的公有數據(利用這些共享的數據,線程很容易的實現相互之間的通訊)、進程打開的文件和進程用戶ID與進程組ID等。
進程擁有這許多共性的同時,還擁有自己的個性。有了這些個性,線程才能實現並發性。這些個性包括:
1.線程ID
每個線程都有自己的線程ID。
2.寄存器組的值
由於線程間是並發運行的,每個線程有自己不同的運行線索,當從一個線程切換到另一個線程上時,必須將原有的線程的寄存器集合的狀態保存,以便將來該線程在被重新切換到時能得以恢複。
3.線程的堆棧
堆棧是保證線程獨立運行所必須的。線程函數可以調用函數,而被調用函數中又是可以層層嵌套的,所以線程必須擁有自己的函數堆棧,使得函數調用可以正常執行,不受其他線程的影響。
4.錯誤返回碼
由於同一個進程中有很多個線程在同時運行,可能某個線程進行係統調用後設置了errno值,而在該線程還沒有處理這個錯誤,另外一個線程就在此時被調度器投入運行,這樣錯誤值就有可能被修改。所以,不同的線程應該擁有自己的錯誤返回碼變量。
5.線程的信號屏蔽碼
由於每個線程所感興趣的信號不同,所以線程的信號屏蔽碼應該由線程自己管理。但所有的線程都共享同樣的信號處理器。
6.線程的優先級
由於線程需要像進程那樣能夠被調度,那麼就必須要有可供調度使用的參數,這個參數就是線程的優先級。
在unix係統中,哪些可以用於進程間的通信?(BCD)
A Socket B.共享內存C 消息隊列 D信號量
進程調度
在非搶占式調度算法中,最短作業優先算法具有最小的平均等待時間。
最後更新:2017-04-03 12:56:03