-
進程基礎知識
-
程序是什么?
程序就是一堆文件.
-
進程是什么?
進程就是一個正在執行的文件/程序,抽象的概念.
-
進程被誰執行?
cpu最終運行你的程序.
操作系統調度作用.將你的磁盤上的程序加載到內存,然后交由CPU去處理.一個cpu正在運行的一個程序,就叫開啟了一個進程.
-
-
操作系統
-
操作系統的定義
操作系統是存在於硬件與軟件之間,管理,協調,控制軟件與硬件的交互.
-
操作系統的作用:
-
如果沒有操作系統,你去寫一個程序,你只要完成兩層即可.
第一層: 你要學會底層硬件:cpu,內存,磁盤是如何工作使用的.
第二層: 去調用這些底層的硬件.
操作系統第一個作用:將一些丑陋復雜的硬件操作封裝成美麗的接口,便於使用.
open()
-
操作系統的第二個作用:
你的計算機(單個cpu情況)看似可以處理多個進程,看電影 + 玩紙牌游戲 + qq聊天 + 12306搶票.....
操作系統第二個作用: 合理的調度分配多個進程與cpu的關系,讓其有序化,
-
-
-
操作系統(計算機)的發展史(多道技術)
計算機: 機械式計算機.算盤.
電子計算機:發展史.
-
第一代電子計算機(1940~1955)
二戰時期,推出的電子計算機 手工操作.預定.類似於插線板的程序,計入機房,一個人獨資享有計算機2個小時,各種硬件的操作插線與你的程序結合.
特點: 沒有操作系統的概念,所有的硬件連接都是自己完成.
優點: 一個人獨享.
缺點:
- 一個人享用浪費資源.
- 所有的程序都是串行處理.
-
第二代計算機:磁帶存儲,批處理系統.(1955~1965)
不需要程序員本人繼續硬件的操作,所有的硬件的操作都已經是成型的機器了.
每個程序員將自己的程序可在磁盤上.就可以走了.中間有工作人員將你的代碼磁盤運行,最后打印結果.
優點: 節省了程序員連接個硬件的操作的時間.
缺點:
- 不能獨享計算機,不能在程序運行時修復bug.
- cpu還是串行處理.
-
第三代計算機,集成電路,多道程序系統.
集成電路概念,所有的硬件變的很小,排列在線路板上.
20世紀60年代初: 計算機兩條生產線:互不兼容
-
用於科學計算,運算的 計算密集型.
-
用戶商用保險銀行,歸檔,打印等工作. IO 密集型.
阻塞; IO阻塞,recv, accept, read input,write, sleep等等,都是阻塞.
system/360系列: 將兩種計算機類型合並成一個.
第三代計算機解決一個問題: 人工中途參與磁盤傳遞工作,以及輸入輸出設備不同機的問題.
第三代計算機解決第二個問題: 多道技術.
知識點解釋:
辦一個效率高,效率低的問題.
你洗衣服,20分鍾,20分鍾,你(cpu)一直沒有閑着.cpu處理的效率高(利用率,滿負荷),
洗衣服: 10分鍾, 40分鍾, # 以耗時最長的進程結束為准
聊天 : 20分鍾, 10分鍾
燒水: 3分鍾, 5分鍾
如果三個進程全部都沒有IO阻塞,多道技術就會影響最終的效率.
多道技術解決的第一個問題: 時間上的復用.
第一代,二代計算機一個內存只允許加載一個進程.
第三代計算機開始,多道技術結局了提高內存的利用率: 空間上的復用.
一個內存可以加載多個進程.
空間上的復用: 當年面臨着一個問題,數據隔離.
麻省理工(MIT)在一台改裝過的7094機上開發成功的,CTSS兼容分時系統.
一個問題: 還是不能獨享
最終第三代計算機推廣使用.
-
-
-
進程介紹(理論部分)
-
進程與程序的區別.
pass
-
介紹幾個概念.
串行: 所有的進程由cpu一個一個的解決.
並發:單個cpu,同時執行多個進程(來回切換的),看起來像是同時運行.
並行:多個cpu,真正的同時運行多個進程.
阻塞:遇到IO才叫阻塞.
一個cpu運行兩個進程,其中一個進程完全沒有阻塞,
非阻塞: 沒有IO.
-
進程的創建.
什么是開啟多個進程: socket: server,client 兩個進程.
python中,如果一次想開啟多個進程,必須是一個主進程,開啟多個子進程.
linux, windows: 由主進程開啟子進程:
相同點: 原則:主進程開啟子進程兩個進程都有相互隔離的獨立的空間,互不影響.
不同點:
linux: 子進程空間的初始數據完全是從主(父)進程copy一份.
windows: 子進程空間的初始數據完全是從主(父)進程copy一份,但是有所不同.
-
-
python並發編程之:多進程
from multiprocessing import Process import time def task(name): print(f'{name} is running') time.sleep(3) print(f'{name} is done') if __name__ == '__main__': p = Process(target=task,args=('懟哥',)) p.start() print('===主進程')