一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

進(jìn)程和線程的區(qū)別

dyquk4xk2p3d ? 來(lái)源:CSDN ? 2023-05-09 11:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

進(jìn)程和線程

進(jìn)程和線程的區(qū)別

線程具有許多傳統(tǒng)進(jìn)程所具有的特征,故又稱為輕型進(jìn)程(Light—Weight Process)或進(jìn)程元;而把傳統(tǒng)的進(jìn)程稱為重型進(jìn)程(Heavy—Weight Process),它相當(dāng)于只有一個(gè)線程的任務(wù)。在引入了線程的操作系統(tǒng)中,通常一個(gè)進(jìn)程都有若干個(gè)線程,至少包含一個(gè)線程。

根本區(qū)別:進(jìn)程是操作系統(tǒng)資源分配的基本單位,而線程是處理器任務(wù)調(diào)度和執(zhí)行的基本單位

資源開(kāi)銷:每個(gè)進(jìn)程都有獨(dú)立的代碼和數(shù)據(jù)空間(程序上下文),程序之間的切換會(huì)有較大的開(kāi)銷;線程可以看做輕量級(jí)的進(jìn)程,同一類線程共享代碼和數(shù)據(jù)空間,每個(gè)線程都有自己獨(dú)立的運(yùn)行棧和程序計(jì)數(shù)器(PC),線程之間切換的開(kāi)銷小。

包含關(guān)系:如果一個(gè)進(jìn)程內(nèi)有多個(gè)線程,則執(zhí)行過(guò)程不是一條線的,而是多條線(線程)共同完成的;線程是進(jìn)程的一部分,所以線程也被稱為輕權(quán)進(jìn)程或者輕量級(jí)進(jìn)程。

內(nèi)存分配:同一進(jìn)程的線程共享本進(jìn)程的地址空間和資源,而進(jìn)程之間的地址空間和資源是相互獨(dú)立的

影響關(guān)系:一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對(duì)其他進(jìn)程產(chǎn)生影響,但是一個(gè)線程崩潰整個(gè)進(jìn)程都死掉。所以多進(jìn)程要比多線程健壯。

執(zhí)行過(guò)程:每個(gè)獨(dú)立的進(jìn)程有程序運(yùn)行的入口、順序執(zhí)行序列和程序出口。但是線程不能獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制,兩者均可并發(fā)執(zhí)行

進(jìn)程的狀態(tài)轉(zhuǎn)換

三種基本狀態(tài):

運(yùn)行態(tài):占用CPU,并在CPU上運(yùn)行

就緒態(tài):已經(jīng)具備了運(yùn)行條件,但由于沒(méi)有空閑的CPU,而暫時(shí)不能運(yùn)行

阻塞態(tài):因等待某一事件而暫時(shí)不能運(yùn)行

另外兩種狀態(tài):

創(chuàng)建態(tài):進(jìn)程正在被創(chuàng)建,操作系統(tǒng)為進(jìn)程分配資源,初始化PCB

進(jìn)程正在從系統(tǒng)中撤銷,操作系統(tǒng)會(huì)回收進(jìn)程擁有的資源,撤銷PCB

進(jìn)程間的通信

對(duì)于同步和互斥的理解:

區(qū)別:

互斥:是指三部在不同進(jìn)程之間的若干程序片斷,當(dāng)某個(gè)進(jìn)程運(yùn)行其中一個(gè)程序片段時(shí),其它進(jìn)程就不能運(yùn)行它們之中的任一程序片段,只能等到該進(jìn)程運(yùn)行完這個(gè)程序片段后才可以運(yùn)行。

同步:是指散步在不同進(jìn)程之間的若干程序片斷,它們的運(yùn)行必須嚴(yán)格按照規(guī)定的 某種先后次序來(lái)運(yùn)行,這種先后次序依賴于要完成的特定的任務(wù)。

聯(lián)系:

同步是一種更為復(fù)雜的互斥,而互斥是一種特殊的同步。也就是說(shuō)互斥是兩個(gè)線程之間不可以同時(shí)運(yùn)行,他們會(huì)相互排斥,必須等待一個(gè)線程運(yùn)行完畢,另一個(gè)才能運(yùn)行,而同步也是不能同時(shí)運(yùn)行,但他是必須要安照某種次序來(lái)運(yùn)行相應(yīng)的線程(也是一種互斥)。

進(jìn)程間為什么需要通信

在操作系統(tǒng)中,協(xié)作的進(jìn)程可能共享一些彼此都能共同讀寫(xiě)的一些有限資源。而這些資源是有限的,或者如一些共享內(nèi)存,進(jìn)程隨意讀寫(xiě)可能會(huì)造成數(shù)據(jù)的順序,內(nèi)容等發(fā)生錯(cuò)亂,進(jìn)程不能對(duì)其隨意的使用,讀寫(xiě)等。從而會(huì)發(fā)生競(jìng)爭(zhēng)。我們把對(duì)共享內(nèi)存進(jìn)行訪問(wèn)的程序片稱為臨界資源或臨界區(qū),對(duì)同一共享內(nèi)存,任何時(shí)候兩個(gè)進(jìn)程不能同時(shí)處于臨界區(qū).

進(jìn)程間通信的目的:

數(shù)據(jù)傳輸:一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程。

通知事件:一個(gè)進(jìn)程需要向另一個(gè)或一組進(jìn)程發(fā)送消息,通知它(它們)發(fā)生了某種事件(如進(jìn)程終止時(shí)要通知父進(jìn)程)。

資源共享:多個(gè)進(jìn)程之間共享同樣的資源。為了做到這一點(diǎn),需要內(nèi)核提供互斥和同步機(jī)制。

進(jìn)程控制:有些進(jìn)程希望完全控制另一個(gè)進(jìn)程的執(zhí)行(如 Debug 進(jìn)程),此時(shí)控制進(jìn)程希望能夠攔截另一個(gè)進(jìn)程的所有陷入和異常,并能夠及時(shí)知道它的狀態(tài)改變

進(jìn)程間通信的方式

1.管道通信:

9033da3a-edf9-11ed-90ce-dac502259ad0.png

管道只能采取半雙工通信,某一時(shí)間段內(nèi)只能實(shí)現(xiàn)單向的傳輸。如果要實(shí)現(xiàn)雙向同時(shí)通信,則需要設(shè)置兩個(gè)管道

各個(gè)進(jìn)程要互斥的訪問(wèn)管道

數(shù)據(jù)以字節(jié)流的形式寫(xiě)入管道,當(dāng)管道寫(xiě)滿時(shí),寫(xiě)進(jìn)程的write()系統(tǒng)調(diào)用將會(huì)被阻塞,等待讀進(jìn)程將數(shù)據(jù)取走。當(dāng)讀進(jìn)程將數(shù)據(jù)全部取走后,管道變空,此時(shí)讀進(jìn)程的read()系統(tǒng)調(diào)用將會(huì)被阻塞

注意:匿名管道只能用于有親緣關(guān)系間的進(jìn)程,而有名管道允許無(wú)親緣關(guān)系的進(jìn)程間通信

2.消息隊(duì)列MessageQueue:

消息隊(duì)列是由消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)。消息隊(duì)列克服了信號(hào)傳遞信息少、管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)。

3.信號(hào)

信號(hào)是進(jìn)程之間唯一的異步通信機(jī)制,信號(hào)的主要來(lái)源主要有硬件來(lái)源(入鍵盤操作ctrl + C) 和軟件來(lái)源(如kill命令),信號(hào)傳遞的信息比較少,主要用于通知進(jìn)程某個(gè)時(shí)間已經(jīng)發(fā)生。比如利用kill pid,可以讓系統(tǒng)優(yōu)雅停機(jī)。

4.信號(hào)量

信號(hào)量是一個(gè)計(jì)數(shù)器,可以用來(lái)控制多個(gè)進(jìn)程對(duì)資源的訪問(wèn),通常作為一種鎖機(jī)制,防止某個(gè)進(jìn)程正在訪問(wèn)共享資源,其他進(jìn)程也訪問(wèn)資源

5.共享內(nèi)存

共享內(nèi)存就是映射一段能被進(jìn)程之間共享的內(nèi)存,這段內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但是多個(gè)進(jìn)程都可以共享訪問(wèn),是最快的一種進(jìn)程間通信的方式(不需要從用戶態(tài)到內(nèi)核態(tài)的切換),它是針對(duì)其他進(jìn)程間通信方式運(yùn)行效率低而專門設(shè)計(jì)的。它往往與其他通信機(jī)制,如信號(hào)量,配合使用,來(lái)實(shí)現(xiàn)進(jìn)程間的同步和通信。

6.Socket

socket套接字,不僅僅可以用于本地進(jìn)程通信,還可以用于不通主機(jī)進(jìn)程之間的通信。

進(jìn)程的調(diào)度和處理機(jī)調(diào)度

進(jìn)程調(diào)度(低級(jí)調(diào)度),就是按照某種算法,從就緒隊(duì)列中選擇一個(gè)進(jìn)程為其分配處理機(jī)

進(jìn)程調(diào)度的時(shí)機(jī)

進(jìn)程主動(dòng)放棄處理機(jī):進(jìn)程正常終止,發(fā)生異常終止,進(jìn)程主動(dòng)請(qǐng)求阻塞(如等待I/O)等

進(jìn)程被動(dòng)放棄處理機(jī):分配的時(shí)間片用完,IO中斷,有更高的優(yōu)先級(jí)進(jìn)程進(jìn)入就緒隊(duì)列等

調(diào)度算法

設(shè)置多級(jí)就緒隊(duì)列,各級(jí)的隊(duì)列優(yōu)先級(jí)從高到低,時(shí)間片從小到大

新進(jìn)程到達(dá)時(shí)先進(jìn)入第一級(jí)隊(duì)列,按照先來(lái)先服務(wù)排隊(duì)等待被分配時(shí)間片,若用完時(shí)間片進(jìn)程還未結(jié)束,則進(jìn)程進(jìn)入下一級(jí)隊(duì)列的隊(duì)尾,如果此時(shí)已經(jīng)在最下級(jí)隊(duì)列,則從新放回最后一級(jí)隊(duì)列的隊(duì)尾

只有當(dāng)?shù)贙級(jí)的隊(duì)列為空時(shí),才會(huì)為K+1級(jí)的隊(duì)列隊(duì)頭的進(jìn)程分配時(shí)間片

先來(lái)先服務(wù)

最短作業(yè)優(yōu)先

最高響應(yīng)比優(yōu)先 響應(yīng)比:(等待時(shí)間+服務(wù)時(shí)間)/要求服務(wù)的時(shí)間

時(shí)間片輪轉(zhuǎn)調(diào)度

優(yōu)先級(jí)調(diào)度

多級(jí)反饋隊(duì)列

內(nèi)存管理

內(nèi)存管理的功能

內(nèi)存空間的分配與回收:由操作系統(tǒng)完成主存儲(chǔ)器空間的分配和管理,使程序員擺脫存儲(chǔ)分配的麻煩,提高編程效率。

地址轉(zhuǎn)換:在多道程序環(huán)境下, 程序中的邏輯地址與內(nèi)存中的物理地址不可能一致, 因此存儲(chǔ)管理必須提供地址變換功能,把邏輯地址轉(zhuǎn)換成相應(yīng)的物理地址。

內(nèi)存空間的擴(kuò)充:利用虛擬存儲(chǔ)技術(shù)或自動(dòng)覆蓋技術(shù),從邏輯上擴(kuò)充內(nèi)存 。

存儲(chǔ)保護(hù):保證各道作業(yè)在各自的存儲(chǔ)空間內(nèi)運(yùn)行,互不干擾。

內(nèi)存分配方式

連續(xù)分配管理方式

連續(xù)分配方式,是指為一個(gè)用戶程序分配一個(gè)連續(xù)的內(nèi)存空間,比如說(shuō)某用戶需要1GB的內(nèi)存空間,它就在內(nèi)存空間中分配一塊連續(xù)的 1GB的空間給用戶。

單一連續(xù)分配:內(nèi)存在此方式下分為系統(tǒng)區(qū)和用戶區(qū),系統(tǒng)區(qū)僅提供給操作系統(tǒng)使用,通常在低地址部分;用戶區(qū)是為用戶提供的、除系統(tǒng)區(qū)之外的內(nèi)存空間。這種方式無(wú)需進(jìn)行內(nèi)存保護(hù)。

固定分區(qū)分配:固定分區(qū)分配是最簡(jiǎn)單的一種多道程序存儲(chǔ)管理方式,它將用戶內(nèi)存空間劃分為若干個(gè)固定大小的區(qū)域,每個(gè)分區(qū)只裝入一道作業(yè)。當(dāng)有空閑分區(qū)時(shí),便可以再?gòu)耐獯娴暮髠渥鳂I(yè)隊(duì)列中, 選擇適當(dāng)大小的作業(yè)裝入該分區(qū),如此循環(huán)。

動(dòng)態(tài)分區(qū)分配:動(dòng)態(tài)分區(qū)分配又稱為可變分區(qū)分配,是一種動(dòng)態(tài)劃分內(nèi)存的分區(qū)方法。這種分區(qū)方法不預(yù)先將內(nèi)存劃分,而是在進(jìn)程裝入內(nèi)存時(shí),根據(jù)進(jìn)程的大小動(dòng)態(tài)地建立分區(qū) ,并使分區(qū)的大小正好適合進(jìn)程的需要。因此系統(tǒng)中分區(qū)的大小和數(shù)目是可變的。

分配策略算法

首次適應(yīng) (First Fit) 算法:空閑分區(qū)以地址遞增的次序鏈接。分配內(nèi)存時(shí)順序查找,找到大小能滿足要求的第一個(gè)空閑分區(qū)。

最佳適應(yīng) ( Best Fit )算法:空閑分區(qū)按容量遞增形成分區(qū)鏈,找到第一個(gè)能滿足要求的空閑分區(qū)。

最壞適應(yīng) ( Worst Fit )算法:又稱最大適應(yīng) ( Largest Fit )算法,空閑分區(qū)以容量遞減的次序鏈接。找到第一個(gè)能滿足要求的空閑分區(qū),也就是挑選出最大的分區(qū)。

鄰近適應(yīng) ( Next Fit )算法:又稱循環(huán)首次適應(yīng)算法,由首次適應(yīng)算法演變而成。不同之處是分配內(nèi)存時(shí)從上次查找結(jié)束的位置開(kāi)始繼續(xù)查找。

非連續(xù)分配管理方式

非連續(xù)分配允許一個(gè)程序分散地裝入到不相鄰的內(nèi)存分區(qū)中

分頁(yè)存儲(chǔ)管理方式

將內(nèi)存空間分為一個(gè)個(gè)大小相等的分區(qū)(比如:每個(gè)分區(qū)4KB),每個(gè)分區(qū)就是一個(gè)頁(yè)框(頁(yè)幀,內(nèi)存塊,物理塊),每個(gè)頁(yè)框都有一個(gè)編號(hào),即頁(yè)框號(hào)(頁(yè)幀號(hào),內(nèi)存塊號(hào),物理塊號(hào)),頁(yè)框號(hào)從0開(kāi)始

將用戶進(jìn)程的地址空間也分為與頁(yè)框大小相等的一個(gè)個(gè)區(qū)域,稱為 "頁(yè)"或 “頁(yè)面”,每個(gè)頁(yè)面也有一個(gè)編號(hào),即頁(yè)號(hào),頁(yè)號(hào)也是從0開(kāi)始(注意:進(jìn)程最后一個(gè)頁(yè)面可能沒(méi)有頁(yè)框那么大,因此頁(yè)框不能太大,否則會(huì)產(chǎn)生過(guò)大的內(nèi)部碎片)

操作系統(tǒng)以頁(yè)框?yàn)閱挝粸楦鱾€(gè)進(jìn)程分配內(nèi)存空間。進(jìn)程的每個(gè)頁(yè)面分別放入一個(gè)頁(yè)框中,則進(jìn)程的頁(yè)面和內(nèi)存的頁(yè)框產(chǎn)生了一一對(duì)應(yīng)的關(guān)系

904bbf42-edf9-11ed-90ce-dac502259ad0.png

分段存儲(chǔ)管理方式

進(jìn)程的地址空間:按照程序自身的邏輯關(guān)系劃分為若干個(gè)段,每個(gè)段都有一個(gè)段名(在低級(jí)語(yǔ)言中,程序員使用段名來(lái)編程),每段從0開(kāi)始編址

內(nèi)存分配規(guī)則:以段位單位進(jìn)行分配,每個(gè)段在內(nèi)存中占據(jù)連續(xù)空間,但是各個(gè)段之間可以不相鄰

優(yōu)點(diǎn):由于是按邏輯功能劃分,用戶編程更加方便,程序的可讀性更高

9071306a-edf9-11ed-90ce-dac502259ad0.png

分頁(yè)和分段存儲(chǔ)管理的區(qū)別

頁(yè)是信息的物理單位,分頁(yè)是為實(shí)現(xiàn)離散分配方式,提高內(nèi)存利用率。分頁(yè)僅僅是由于系統(tǒng)管理的需要而并不是用戶的需要。而段則是信息的邏輯單位,是為了更好地滿足用戶的需要。

分段比分頁(yè)更容易實(shí)現(xiàn)信息的保護(hù)與共享,分段可以在某個(gè)段編寫(xiě)邏輯,實(shí)現(xiàn)對(duì)另外一個(gè)段的保護(hù),而分頁(yè)不行

頁(yè)的大小固定且由系統(tǒng)決定,而段的長(zhǎng)度取決于用戶所編寫(xiě)的程序。

頁(yè)面置換算法(追求最少的缺頁(yè)率)

最佳置換算法OPT(無(wú)法實(shí)現(xiàn),作為一個(gè)標(biāo)準(zhǔn)):每次選擇淘汰的頁(yè)面將是以后永不使用,或者在最長(zhǎng)的時(shí)間內(nèi)不被使用,由于無(wú)法預(yù)知將會(huì)訪問(wèn)哪些頁(yè)面,所以這種算法無(wú)法實(shí)現(xiàn),只能作為一個(gè)標(biāo)準(zhǔn)

例如:需要訪問(wèn)7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1,則訪問(wèn)順序:

908b3a8c-edf9-11ed-90ce-dac502259ad0.png

先進(jìn)先出置換算法FIFO:每次選擇淘汰的頁(yè)面是最早進(jìn)入內(nèi)存的頁(yè)面

例如:需要訪問(wèn) 3 2 1 0 3 2 4 3 2 1 0 4 ,則訪問(wèn)順序

90abbfbe-edf9-11ed-90ce-dac502259ad0.png

最近最久未使用置換算法(LRU):每次淘汰的頁(yè)面是最近最久未使用的頁(yè)面

例如:需要訪問(wèn) 1 8 1 7 8 2 7 2 1 8 3 8 2 1 3 1 7 1 3 7 則訪問(wèn)順序

90bfa81c-edf9-11ed-90ce-dac502259ad0.png

最近未用置換算法NRU(Clock算法):為每個(gè)頁(yè)面設(shè)置一個(gè)訪問(wèn)位,再將內(nèi)存中的頁(yè)面都通過(guò)鏈接指針鏈接成一個(gè)循環(huán)隊(duì)列。當(dāng)某頁(yè)被訪問(wèn)時(shí),其訪問(wèn)位置為1.當(dāng)需要淘汰某個(gè)頁(yè)面時(shí),只需要檢查頁(yè)的訪問(wèn)位。如果是0,就將該頁(yè)面換出,如果是1,則將他置為0,暫不換出。繼續(xù)檢查下一個(gè)頁(yè)面,如果第一輪掃描之后全是1,則掃描完成,這些都置為0.再進(jìn)行第二輪掃描,因此簡(jiǎn)單的Clock算法選擇一個(gè)頁(yè)面淘汰最多兩輪

90e0fd00-edf9-11ed-90ce-dac502259ad0.png

文件管理

文件的分配方式(物理結(jié)構(gòu))

文件塊和磁盤塊:類似于內(nèi)存的分頁(yè)

磁盤塊:磁盤中的存儲(chǔ)單元會(huì)被分為一個(gè)個(gè)"塊/磁盤塊/物理塊",在很多的操作系統(tǒng)中,磁盤塊的大小與內(nèi)存塊,頁(yè)面的大小相同

90fc3318-edf9-11ed-90ce-dac502259ad0.png

文件塊:在外存管理中,為了方便對(duì)文件數(shù)據(jù)的管理,文件的邏輯地址空間被分為一個(gè)一個(gè)的文件塊,文件的邏輯地址可以表示為(邏輯塊號(hào),塊內(nèi)地址)的形式。用戶通過(guò)邏輯地址來(lái)操作自己的文件,操作

9118cfd2-edf9-11ed-90ce-dac502259ad0.png

文件的分配方式

連續(xù)分配:要求每個(gè)文件在磁盤上占有一組連續(xù)的塊

優(yōu)點(diǎn):支持順序訪問(wèn)和直接訪問(wèn)(類似數(shù)組),連續(xù)分配的文件在順序訪問(wèn)時(shí)速度最快

缺點(diǎn):不方便文件的擴(kuò)展,存儲(chǔ)空間利用率低,會(huì)產(chǎn)生磁盤碎片

9135c29a-edf9-11ed-90ce-dac502259ad0.png

鏈接分配:采取離散分配的方式,為文件分配離散的磁盤塊。(類似鏈表數(shù)據(jù)結(jié)構(gòu))

隱式鏈接:目錄中記錄的文件的起始?jí)K號(hào)和結(jié)束塊號(hào)。除了文件最后一個(gè)磁盤塊之外,每個(gè)磁盤塊中都會(huì)保存指向下一個(gè)盤塊的指針,這些指針對(duì)用戶是透明的,每次訪問(wèn)某個(gè)磁盤塊都需從頭訪問(wèn)

優(yōu)點(diǎn):方便文件的擴(kuò)展,不會(huì)產(chǎn)生碎片問(wèn)題,外存的利用率高

缺點(diǎn):只支持順序訪問(wèn),不支持隨機(jī)訪問(wèn),查找時(shí)效率低

917826ee-edf9-11ed-90ce-dac502259ad0.png

*顯示鏈接:把用于鏈接文件各物理塊的指針顯示的存放在一張表中,即文件分配表。文件目錄只需要記錄起始?jí)K號(hào)。一個(gè)磁盤只需要設(shè)置一張分配表,開(kāi)機(jī)時(shí),將分配表讀入內(nèi)存,并常駐內(nèi)存 *優(yōu)點(diǎn):支持順序訪問(wèn),也支持隨機(jī)訪問(wèn),方便文件的擴(kuò)展,不會(huì)產(chǎn)生碎片問(wèn)題,地址轉(zhuǎn)換不需要訪問(wèn)磁盤,因此文件的訪問(wèn)效率更高 *缺點(diǎn):文件分配表需要占據(jù)一定的存儲(chǔ)空間

91c36140-edf9-11ed-90ce-dac502259ad0.png

索引分配:索引分配允許文件離散的分配在各個(gè)磁盤塊中,系統(tǒng)會(huì)為每個(gè)文件建立一張索引表,索引表中記錄了文件的各個(gè)邏輯塊對(duì)應(yīng)的物理塊(索引表的功能類似于內(nèi)存管理的頁(yè)表–建立邏輯頁(yè)面到物理頁(yè)面之間的映射關(guān)系)。索引表存放的磁盤塊稱為索引塊,文件數(shù)據(jù)存放的磁盤塊稱為數(shù)據(jù)塊

文件存儲(chǔ)空間管理

存儲(chǔ)空間的劃分和初始化

存儲(chǔ)空間的劃分:將物理磁盤劃分為一個(gè)個(gè)文件卷(邏輯卷,邏輯盤,如Windows系統(tǒng)下的C,D,E盤等)

有的系統(tǒng)支持超大型文件,可由多個(gè)物理磁盤組成一個(gè)文件卷

存儲(chǔ)空間的初始化:將各個(gè)文件卷劃分為目錄區(qū),文件區(qū)

目錄區(qū):目錄區(qū)主要存放文件的目錄信息(FCB),用于磁盤存儲(chǔ)空間的管理的信息

文件區(qū):文件區(qū)用于存放文件數(shù)據(jù)

91e170cc-edf9-11ed-90ce-dac502259ad0.png

存儲(chǔ)空間的管理方法

空閑表法:與內(nèi)存管理中的動(dòng)態(tài)分區(qū)分配很類似,為一個(gè)文件分配連續(xù)的存儲(chǔ)空間。同樣可以采用首次適應(yīng),最佳適應(yīng),最壞適應(yīng)等算法來(lái)決定要為文件分配哪個(gè)區(qū)間

92076d72-edf9-11ed-90ce-dac502259ad0.png

空閑鏈表法:分為—>

空閑盤塊鏈:以盤塊為單位組成一條空閑鏈

空閑盤區(qū)鏈:以盤區(qū)為單位組成一條空閑鏈

9227b4ec-edf9-11ed-90ce-dac502259ad0.png

位示圖法:每個(gè)二進(jìn)制位代表一個(gè)盤塊。例如可以用"0"來(lái)代表盤塊空閑 ,"1"代表盤塊已經(jīng)分配

9250861a-edf9-11ed-90ce-dac502259ad0.png

成組鏈接法:UNIX采用的策略,適合大型的文件系統(tǒng)。

IO管理

磁盤調(diào)度算法

一次磁盤讀/寫(xiě)操作需要的時(shí)間:尋找時(shí)間+延遲時(shí)間+傳輸時(shí)間

尋找時(shí)間:在讀/寫(xiě)前,將磁頭移動(dòng)到指定磁道所畫(huà)的時(shí)間(啟動(dòng)磁頭臂和移動(dòng)磁頭臂)

延遲時(shí)間:通過(guò)旋轉(zhuǎn)磁盤,使磁頭定位到目標(biāo)扇區(qū)所需要的時(shí)間

傳輸時(shí)間:從磁盤中讀出或?qū)懭霐?shù)據(jù)所經(jīng)歷的時(shí)間

磁盤調(diào)度算法:

先來(lái)先服務(wù)算法(FIFO):根據(jù)進(jìn)程請(qǐng)求訪問(wèn)磁盤的先后順序進(jìn)行調(diào)度

最短尋找時(shí)間優(yōu)先算法(SSTF):優(yōu)先處理的磁道是與當(dāng)前磁道最近的磁道,可以保證每次的尋道時(shí)間最短,但是不能保證總的尋道時(shí)間最短(貪心算法)

掃描算法(SCAN,電梯調(diào)度算法):SSTF算法可能會(huì)產(chǎn)生饑餓,磁頭有可能在一個(gè)小區(qū)域內(nèi)來(lái)回移動(dòng),因此掃描算法規(guī)定,只有磁頭移動(dòng)到最外側(cè)磁道的時(shí)候才能往內(nèi)移動(dòng),移動(dòng)到最內(nèi)側(cè)磁道才能往外移動(dòng),在這個(gè)基礎(chǔ)上使用SSTF算法

循環(huán)掃描算法(C-SCAN):SCAN算法對(duì)于各個(gè)位置磁道的響應(yīng)頻率不平均,C-SCAN算法在SCAN算法的基礎(chǔ)上規(guī)定:只有磁頭朝著某個(gè)特定的方向移動(dòng)時(shí)才能處理磁道的訪問(wèn)請(qǐng)求,而返回時(shí)直接快速移動(dòng)到起始端而不處理任何請(qǐng)求

死鎖

對(duì)死鎖的理解

如果一組進(jìn)程中的每個(gè)進(jìn)程都在等待一個(gè)事件,而這個(gè)事件是有這組中的某一個(gè)進(jìn)程觸發(fā),這種情況則會(huì)導(dǎo)致死鎖

資源死鎖的條件:發(fā)生死鎖時(shí),以下四個(gè)條件必須全部具備

互斥條件:進(jìn)程要求對(duì)所分配的資源進(jìn)行排它性控制,即在一段時(shí)間內(nèi)某資源僅為一進(jìn)程所占用。

保持和等待條件:當(dāng)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放。

不可搶占條件:進(jìn)程已獲得的資源在未使用完之前,不能剝奪,只能在使用完時(shí)由自己釋放。

循環(huán)等待條件:在發(fā)生死鎖時(shí),必然存在一個(gè)進(jìn)程–資源的環(huán)形鏈。

死鎖的避免->銀行家算法

當(dāng)一個(gè)進(jìn)程申請(qǐng)使用資源的時(shí)候,銀行家算法通過(guò)先 試探 分配給該進(jìn)程資源,然后通過(guò)安全性算法判斷分配后的系統(tǒng)是否處于安全狀態(tài),若不安全則試探分配作廢,讓該進(jìn)程繼續(xù)等待。

安全序列的判斷:

92625142-edf9-11ed-90ce-dac502259ad0.png

死鎖的解除

資源剝奪法:掛起(暫時(shí)放到外存上)某些死鎖的進(jìn)程,并搶占他的資源,將這些資源分配給其他的死鎖進(jìn)程。但是應(yīng)防止被掛起的進(jìn)程長(zhǎng)時(shí)間得不到資源而饑餓

撤銷進(jìn)程法:強(qiáng)制撤銷部分,甚至全部的死鎖進(jìn)程,并剝奪這些進(jìn)程的資源。雖然實(shí)現(xiàn)簡(jiǎn)單,但是代價(jià)可能較大

進(jìn)程回退法:讓一個(gè)或多個(gè)死鎖進(jìn)程回退到足以避免死鎖的地步

簡(jiǎn)單來(lái)說(shuō),死鎖的破壞就是對(duì)死鎖產(chǎn)生的四個(gè)條件進(jìn)行破壞,讓其中任意一個(gè)不滿足即可。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7147

    瀏覽量

    125572
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    508

    瀏覽量

    20208
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    207

    瀏覽量

    14278

原文標(biāo)題:這一次,徹底拿下操作系統(tǒng)?。。?/p>

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    進(jìn)程線程的概念及其區(qū)別

    今天浩道跟大家分享一篇關(guān)于進(jìn)程線程之間關(guān)聯(lián)的硬核干貨,看看大神如何通過(guò)通俗易懂的圖文,讓大家更加深刻理解進(jìn)程線程區(qū)別!
    的頭像 發(fā)表于 11-21 10:50 ?1283次閱讀
    <b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>的概念及其<b class='flag-5'>區(qū)別</b>

    #硬聲創(chuàng)作季 程序員知識(shí):【進(jìn)程管理】進(jìn)程線程區(qū)別

    計(jì)算機(jī)原理cpu/soc
    Mr_haohao
    發(fā)布于 :2022年09月16日 19:19:55

    Java語(yǔ)言核心基礎(chǔ)語(yǔ)法325-進(jìn)程線程區(qū)別

    JAVA
    電子學(xué)習(xí)
    發(fā)布于 :2023年01月16日 16:00:48

    進(jìn)程線程區(qū)別

    線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.與進(jìn)程區(qū)別:(1)地址空間:進(jìn)程內(nèi)的一個(gè)
    發(fā)表于 12-12 09:28

    進(jìn)程線程區(qū)別

    `1、進(jìn)程線程區(qū)別和聯(lián)系進(jìn)程(process)和線程(thread)是操作系統(tǒng)的基本概念,但是它們比較抽象,不容易掌握。計(jì)算機(jī)的核心是C
    發(fā)表于 11-30 14:06

    進(jìn)程線程區(qū)別和聯(lián)系介紹

    發(fā)生了變化:它只是資源分配的單位,而不再是調(diào)度運(yùn)行的單位 。在微內(nèi)核系統(tǒng)中,真正調(diào)度運(yùn)行的基本單位是線程。因此,實(shí)現(xiàn)并發(fā)功能的單位是線程。 線程概念   線程
    發(fā)表于 07-04 00:18

    Linux進(jìn)程線程區(qū)別是什么?

    Linux進(jìn)程線程區(qū)別是什么為什么要使用線程?線程操作的函數(shù)
    發(fā)表于 03-11 06:13

    進(jìn)程線程區(qū)別在哪?

    1、進(jìn)程線程區(qū)別:1. 線程是程序執(zhí)行的最小單位,而進(jìn)程是操作系統(tǒng)分配資源的最小單位;2. 一個(gè)進(jìn)程
    發(fā)表于 07-07 06:53

    進(jìn)程線程區(qū)別是什么

    有了提前批的失敗經(jīng)驗(yàn),接下來(lái)不斷的總結(jié)鞏固和修正錯(cuò)誤,這次發(fā)揮要比上次要好很多。一面(電話面)自我介紹進(jìn)程線程區(qū)別線程同步和通信鎖機(jī)制以及死鎖條件和預(yù)防TCP/IP協(xié)議的一些基礎(chǔ)知識(shí)C++的構(gòu)造
    發(fā)表于 12-23 07:28

    進(jìn)程線程區(qū)別和聯(lián)系

    進(jìn)程(process)和線程(thread)是操作系統(tǒng)的基本概念,但是它們比較抽象,不容易掌握。 最近,我讀到一篇材料,發(fā)現(xiàn)有一個(gè)很好的類比,可以把它們解釋地清晰易懂。 1、計(jì)算機(jī)的核心是 CPU
    的頭像 發(fā)表于 12-05 18:22 ?1227次閱讀

    進(jìn)程切換與線程切換有啥區(qū)別

    注意這個(gè)題目問(wèn)的是進(jìn)程**切換**與線程**切換**的區(qū)別,不是進(jìn)程線程區(qū)別。當(dāng)然這里的**
    的頭像 發(fā)表于 02-24 14:16 ?788次閱讀

    程序中進(jìn)程線程區(qū)別

    什么是進(jìn)程 1、進(jìn)程線程區(qū)別 進(jìn)程是指正在運(yùn)行的程序,它擁有獨(dú)立的內(nèi)存空間和系統(tǒng)資源,不同進(jìn)程
    的頭像 發(fā)表于 06-22 11:39 ?1002次閱讀
    程序中<b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>的<b class='flag-5'>區(qū)別</b>

    進(jìn)程線程區(qū)別以及優(yōu)缺點(diǎn)

    進(jìn)程線程 1、什么是進(jìn)程、線程,有什么區(qū)別? 進(jìn)程是資源(CPU、內(nèi)存等)分配的基本單位,
    的頭像 發(fā)表于 07-21 11:02 ?1805次閱讀

    嵌入式進(jìn)程線程區(qū)別

    需要進(jìn)行大量計(jì)算的優(yōu)先使用線程 所謂大量計(jì)算,當(dāng)然就是要耗費(fèi)很多CPU,切換頻繁了,這種情況下線程是最合適的。這種原則最常見(jiàn)的是圖像處理、算法處理。
    發(fā)表于 09-04 10:05 ?743次閱讀
    嵌入式<b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>的<b class='flag-5'>區(qū)別</b>

    進(jìn)程線程區(qū)別

    1.什么是進(jìn)程?為什么要有進(jìn)程進(jìn)程有一個(gè)相當(dāng)精簡(jiǎn)的解釋:進(jìn)程是對(duì)操作系統(tǒng)上正在運(yùn)行程序的一個(gè)抽象。 這個(gè)概念確實(shí)挺抽象,仔細(xì)想想?yún)s也挺精準(zhǔn)。 我們平常使用計(jì)算機(jī),都會(huì)在同一時(shí)間做許
    的頭像 發(fā)表于 11-11 16:46 ?1123次閱讀
    <b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>的<b class='flag-5'>區(qū)別</b>