OS入门--
進程
思想:并發——多道互不干擾的程序,通過PC(program counter)切換交替執行,提高cpu利用率
進程概念:
問題:只是切換,無法記錄切出時原程序的狀態
解決:引入PCB(Program Control Block)組織管理多個進程
結果:產生運行的程序 進程
優點:cpu作為管理者,不是低級的打工人了
多進程圖像:
原理:一個命令啟動一個進程,返回shell等待啟動其他進程
形象展示:任務管理器
多進程組織:PCB+狀態(就緒,運行,阻塞)+隊列(等待,就緒)
交替方式:隊列操作+調度+切換
schedule(){ pNew = getNext(readyQueue);//調度 switch_to(pCur,pNew);//物理cpu->pCur,pNew->物理cpu }問題:無法保證進程不侵犯其他進程的內存,實現地址空間的分離
解決:使用映射表(每個進程都是用虛擬地址,都可從0開始+d;但物理地址是區別的,為x+d)
問題:對于共享數據(如:共享緩沖區),可能會同時修改造成數據混亂
解決:進程同步(合理的推進順序)
正在執行的進程上鎖,直到完全結束再開鎖
等待執行的進程要檢查鎖,直到開鎖后才能執行
用戶級線程
問題:資源(內存)移動易產生錯誤
解決:線程將資源和指令序列分離,只切換指令序列,不需要切映射表
問題:
總結
- 上一篇: 殊途同归的fork()
- 下一篇: MLC——内存延迟及带宽测试工具