---進程管理---
程序怎麼執行?
1,將程序從硬盤複製到kernel中
2,將程序複製到一個獨立的內存空間
內存空間有什麼組成?
用戶內存空間 + kernel
什麼是進程?
程序本身 + 內存空間 + 數據 + 線程 等程序執行需要的各種資源
線程(thread):進程執行的最小單位
分類:
前臺任務:一次執行 ls
後臺任務:一直在執行 init pstree -p 查看
CoW:寫時複製
進程:都是由父進程創建,怎麼創建? fork(), clone()
CPU進行線程切換叫做上下文!
緩存失效:CPU處理一個進程時被切換到另一個進程,造成當前緩存失效。這種現象極大浪費CPU性能
內存存儲單位:Page Frame 頁框 4K
物理地址空間:應用程序在內存中的真實存儲位置
線性地址空間:應用程序認爲自己的存儲位置
MMU:memory management unit 在cpu中,負責轉換物理地址和線性地址
內存釋放算法:LRU 近期最少使用算法
規則:淘汰老舊,老舊更新。
進程間通信:
同一臺主機
pipe 管道
socket 套接字
signal 信號 ^ + c 等
shm shared memory
semaphore 信號量
不同主機
socket ip和端口
RPC remote procedure call 遠程過程調用
MQ 消息隊列
進程優先級:
實時進程: 0-99
非實時進程:100-139
reltime
nice
top
Linux內核:搶佔式多任務
進程類型:
守護進程:daemon,在系統引導過程中啓動的進程,和終端無關進程
前臺進程:跟終端相關,通過終端啓動的進程
進程狀態:
運行態:running
就緒態:ready
睡眠態:
可中斷:interruptable
不可中斷:uninterruptable
停止態:stopped
僵死態:zombie