題目來源:牛客網討論帖 答案主要來源:https://github.com/huihut/interview 、書籍、博客。
目錄
- C++
- 數據結構與算法
- 計算機網絡
- 計算機系統
- 計算機圖形學
四、計算機系統
1.進程和線程
對於有線程系統:
- 進程是資源分配的獨立單位
- 線程是資源調度的獨立單位
對於無線程系統:
- 進程是資源調度、分配的獨立單位
2.進程調度的方式
管道、信號量、新號、消息隊列、共享內存、套接字
3.進程幾種狀態,進程狀態,調度轉換等等。從阻塞態到就緒態需要依賴內核的什麼
4.線程同步的方法
鎖機制、信號量機制、信號機制、屏障
5.如何保證線程安全
6.介紹下死鎖,如何避免
原因
- 系統資源不足
- 資源分配不當
- 進程運行推進順序不合適
產生條件
- 互斥
- 請求和保持
- 不剝奪
- 環路
預防
- 打破互斥條件:改造獨佔性資源爲虛擬資源,大部分資源已無法改造。
- 打破不可搶佔條件:當一進程佔有一獨佔性資源後又申請一獨佔性資源而無法滿足,則退出原佔有的資源。
- 打破佔有且申請條件:採用資源預先分配策略,即進程運行前申請全部資源,滿足則運行,不然就等待,這樣就不會佔有且申請。
- 打破循環等待條件:實現資源有序分配策略,對所有設備實現分類編號,所有進程只能採用按序號遞增的形式申請資源。
- 有序資源分配法
- 銀行家算法
7.互斥鎖原理和使用
8.多級cache
9.虛擬內存和LRU
10.程序在內存中的佈局
11.爲什麼要字節對齊
12.操作系統在運行一個程序背後會有哪些流程?
13.在程序中棧的作用,函數調用中棧過程