1. 程式人生 > >計算機發展史及(python3入門)

計算機發展史及(python3入門)

遇到 不發送 rocket 設置 tpi python 守護 系統 孤兒進程

1. 操作系統的歷史

第一代計算機:
特點:
a. 在一定的時間內,程序員獨享整個計算機的資源
b. 沒有操作系統的概念, 直接操作的是硬件設備
缺點:
a. 浪費計算機資源,一個時間段內只有一個人用。
b. 同一時刻只有一個程序在內存中,被cpu調用執行,比方說10個程序的執行,是串行的

第二代計算機:
特點:
a. 批處理系統解決一個人使用的問題
缺點:

1.整個流程需要人參與控制,將磁帶搬來搬去(中間倆小人)

2.計算的過程仍然是順序計算-》串行

3.程序員原來獨享一段時間的計算機,現在必須被統一規劃到一批作業中,等待結果和重新調試的過程都需要等同批次的其他程序都運作完才可以(這極大的影響了程序的開發效率,無法及時調試程序)
第三代計算機:

串行問題:
a. 多道處理技術 (*******************)
1. 時間的復用
cpu在多個任務之間不斷的進行切換

2. 空間的復用
多個任務必須開辟屬於自己的內存空間 (物理級別的隔離)

相關概念:(*******************)
cpu: 計算執行任務的 不會執行IO操作
cpu切換的條件:
1. 遇到IO操作,就切換
2. 遇到優先級比較高的任務會進行切換
3. 如果某一個任務長時間占用CPU資源,也會切換 , 要所有的任務雨露均沾

a. 串行 : 程序一個接一個的執行
b. 並發 : 單個CPU執行多個程序任務, CPU在程序之間不斷的進行切換, 感覺好像是並行 (偽並行)
c. 並行 : 多個CPU同時執行多個程序任務

進程的概念:
進程和程序的區別:
程序:靜態的程序代碼
進程:正在運行的程序

2. 開啟進程的方式

子進程的開啟耗費的資源和時間是比較長的

a. 父進程沒死, 子進程還在運行, 但是父進程不發送wait()/waitpid()給子進程, 僵屍進程
b. 父進程死了, 子進程還在運行, 此時子進程就是孤兒進程, 會被init進程(0)接管

兩種方式:
1. 函數 (**********************)
2. 類

應用:
1. 爬蟲的時候
2. cmdb 收集數據 開啟多個進程幫我們匯報


python:
1. 數據分析 (python科學計算 (numpy matplotlib 詞雲) ancoando)
2. web開發 (前端 django flask)
3. 自動化運維 (cmdb 自動報修 )

3. 進程的一些屬性 (*********************************)
p.pid() : 獲取進程id
os.getpid() : 獲取進程id
os.getppid() : 獲取父進程id
p.name:進程的名稱
p.daemon:默認值為False,如果設為True,代表p為後臺運行的守護進程,當p的父進程終止時,p也隨之終止,並且設定為True後,p不能創建自己的新進程,必須在p.start()之前設置
p.is_alive():如果p仍然運行,返回True

4. 進程之間的通信
進程和進程之間的數據是物理隔絕的

a. 文件 (硬盤級別)
mutex

b. IPC機制(隊列 內存級別)
隊列

生產者消費者模型:(*********************************)
實現方式:
1. python代碼實現
2. rabbitmq kafka rocketmq
應用場景:
a. weibo消息隊列

5. 開啟線程的方式
待補充

6. 線程的一些屬性
待補充

計算機發展史及(python3入門)