首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C/C++ 筆試忍法帖 01:操作系統核心概念 12 題精講

     編輯:C++ 入門

1. 進程 vs 線程

  • 進程:資源分配單位(地址空間、文件句柄等)
  • 線程:調度執行單位(PC、棧、寄存器)
  • 同進程線程共享地址空間,通信快;進程間通信需 IPC
  • 創建/銷毀線程開銷遠小於進程

2. 單實例程序實現

命名互斥體 CreateMutex、內存映射文件、FindWindow 查找類名、文件/注冊表標誌位、共享內存。

3. 鍵盤鉤子

SetWindowsHookEx(WH_KEYBOARD, ...) 全局鉤子攔截鍵盤消息,修改 wParam 實現按鍵映射。

4. 何時用多線程

  • 耗時操作(IO、計算)放後台,保持 UI 響應
  • 服務端並發處理請求
  • 多核 CPU 並行計算
  • 邏輯解耦:生產者-消費者、管道流水線
  • 其他情況單線程更簡單高效

5. Linux 內核線程

支持。clone() 系統調用創建,內核調度。用戶線程(NPTL)1:1 映射內核線程。

6. 線程池防波峰

固定數量工作線程 + 任務隊列。任務提交入隊,線程池滿則阻塞/拒絕。平滑突發流量。

7. 進程通信方式

共享內存(最快)、消息隊列、管道(無名/命名)、Socket、信號、信號量。

8. 死鎖條件

互斥、請求保持、不可剝佔、循環等待。四條件同時滿足。

9. 死鎖處理

鴕鳥策略(忽略)、預防(破壞條件)、避免(銀行家算法)、檢測與解除(資源分配圖)。

10. 進程調度算法

FCFS、優先級、時間片輪轉(RR)、多級反饋隊列(UNIX/Linux/Windows 採用)。

11. 線程棧與 DLL 堆

  • 每線程獨立棧(1MB 默認)
  • DLL 無獨立棧,代碼由調用者線程執行
  • DLL 通常有獨立堆,跨模塊 new/delete 极易崩潰,遵循「誰分配誰釋放」

12. 多線程對 int x 操作需同步者

x=y(非原子)、x++(讀改寫三步)、++x(同理)。x=1 單指令通常原子但不保證可見性,實際仍需 atomic 或鎖。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved