昨日課程回顧:算法
編程語言的發展:編程
機器語言: 二進制windows
彙編語言: 指令服務器
高級語言: 面向過程(C) 面向對象(Python)session
操做系統的目標:併發
爲用戶更方便的使用異步
並行:指兩件或多間事情,在同一時間點同時執行編程語言
併發:指兩件或多見事情,在同一時間間隔內同時執行操作系統
計算機組成:線程
CPU,主板,儲存,輸入,輸出
進程由三部分組成:
代碼段,數據段,PCB(進程控制塊)
進程的特徵:
動態性:進程的實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消亡的。
併發性:任何進程均可以同其餘進程一塊兒併發執行
獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位;
異步性:因爲進程間的相互制約,使進程具備執行的間斷性,即進程按各自獨立的、不可預知的速度向前推動
多個不一樣的進程能夠包含相同的程序:一個程序在不一樣的數據集裏就構成不一樣的進程,能獲得不一樣的結 果;可是執行過程當中,程序不能發生改變。
進程的三個基本狀態:
就緒狀態:得到了除CPU以外運行的全部資源
執行狀態:得到了全部資源,處於正在執行的狀態
阻塞狀態:由於各類緣由,致使進程放棄了CPU,致使進程沒法繼續執行,此時進程處於內存中
dos系統: 單用戶單任務
windows系統: 單用戶多任務(早期的windows)
unix系統: 多用戶多任務
爲何要有操做系統?
1 封裝了全部硬件的接口,是用戶更方便的使用
2 對於計算機內全部資源,進行一個合理的調度和分配
多進程的模塊:
multiprocessing
process
並行 : 並行是指二者同時執行,好比有兩條車道,在某一個時間點,兩條車道上都有車在跑;(資源夠用,好比三個線程,四核的CPU )
併發 : 併發是指資源有限的狀況下,二者交替輪流使用資源,好比只有一條車道(單核CPU資源),那麼就是A車先走,在某個時刻A車退出把道路讓給B走,B走完繼續給A ,交替使用,目的是提升效率。
並行是從微觀上,也就是在一個精確的時間片刻,有不一樣的程序在執行,這就要求必須有多個處理器。
併發是從宏觀上,在一個時間段上能夠看出是同時執行的,好比一個服務器同時處理多個session。
早期單核CPU時候,沒有並行的概念,只有併發(微觀上串行,宏觀上並行)
站在CPU角度看 站在人的角度看就是同時有不少任務同時執行
在瞭解其餘概念以前,咱們首先要了解進程的幾個狀態。在程序運行的過程當中,因爲被操做系統的調度算法控制,程序會進入幾個狀態:就緒,運行和阻塞。
(1)就緒(Ready)狀態
當進程已分配到除CPU之外的全部必要的資源,只要得到處理機即可當即執行,這時的進程狀態稱爲就緒狀態。
(2)執行/運行(Running)狀態當進程已得到處理機,其程序正在處理機上執行,此時的進程狀態稱爲執行狀態。
(3)阻塞(Blocked)狀態正在執行的進程,因爲等待某個事件發生而沒法執行時,便放棄處理機而處於阻塞狀態。引發進程阻塞的事件可有多種,例如,等待I/O完成(input)、申請緩衝區不能知足、等待信件(信號)等。
同步:
所謂同步就是一個任務的完成須要依賴另一個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列
。要麼成功都成功,失敗都失敗,兩個任務的狀態能夠保持一致。
異步:
所謂異步是不須要等待被依賴的任務完成,只是通知被依賴的任務要完成什麼工做,依賴的任務也當即執行,只要本身完成了整個任務就算完成了
。至於被依賴的任務最終是否真正完成,依賴它的任務沒法肯定,因此它是不可靠的任務序列
。
from multiprocessing import Process
獲取當前進程的pid號, os.getpid()
獲取當前進程的父進程的pid號, os.getppid()
開啓子進程的方式:
1 p = Process (target = func,args=(,))
target : 是子進程要執行的任務
arges:是父進程給子進程傳遞的參數(必須是元組的形式)
2 自定義類,去繼承Process
進程的經常使用方法:
(1) start() 開啓一個子進程
(2) join() 異步變同步(就是讓父進程停留在join這句話,等待子進程執行結束,父進程在繼續執行)
(3) is_alive() 判斷進程是否還活着
(4) terminate() 殺死進程
進程的經常使用屬性:
(1) p.name = 給p進程一個名字
(2) p.pip 返回p進程的pid
(3) p.daemon=True 及那個p進程設置位守護進程.(True爲守護進程,Flase爲普通進程)
守護進程的兩個特色:
守護進程會隨着父進程的結束而結束
守護進程不能再建立子進程(不能要孩子)