【轉】操作系統面試題


1、進程和線程有什麼區別?
   進程間是獨立,這體現在內存空間,上下文環境上,線程運行在進程空間內;
   一般而言(不使用特殊技術),進程無法突破進程邊界存取其他進程內的存儲空間,而線程由於處於進程空間內,所以同一進程所產生的線程共享同一內存空間;
   同一進程中的兩段代碼不能夠同時執行,除非引入線程;
   線程是屬於進程的,當進程退出時該進程所產生的線程都會被強制退出並清除。線程佔用的資源要少於進程所佔用的資源。進程和線程都可以有優先級。
 
2、AND信號量集機制的基本思想是什麼,它能解決什麼問題?
   AND同步機制的基本思想是,將進程在整個運行過程中所需要的所有臨界資源一次性全部分配給進程,待該進程使用完後在一起釋放。只要尚有一個資源未能分配 給該進程,其他所有可能爲之分配的資源也不分配給它。亦即,對若干個臨界資源的分配採取原子操作方式,要麼全部分配到進程,要麼一個也不分配。它能解決的 問題:避免死鎖的發生。
 
3、進程間的通信方式?
   信號量、信號、socket、管道、共享內存、消息隊列
 
4、在網絡編程中設計併發服務器,使用多進程與多線程有什麼區別?
   用多進程時每個進程有自己的地址空間,線程則共享地址空間。所有其他區別都是由此而來:
   速度:線程產生的速度快,線程間的通信快、切換快等,因爲它們在同一個地址空間內;
   資源利用率:線程的資源利用率比較好也是因爲它們在同一個地址空間內;
   同步問題:線程使用公共變量/內存時需要使用同步機制,還是因爲它們在同一個地址空間內。
 
5、進程進入等待狀態有哪幾種方式?
   調用P操作,而信號量小於0;進程申請資源不能被分配;
 
6、CPU中的緩存和操作系統中的緩存分別是什麼?
   操作系統的緩存是指快表。在操作系統中,爲提高系統的存取速度,在地址映射機制中增加一個小容量的聯想寄存器,即快表,用來存放當前訪問最頻繁的少數活動 頁面的頁號。當某用戶需要存取數據時,根據數據所在的邏輯頁號在快表中找到其對應的內存塊號,再聯繫頁內地址,形成物理地址。如果在快表中沒有相應的邏輯 頁號,則地址映射仍可以通過內存中的頁表進行,得到空閒塊號後必須將該塊號填入快表的空閒塊中。如果快表中沒有空閒塊,則根據淘汰算法淘汰某一行,再填入 新的頁號和塊號。快表查找內存塊的物理地址消耗的時間大大降低了,使得系統效率得到了極大的提高。
   CPU中的緩存是指高速緩存。CPU的執行速度越來越快,系統架構越來越先進,而主存的結構和存取速度改進則較慢,因此,高速緩存技術將越來越重要。
   高速緩衝存儲器是位於CPU和內存之間的臨時存儲器,它的容量比內存小但交換速度快。在高速緩衝存儲器中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的。當CPU調用大量數據時,就可避開內存直接從高速緩衝存儲器中調用,從而加快讀取速度。
發佈了38 篇原創文章 · 獲贊 14 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章