目錄linux
1.程序程序員
一堆靜態的代碼文件編程
2.進程windows
一個正在運行的程序併發
由操做系統操控調用交由cpu運行 ,被cpu運行函數
1。管理控制協調計算機中硬件與軟件的關係操作系統
2。操做系統的做用?unix
2.沒有操做系統:大家在開發軟件調試
第一層。對硬件(cpu,內存,磁盤)協調,調用blog
第二層 如何調用接口去編程
第一個做用:將一些對硬件操做的複雜醜陋的接口, 變成簡單美麗的接口,open函數
第二個做用:多個進程搶佔一個(cpu)資源時,操 做系統會將你的執行變得合理有序,雨露均沾(比較 快感覺不到)
阻塞:input read write sleep recv accept sendto recvfrom 。。。
百萬級代碼 寫的系統
最先出現的計算機:算盤
電子類的計算機發展史
第一代計算機1940~1955(手工操做----穿孔卡片)
在大學裏出現了機房,想使用計算機必須預定
先鏈接調配各個硬件,1.5小時,真空管,而後在插上程序調試,效率低
優勢:我的獨享整個計算機資源
缺點;1.硬件條件插線,耗時
2.全部人串行執行
優勢程序員不用親自對硬件進行插線操控,效率提升
能夠進行批量處理代碼
缺點:
1.程序員不能肚子使用計算機
2.你的全部程序仍是串行
1.集成電路:把所用的硬件變小,線路板
2.將兩套不一樣的生產線合併成一個生產線
技術上的更新:多道技術,操做系統的理念
空間上的複用
將一個內存能夠同時加載多個進程
時間上的複用
實現將cpu在多個進程之間來回切換,而且保留狀態,在切回來還能保持原樣
幾乎全部的程序都會有io阻塞
同時加載到內存 3個任務,3個進程,每一個進程都有阻塞狀況,只要cpu運行一個進程時,遇到阻塞立馬會切換,長時間佔用cpu也會切換
提高效率,最大限度的使用cpu
若是是一個IO(阻塞)密集型進程,來回切換提高效率
若是在一個計算密集型,耗時來會切換下降效率
第三代計算機 普遍採用必須的保護硬件(程序之間的內存彼此隔離)以後,推進第三代計算機應用而生
每一個人佔用計算機的時間有限的
多人(少於10個)共同使用一個計算機主機
第四代計算機:至今
面向字:大型的科學計算機
面向字符:商用計算機
串行:全部的任務一個一個完成
併發:一個cpu完成多個任務,看起來是同時完成的
並行:多個cpu執行多個任務,真正的同時完成
阻塞:cpu遇到io就是阻塞
非阻塞:沒有IO叫非阻塞
程序:一堆靜態文件
一個正在執行的程序任務,一個進程
一個程序可否同時開啓多個進程?能夠
一個子進程必須基於主進程
主進程是啓動子進程的
一個主進程能夠開啓多個子進程。
unix:fork建立子進程
uninx(linux,mac):建立一個子進程會完徹底全複製一個主進程全部的資源,初始資源不變。
windows:操做系統調用CreateProcess處理進程的建立
windows:建立一個子進程,會copy主進程全部的資源,可是會改變一些資源
系統是最主進程
運行程序運行到io進行阻塞 程序進入阻塞狀態
阻塞結束進入就緒態 須要在就緒態等待開始運行 等程序遇到io阻塞再進行運行