以下是由中國人才網搜集的有關操作系統常見面試題總結,希望對大家由所幫助。
1、什么是進程(Process)和線程(Thread)?有何區別?
進程是具有一定獨立功能的程序關于某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。一個線程可以創建和撤銷另一個線程,同一個進程中的多個線程之間可以并發執行。
進程與應用程序的區別在于應用程序作為一個靜態文件存儲在計算機系統的硬盤等存儲空間中,而進程則是處于動態條件下由操作系統維護的系統資源管理實體。
2、Windows下的內存是如何管理的?
Windows提供了3種方法來進行內存管理:虛擬內存,最適合用來管理大型對象或者結構數組;內存映射文件,最適合用來管理大型數據流(通常來自文件)以及在單個計算機上運行多個進程之間共享數據;內存堆棧,最適合用來管理大量的小對象。
Windows操縱內存可以分兩個層面:物理內存和虛擬內存。
其中物理內存由系統管理,不允許應用程序直接訪問,應用程序可見的只有一個2G地址空間,而內存分配是通過堆進行的。對于每個進程都有自己的默認堆,當一個堆創建后,就通過虛擬內存操作保留了相應大小的地址塊(不占有實際的內存,系統消耗很小)。當在堆上分配一塊內存時,系統在堆的地址表里找到一個空閑塊(如果找不到,且堆創建屬性是可擴充的,則擴充堆大小),為這個空閑塊所包含的所有內存頁提交物理對象(在物理內存上或硬盤的交換文件上),這時就可以訪問這部分地址。提交時,系統將對所有進程的內存統一調配,如果物理內存不夠,系統試圖把一部分進程暫時不訪問的頁放入交換文件,以騰出部分物理內存。釋放內存時,只在堆中將所在的頁解除提交(相應的物理對象被解除),繼續保留地址空間。
如果要知道某個地址是否被占用/可不可以訪問,只要查詢此地址的虛擬內存狀態即可。如果是提交,則可以訪問。如果僅僅保留,或沒保留,則產生一個軟件異常。此外,有些內存頁可以設置各種屬性。如果是只讀,向內存寫也會產生軟件異常。
3、Windows消息調度機制是?
A)指令隊列;B)指令堆棧;C)消息隊列;D)消息堆棧
答案:C
處理消息隊列的順序。首先Windows絕對不是按隊列先進先出的次序來處理的,而是有一定優先級的。優先級通過消息隊列的狀態標志來實現的。首先,最高優先級的是別的線程發過來的消息(通過sendmessage);其次,處理登記消息隊列消息;再次處理QS_QUIT標志,處理虛擬輸入隊列,處理wm_paint;最后是wm_timer。
4、描述實時系統的基本特性
在特定時間內完成特定的任務,實時性與可靠性。
所謂“實時操作系統”,實際上是指操作系統工作時,其各種資源可以根據需要隨時進行動態分配。由于各種資源可以進行動態分配,因此,其處理事務的能力較強、速度較快。