微軟亞洲技術中心的面試題!!!
1.進程和線程的差別。
線程是指進程內的一個執行單元,也是進程內的可調度實體.
與進程的區別:
(1)調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位
(2)並發性:不僅進程之間可以並發執行,同一個進程的多個線程之間也可並發執行
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源.
(4)系統開銷:在建立或撤消進程時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消線程時的開銷。
網路編程中設計並發伺服器,使用多進程 與 多線程 ,請問有什麼區別?
1,進程:子進程是父進程的複製品。子進程獲得父進程資料空間、堆和棧的複製品。
2,線程:相對與進程而言,線程是一個更加接近與執行體的概念,它可以與同進程的其他線程共用資料,但擁有自己的棧空間,擁有獨立的執行序列。
兩者都可以提高程式的並發度,提高程式運行效率和回應時間。
線程和進程在使用上各有優缺點:線程執行開銷小,但不利於資源管理和保護;而進程正相反。同時,線程適合於在SMP機器上運行,而進程則可以跨機器遷移。
6.列舉幾種進程的同步機制,並比較其優缺點。
原子操作
訊號量機制
自旋鎖
管程,會合,分布式系統
7.進程之間通訊的途徑
共用儲存系統
訊息傳遞系統
管道:以檔案系統為基礎
11.進程死結的原因
資源競爭及進程推進順序非法
12.死結的4個必要條件
互斥、請求保持、不可剝奪、環路
13.死結的處理
鴕鳥策略、預防策略、避免策略、檢測與解除死結
15. 作業系統中進程調度策略有哪幾種?
FCFS(先來先服務),優先順序,時間片輪轉,多級反饋
6.列舉幾種進程的同步機制,並比較其優缺點。
原子操作
訊號量機制
自旋鎖
管程,會合,分布式系統
7.進程之間通訊的途徑
共用儲存系統
訊息傳遞系統
管道:以檔案系統為基礎
11.進程死結的原因
資源競爭及進程推進順序非法
12.死結的4個必要條件
互斥、請求保持、不可剝奪、環路
13.死結的處理
鴕鳥策略、預防策略、避免策略、檢測與解除死結
15. 作業系統中進程調度策略有哪幾種?
FCFS(先來先服務),優先順序,時間片輪轉,多級反饋
面試題: 線程與進程的區別和聯絡? 線程是否具有相同的堆棧? dll是否有獨立的堆棧?
進程是死的,只是一些資源的集合,真正的程式執行都是線程來完成的,程式啟動的時候作業系統就幫你建立了一個主線程。
每個線程有自己的堆棧。
DLL中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問題。因為DLL中的代碼是被某些線程所執行,只有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調用,那麼這個時候是不是說這個DLL沒有自己獨立的堆棧?如果DLL中的代碼是由DLL自己建立的線程所執行,那麼是不是說DLL有獨立的堆棧?
以上講的是堆棧,如果對於堆來說,每個DLL有自己的堆,所以如果是從DLL中動態分配的記憶體,最好是從DLL中刪除,如果你從DLL中分配記憶體,然後在EXE中,或者另外一個DLL中刪除,很有可能導致程式崩潰