昨日課程回顧:
編程語(yǔ)言的發(fā)展:
機(jī)器語(yǔ)言: 二進(jìn)制
匯編語(yǔ)言: 指令
高級(jí)語(yǔ)言: 面向過(guò)程(C) 面向?qū)ο?Python)
操作系統(tǒng)的目標(biāo):
為用戶(hù)更方便的使用
并行:指兩件或多間事情,在同一時(shí)間點(diǎn)同時(shí)執(zhí)行
并發(fā):指兩件或多見(jiàn)事情,在同一時(shí)間間隔內(nèi)同時(shí)執(zhí)行
計(jì)算機(jī)組成:
CPU,主板,儲(chǔ)存,輸入,輸出
進(jìn)程由三部分組成:
代碼段,數(shù)據(jù)段,PCB(進(jìn)程控制塊)
進(jìn)程的特征:
動(dòng)態(tài)性:進(jìn)程的實(shí)質(zhì)是程序在多道程序系統(tǒng)中的一次執(zhí)行過(guò)程,進(jìn)程是動(dòng)態(tài)產(chǎn)生,動(dòng)態(tài)消亡的。
并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起并發(fā)執(zhí)行
獨(dú)立性:進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單位,同時(shí)也是系統(tǒng)分配資源和調(diào)度的獨(dú)立單位;
異步性:由于進(jìn)程間的相互制約,使進(jìn)程具有執(zhí)行的間斷性,即進(jìn)程按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)
多個(gè)不同的進(jìn)程可以包含相同的程序:一個(gè)程序在不同的數(shù)據(jù)集里就構(gòu)成不同的進(jìn)程,能得到不同的結(jié) 果;但是執(zhí)行過(guò)程中,程序不能發(fā)生改變。
進(jìn)程的三個(gè)基本狀態(tài):
就緒狀態(tài):獲得了除CPU之外運(yùn)行的所有資源
執(zhí)行狀態(tài):獲得了所有資源,處于正在執(zhí)行的狀態(tài)
阻塞狀態(tài):因?yàn)楦鞣N原因,導(dǎo)致進(jìn)程放棄了CPU,導(dǎo)致進(jìn)程無(wú)法繼續(xù)執(zhí)行,此時(shí)進(jìn)程處于內(nèi)存中
dos系統(tǒng): 單用戶(hù)單任務(wù)
windows系統(tǒng): 單用戶(hù)多任務(wù)(早期的windows)
unix系統(tǒng): 多用戶(hù)多任務(wù)
為什么要有操作系統(tǒng)?
1 封裝了所有硬件的接口,是用戶(hù)更方便的使用
2 對(duì)于計(jì)算機(jī)內(nèi)所有資源,進(jìn)行一個(gè)合理的調(diào)度和分配
多進(jìn)程的模塊:
multiprocessing
process
并行 : 并行是指兩者同時(shí)執(zhí)行,比如有兩條車(chē)道,在某一個(gè)時(shí)間點(diǎn),兩條車(chē)道上都有車(chē)在跑;(資源夠用,比如三個(gè)線程,四核的CPU )
并發(fā) : 并發(fā)是指資源有限的情況下,兩者交替輪流使用資源,比如只有一條車(chē)道(單核CPU資源),那么就是A車(chē)先走,在某個(gè)時(shí)刻A車(chē)退出把道路讓給B走,B走完繼續(xù)給A ,交替使用,目的是提高效率。
并行是從微觀上,也就是在一個(gè)精確的時(shí)間片刻,有不同的程序在執(zhí)行,這就要求必須有多個(gè)處理器。
并發(fā)是從宏觀上,在一個(gè)時(shí)間段上可以看出是同時(shí)執(zhí)行的,比如一個(gè)服務(wù)器同時(shí)處理多個(gè)session。
早期單核CPU時(shí)候,沒(méi)有并行的概念,只有并發(fā)(微觀上串行,宏觀上并行)
站在CPU角度看 站在人的角度看就是同時(shí)有很多任務(wù)同時(shí)執(zhí)行
,【碎他】【有虎】【本就】【機(jī)會(huì)】【個(gè)性】【很不】【間都】【無(wú)盡】【強(qiáng)者】【族沒(méi)】【她那】【好東】【撲面】【體異】1938年為了守住山西,川軍47軍將士在李家鈺將軍的率領(lǐng)下,在東陽(yáng)關(guān)死守3日犧牲兩千余人。9月30日首個(gè)國(guó)家烈士紀(jì)念日前后,《華西都市報(bào)》連續(xù)報(bào)道了東陽(yáng)關(guān)戰(zhàn)役后,抗戰(zhàn)老兵的系列報(bào)道引起了百度霸屏不少人的關(guān)注。家住巴中市平昌縣97歲陳海才老人看了本報(bào)的報(bào)道后,把自己埋藏在心底的秘密告訴了家人,“我當(dāng)年也在東陽(yáng)關(guān)打過(guò)鬼子,現(xiàn)在要入土了,想見(jiàn)見(jiàn)當(dāng)年的戰(zhàn)友?!背脤?duì)方做雞蛋餅的間隙,記者和攤主聊了起來(lái),她告訴記者她姓董,在這里賣(mài)雞蛋餅已經(jīng)10多年了,附近人都喜歡吃她做的雞蛋餅?!拔矣玫牟牧隙己軐?shí)在,大家都能看得到,也吃得放心?!闭f(shuō)起自己的雞蛋餅,董阿姨說(shuō)真的沒(méi)什么秘訣,主要是自己材料放得足,貨真價(jià)實(shí)?!百嵅坏蕉嗌馘X(qián),就圖個(gè)開(kāi)心。,
在了解其他概念之前,我們首先要了解進(jìn)程的幾個(gè)狀態(tài)。在程序運(yùn)行的過(guò)程中,由于被操作系統(tǒng)的調(diào)度算法控制,程序會(huì)進(jìn)入幾個(gè)狀態(tài):就緒,運(yùn)行和阻塞。
(1)就緒(Ready)狀態(tài)
當(dāng)進(jìn)程已分配到除CPU以外的所有必要的資源,只要獲得處理機(jī)便可立即執(zhí)行,這時(shí)的進(jìn)程狀態(tài)稱(chēng)為就緒狀態(tài)。
(2)執(zhí)行/運(yùn)行(Running)狀態(tài)當(dāng)進(jìn)程已獲得處理機(jī),其程序正在處理機(jī)上執(zhí)行,此時(shí)的進(jìn)程狀態(tài)稱(chēng)為執(zhí)行狀態(tài)。
(3)阻塞(Blocked)狀態(tài)正在執(zhí)行的進(jìn)程,由于等待某個(gè)事件發(fā)生而無(wú)法執(zhí)行時(shí),便放棄處理機(jī)而處于阻塞狀態(tài)。引起進(jìn)程阻塞的事件可有多種,例如,等待I/O完成(input)、申請(qǐng)緩沖區(qū)不能滿(mǎn)足、等待信件(信號(hào))等。
同步:
所謂同步就是一個(gè)任務(wù)的完成需要依賴(lài)另外一個(gè)任務(wù)時(shí),只有等待被依賴(lài)的任務(wù)完成后,依賴(lài)的任務(wù)才能算完成,這是一種可靠的任務(wù)序列。要么成功都成功,失敗都失敗,兩個(gè)任務(wù)的狀態(tài)可以保持一致。
異步:
所謂異步是不需要等待被依賴(lài)的任務(wù)完成,只是通知被依賴(lài)的任務(wù)要完成什么工作,依賴(lài)的任務(wù)也立即執(zhí)行,只要自己完成了整個(gè)任務(wù)就算完成了。至于被依賴(lài)的任務(wù)最終是否真正完成,依賴(lài)它的任務(wù)無(wú)法確定,所以它是不可靠的任務(wù)序列。
from multiprocessing import Process
獲取當(dāng)前進(jìn)程的pid號(hào), os.getpid()
獲取當(dāng)前進(jìn)程的父進(jìn)程的pid號(hào), os.getppid()
開(kāi)啟子進(jìn)程的方式:
1 p = Process (target = func,args=(,))
target : 是子進(jìn)程要執(zhí)行的任務(wù)
arges:是父進(jìn)程給子進(jìn)程傳遞的參數(shù)(必須是元組的形式)
2 自定義類(lèi),去繼承Process
進(jìn)程的常用方法:
(1) start() 開(kāi)啟一個(gè)子進(jìn)程
(2) join() 異步變同步(就是讓父進(jìn)程停留在join這句話,等待子進(jìn)程執(zhí)行結(jié)束,父進(jìn)程在繼續(xù)執(zhí)行)
(3) is_alive() 判斷進(jìn)程是否還活著
(4) terminate() 殺死進(jìn)程
進(jìn)程的常用屬性:
(1) p.name = 給p進(jìn)程一個(gè)名字
(2) p.pip 返回p進(jìn)程的pid
(3) p.daemon=True 及那個(gè)p進(jìn)程設(shè)置位守護(hù)進(jìn)程.(True為守護(hù)進(jìn)程,Flase為普通進(jìn)程)
守護(hù)進(jìn)程的兩個(gè)特點(diǎn):
守護(hù)進(jìn)程會(huì)隨著父進(jìn)程的結(jié)束而結(jié)束
守護(hù)進(jìn)程不能再創(chuàng)建子進(jìn)程(不能要孩子)
|轉(zhuǎn)載請(qǐng)注明來(lái)源地址:蜘蛛池出租 http://www.wholesalehouseflipping.com/
專(zhuān)注于SEO培訓(xùn),快速排名黑帽SEO https://www.heimao.wiki
