操作系統面試題

學識都 人氣:3.01W

1、 在Windows 編程中互斥器(mutex)的作用和臨界區(critical section)類似,請說一下二者區別。

操作系統面試題

mutex 可以用於進程之間互斥,critical section是線程之間的互斥。

2、垃圾回收的優點和原理是什麼?

java語言中一個顯著的特點就是引入了垃圾回收機制,使C++程序員最頭疼的內存管理問題迎刃而解,而Java程序員不再需要考慮內存管理。垃圾回收可以有效防止內存泄露。

3、CPU中的緩存 和 OS 中的緩存分別是什麼?

* 塊表——Cache在OS 中運用的典型範例

小結:快表是聯想寄存器訪問速度比內存快,不用快表要兩次訪問內存;用了快表只需要一次訪問內存。

在OS中,爲提高系統的存取速度,在地址映射機制中增加一個小容量的聯想寄存器,即塊表。用來存放當前訪問最頻繁的少數活動頁面的頁號。先訪問快表中是否有需要的邏輯頁號,加上頁內地址得到物理地址。如果快表中沒有才訪問內存中的頁表這樣兩次訪問內存。

* 高速緩衝存儲器: Cache 在CPU中運用的典型範例。

引入原因:內存的存取速度跟不上CPU的執行速度

它的容量比內存小,但是交換速度快! Cache對CPU的性能影響很大。

4、DOS 與 Windows NT 的權限區別是什麼?

DOS 是個單任務、單用戶的操作系統。打開裝有DOS操作系統的計算機時,就擁有了該操作系統的管理員權限,且該權限無處不在。所以只能說,DOS不支持權限的設置。

在Windows NT裏,用戶被分成許多組,組和組之間有不同的權限。當然一個組的用戶和用戶之間也可以有不同的權限。NT中常見的用戶組:Administrators 管理員組、 Users 普通用戶組、Guests 來賓組、Everyone計算機上所有用戶.

5、進程和線程的差別。

線程是指進程內的一個執行單元,也是進程內的可調度實體.

與進程的區別:

(1)調度:線程作爲調度和分配的基本單位,進程作爲擁有資源的基本單位

(2)併發性:不僅進程之間可以併發執行,同一個進程的多個線程之間也可併發執行

(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的'資源.

(4)系統開銷:在創建或撤消進程時,由於系統都要爲之分配和回收資源,導致系統的開銷明顯大於創建或撤消線程時的開銷。

6、談談IA32下的分頁機制

小頁(4K)兩級分頁模式,大頁(4M)一級

7、在IA32中一共有多少種辦法從用戶態跳到內核態?

通過調用門,從ring3到ring0,中斷從ring3到ring0,進入vm86等等

8、網絡編程中設計併發服務器,使用'多進程'與'多線程',請問有什麼區別?

進程:子進程是父進程的複製品。子進程獲得父進程數據空間、堆和棧的複製品。

線程:相對與進程而言,線程是一個更加接近與執行體的概念,它可以與同進程的其他線程共享數據,但擁有自己的棧空間,擁有獨立的執行序列。

兩者都可以提高程序的併發度,提高程序運行效率和響應時間。

線程和進程在使用上各有優缺點:線程執行開銷小,但不利於資源管理和保護;而進程正相反。同時,線程適合於在SMP機器上運行,而進程則可以跨機器遷移。

9、列舉幾種進程的同步機制,並比較其優缺點。

原子操作

信號量機制

自旋鎖

管程,會合,分佈式系統

10、進程之間通信的途徑

共享存儲系統

消息傳遞系統

管道:以文件系統爲基礎

11、描述實時系統的基本特性

在特定時間內完成特定的任務,實時性與可靠性

12、Windows消息調度機制是:

A.指令隊列;B.指令堆棧;C.消息隊列;D.消息堆棧;

13、線程與進程的區別和聯繫? 線程是否具有相同的堆棧?dll是否有獨立的堆棧?

進程是死的,只是一些資源的集合,真正的程序執行都是線程來完成的,程序啓動的時候操作系統就幫你創建了一個主線程。

每個線程有自己的堆棧。

DLL中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問題。因爲DLL中的代碼是被某些線程所執行,只有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調用,那麼這個時候是不是說這個DLL沒有自己獨立的堆棧?如果DLL中的代碼是由DLL自己創建的線程所執行,那麼是不是說 DLL有獨立的堆棧?

以上講的是堆棧,如果對於堆來說,每個DLL有自己的堆,所以如果是從DLL中動態分配的內存,最好是從DLL中刪除,如果你從DLL中分配內存,然後在EXE中,或者另外一個DLL中刪除,很有可能導致程序崩潰。