進程和操作系統概述
進程的基礎
程序和進程:
程序是一對靜態的代碼文件
進程是一個正在運行著的程序,抽象概念
進程由操作系統操控調用交于CPU運行
操作系統
1.管理控制協調計算機硬件和軟件的關系
2.操作系統的作用?
? 第一個作用:將一些對硬件操作的復雜丑陋的接口,變成簡單美麗的接口. open函數.
? 第二個作用:多個進程搶占一個(CPU)資源時,從操作系統會將你的執行變得合理有序.
? 阻塞: input read write sleep recv accept sendto recvfrom .....
操作系統發展史
最早出現的計算機: 算盤.
電子類的計算機發展史:
第一代計算機1940~1955
在大學里出現了機房,想使用計算機必須預約.
先連接調配各個硬件,1.5小時, 真空管, 然后在插上程序調試.效率低.
優點: 個人獨享整個計算機資源.
缺點:
- 硬件調試插線,耗時
- 所有人都是串行執行.
第二代計算機 磁帶存儲---批處理系統 1955~1965
優點:
- 程序員不用親自對硬件進行插線操控,效率提高.
- 可以進行批量處理代碼.
缺點:
- 程序員不能獨自使用計算機.
- 你的所有程序還是串行.
第三代計算機:集成電路,多道程序系統
大背景:
- 集成電路: 把所用的硬件變小,線路板.
- 將兩套不同的生產線合并成一條生產線.
技術上的更新:多道技術
? 1.空間上的復用:將內存分區域,一個內存可以同時加載多個進程
? 2.時間上的復用:實現將CPU在多個進程之間來回切換,并且保留狀態
幾乎所有的程序又有IO阻塞,
洗衣服: 10分鐘 50分鐘
燒水: 5分鐘 10分鐘
做飯: 15分鐘 5分鐘
同時加載到內存 3個任務,3個進程,每個進程都有阻塞情況,只要cpu運行一個進程時,遇到IO阻塞立馬回切換,長時間占用cpu也會切換.
提升效率,最大限度的使用cpu.
如果是一個IO密集型進程,來回切換提升效率.
如果是一個計算密集型,來回切換降低效率.
第三代計算機廣泛采用了必須的保護硬件(程序之間的內存彼此隔離)之后,第三代計算機應用而生:
每個人占用計算機的時間有限的,
多人(少于10個) 共同使用一個計算機主機,
第四代計算機: 至今.
進程的理論
串行: 所有的任務一個一個的完成.
并發: 一個cpu完成多個任務.看起來像是同時完成.
并行: 多個cpu執行多個任務,真正的同時完成.
阻塞: cpu遇到IO就是阻塞.
非阻塞: 沒有IO,就叫非阻塞.
程序: 一堆靜態文件
一個正在執行的程序任務,一個進程.
一個程序能否開啟多個進程? 可以.
進程的創建:
一個子進程必須依賴于一個主進程才可以開啟.
一個主進程可以開啟多個子進程.
unix: fork創建子進程.
unix(linux,mac): 創建一個子進程會完完全全復制一個主進程所有的資源,初始資源不變.
windows: 操作系統調用CreateProcess 處理進程的創建.
windows:創建一個子進程,會copy主進程所有的資源,但是會改變一些資源.
程序的狀態: