閱讀827 返回首頁    go 阿裏雲 go 技術社區[雲棲]


有關操作係統

內存管理

對進程按固定大小進行劃分,單位為頁;對主存按同樣大小進行劃分,叫頁框。一個頁剛好對應一個頁框。

那麼進程內的指令或數據的地址表示為:頁號,頁內偏移量。

操作係統為每個進程分配一張頁表,內容為:頁號,該頁內存地址。用於實現邏輯地址到物理地址的映射。

 

頁麵置換算法: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

  上一篇:go BigDecimal
  下一篇:go 自己的小項目-WEB服務器IP統計