![《現(xiàn)代操作系統(tǒng)》學(xué)習(xí)筆記1_第1頁](http://file4.renrendoc.com/view/726fc3a444df50cc00d52eaacb789db2/726fc3a444df50cc00d52eaacb789db21.gif)
![《現(xiàn)代操作系統(tǒng)》學(xué)習(xí)筆記1_第2頁](http://file4.renrendoc.com/view/726fc3a444df50cc00d52eaacb789db2/726fc3a444df50cc00d52eaacb789db22.gif)
![《現(xiàn)代操作系統(tǒng)》學(xué)習(xí)筆記1_第3頁](http://file4.renrendoc.com/view/726fc3a444df50cc00d52eaacb789db2/726fc3a444df50cc00d52eaacb789db23.gif)
![《現(xiàn)代操作系統(tǒng)》學(xué)習(xí)筆記1_第4頁](http://file4.renrendoc.com/view/726fc3a444df50cc00d52eaacb789db2/726fc3a444df50cc00d52eaacb789db24.gif)
![《現(xiàn)代操作系統(tǒng)》學(xué)習(xí)筆記1_第5頁](http://file4.renrendoc.com/view/726fc3a444df50cc00d52eaacb789db2/726fc3a444df50cc00d52eaacb789db25.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《現(xiàn)代操作系統(tǒng)》看了兩個多月才看了前面200頁,很多都似懂非懂,權(quán)且將自己認為重要的概念抄下來,以備后續(xù)查看。0.概述(1)操作系統(tǒng)的概念對操作系統(tǒng)的定義,有兩種說法,一種聲稱操作系統(tǒng)是計算機的擴展器,一種聲稱操作系統(tǒng)是計算機資源集的抽象。所謂操作系統(tǒng)是計算機的擴展,是將操作系統(tǒng)當(dāng)做計算機對外的接口。對外包括對應(yīng)用程序,對程序員,對用戶。操作系統(tǒng)對計算機進行“化妝”,將計算機“丑陋晦澀”的硬件對外隱藏,而向外呈現(xiàn)界面友好清晰,更易理解的操作系統(tǒng)。如下圖所示:美麗接口圖操作系統(tǒng)將丑陋的硬件轉(zhuǎn)變?yōu)槊利惖某橄髴?yīng)用程后操作系統(tǒng)美麗接口圖操作系統(tǒng)將丑陋的硬件轉(zhuǎn)變?yōu)槊利惖某橄髴?yīng)用程后操作系統(tǒng)f—丑陋接口所謂操作系統(tǒng)是計算機資源集的抽象,是指操作系統(tǒng)將計算機資源(處理器,存儲器以及設(shè)備等)進行抽象以及管理。將處理抽象為進程,將內(nèi)存抽象為地址空間,磁盤抽象成文件。而這一切抽象都是為了實現(xiàn)多道程序設(shè)計,即可以在一個計算機上同時運行多個互不干擾程序。(2)操作系統(tǒng)的作用操作系統(tǒng)的主要任務(wù)是在相互競爭的程序之間有序地控制對處理器、存儲器以及其他接口設(shè)備的分配。其主要任務(wù)包括管理資源分配,評估使用代價和調(diào)節(jié)資源分配的沖突,記錄哪個程序在用什么資源,用多少,用多久。資源管理包括用以下兩種不同方式實現(xiàn)多路復(fù)用:在時間上復(fù)用(進程調(diào)度:時間片輪轉(zhuǎn))和在空間上復(fù)用(內(nèi)存管理:虛擬內(nèi)存,頁面置換;磁盤管理:文件系統(tǒng))。在時間上分配資源需要考慮該進程在上面運行多久,下一次切換到哪一個進程。在空間上分配存儲空間需要考慮給每個進程分配多少內(nèi)存,如果內(nèi)存不足的時候,將哪個頁面置換到磁盤以騰出空間。操作系統(tǒng)的主要功能:為用戶程序提供抽象和管理計算機資源。用戶程序和操作系統(tǒng)之間的交互處理是前者。用戶程序和操作系統(tǒng)之間的交互主要是處理抽象。對于管理計算機資源系統(tǒng)(進程調(diào)度,內(nèi)存置換等)一般自動完成。所以主要是用戶程序與操作系統(tǒng)的交互。用戶程序通過操作系統(tǒng)提供的接口來訪問底層的系統(tǒng)。操作系統(tǒng)提供一種特殊的過程調(diào)用——系統(tǒng)調(diào)用,該種過程調(diào)用可以由用戶態(tài)陷入內(nèi)核態(tài)對底層
進行操作。比如可以創(chuàng)建和退出進程,打開和讀寫文件等。目前主要由以下幾種系統(tǒng)調(diào)用函數(shù)——進程管理,文件管理,目錄和文件系統(tǒng)管理以及其他。常用的系統(tǒng)調(diào)用可以參見下表:進程管理調(diào)用說明pid-lork{)剛自打父避和相同的F進程pid=wajtpidfpid,Astalfoe.options)詈持一個子進程終止s注execvefiametargv3environp)-皿_替攙二個進程的核心映像eXt(BtHtUS)中止牲程執(zhí)行并返回狀態(tài)文件管理閭用說職M=cpen(iiie,howr..j打開一個支伴生讀.占或兩者s=ciose(fd)X闈一個打開的文件-n=readHchbutfer.nbytes)杷數(shù)據(jù)從一個文件餒料褪沖區(qū)中n=writeffid,buHer,nbyt&Rj肥數(shù)憎從援沖區(qū)七到一個文件中pOSiUon=l$ank(fdboHset,whence)移動文件指在1s=statfnameh&B5)期博文件的狀態(tài)信由目錄和文件系統(tǒng)管理調(diào)用s-Ekdir(nargmode)啰建新目錄3-rmdir(name)刪去一個空目錄sIlnkfnanei,H£<me2)"-r_創(chuàng)建一個新目錄項加門r,并指向股①匕]s=unlink(nam4]照去一個LI錄項名二mounKspecial,nam9,flag)安裝一個文件系統(tǒng)s=umount(speciai)卸裁?個文件系統(tǒng)雜頊調(diào)用■明&=chdir(dlrname)散變工作口錄8mchmod(name,mode)修改一個文件的保護位s=kilKpidjsignal)發(fā)送信號給一個證程-11seconds^timefigeconds)自197。年1月1H起的流逝肘間(3)為什么要了解操作系統(tǒng)之前跟同事說我沒有修過操作系統(tǒng),想補補操作系統(tǒng),同事說操作系統(tǒng)工作中很少用,我當(dāng)時想學(xué)習(xí)操作系統(tǒng)也跟我學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)后一個感覺——很難很有趣但是工作中用不著。而老大卻一再跟我說,讓我打好基礎(chǔ),好好補補操作系統(tǒng),計算機網(wǎng)絡(luò)等基礎(chǔ)課程。而我自己看了操作系統(tǒng)之后,突然恍然大悟,,原來學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)就是為了學(xué)習(xí)操作系統(tǒng)呀呀呀嘻嘻……瞎扯完,言歸正傳。我當(dāng)時學(xué)習(xí)操作系統(tǒng)源于工作中遇到一個父子進程共享文件描述符的坑。這個坑坑得我好慘啊,因為其具有偶發(fā)性,而且完全沒有日志跡象查詢,只知道在入口處數(shù)據(jù)就莫名其妙丟了。之前同事也遇到過這種情況,只是定位懷疑有一段代碼存在問題,總是覺得那段子進程的代碼有問題,后來因為這個復(fù)現(xiàn)少,所以也不了了之。后來因為系統(tǒng)用得越來越多,這個問題復(fù)現(xiàn)概率大大提高,于是開始打日志,每一個操作都打日志,最后在老大的英明神武下,發(fā)現(xiàn)了原來是在子進程之前沒有關(guān)閉父進程使用的隊列連接。如果沒有老大,估計打死我也不知道如何解決這個問題。因為我完全不知道這個基礎(chǔ)知識。雖然后來老大跟我說了父子進程共享文件描述符的知識,也說了數(shù)據(jù)可能被子進程的隊列連接的讀走了。但是我還是似懂非懂,于是乎,我決定好好補補操作系統(tǒng)。除了因為這個坑,還因為每次老大跟我說內(nèi)存,,進程,線程我都沒概念,所以我決定腦補下,。吐槽完總結(jié)下,了解操作系統(tǒng)就是為了理解計算機是如何工作的,以及程序如何運行的,從而優(yōu)化程序更好地實現(xiàn)需求,達到預(yù)期目的。()程序在運行的時候需要哪些資源,會受到哪些資源(如磁盤,內(nèi)存,等)限制。比如日常程序每天導(dǎo)庫的時候需要例行將歷史記錄清除,以防磁盤空間不足。比如中的緩存過期數(shù)據(jù)也要定時清除,以防止內(nèi)存不足而導(dǎo)致其他操作失敗。在設(shè)置的的時候,也要考慮隨著業(yè)務(wù)增長,對內(nèi)存空間要求會越來越大。比如寫程序的時候也要考慮程序可能要用到的最大內(nèi)存,如果使用內(nèi)存超過系統(tǒng)默認分配內(nèi)存,將導(dǎo)致程序出錯退出。比如使用命令或聯(lián)合數(shù)組對大文件排序的時候可能導(dǎo)致內(nèi)存使用率100。%比如使用子進程的,要考慮的限制,不能很多子進程,最好使用設(shè)置空出一兩個核以使機器負載不至于過高,還有子進程要記得,否則資源不釋放,會導(dǎo)致飆到0比如訪問同一個資源(或者)的日寸候要考慮,否則會使得資源使用率過高,從而使得有些資源操作失敗。影響業(yè)務(wù)主要是用戶的訪問頻率,除此之外在異步處理(用隊列存儲數(shù)據(jù),用處理數(shù)據(jù))中,數(shù),隊列數(shù)都會影響。()分析系統(tǒng)的資源評價,從而使得系統(tǒng)優(yōu)化。考慮程序運行慢是受哪一部分的限制:,內(nèi)存,磁盤等。耗費這些資源過多的是磁盤還是網(wǎng)絡(luò)。比如考慮優(yōu)化網(wǎng)絡(luò),使用將數(shù)據(jù)至|「隊列」,比一個個要快很多,使用比要快,比如的過高,會引起占用太高,從而引起程序太慢。()為防止各個程序同時訪問一個資源而引起沖突,會引進互斥的概念。比如多個任務(wù)并行處理,如何分配唯一任務(wù)?;蛟S有人說采用時間戳,可是當(dāng)系統(tǒng)并行處理多個任務(wù)的時候,他們處理時差遠少于1秒,1秒的間隔已經(jīng)無法區(qū)分他們的時序。有人可能說采用一個共享變量,每次自增來分配k但是如何保證并行處理的時候這個共享唯一,不會出現(xiàn)沖突,這就要理解互斥。在工作之前沒有任何什么鎖住表,鎖住,互斥的概念,這些對我來說都是天書。所以當(dāng)工作遇到為了實現(xiàn)互斥,采用單線程。并且在執(zhí)行一個操作的時候會鎖住d于是問題來了當(dāng)刪除大數(shù)據(jù)如長度的列表或者大的,長的的時候,會被鎖住很久(高達十幾秒),此時對該的其他操作就無法執(zhí)行。在工作中也遇到這個坑,很多淚就不飆了.除.了.這個坑,當(dāng)多個程序同時訪問同一個的時候,發(fā)生了沖突,即競爭條件,從而使得操作失敗,并且使得下面的程序無法執(zhí)行。這個時候可以考慮模擬假脫機打印機處理打印機資源沖突的方式。將對操作請求入隊列,單獨使用一個來消耗隊列中操作請求一一處理之。采用隊列的方式,可以使得各的操作請求具有一定的時序。()采用多進程,以及父子進程共享文件描述符,多線程共享地址空間都是為了充分利用系統(tǒng)資源,并行處理以更快速度解決問題。并行就必須考慮各個進程之間是否保有獨立性,各個同時處理的數(shù)據(jù)是否具有依賴性,若有依賴性就牽涉時序問題,資源共享也往往引起沖突??赡苣愕某绦蚩雌饋砗芊线壿?,但是在處理大文件和大量數(shù)據(jù)的時候,還符合邏輯嗎?在多個相關(guān)任務(wù)并行處理的時候,還符合邏輯嗎?在機器出現(xiàn)資源不足的時候,還符合邏輯嗎?在多個程序競爭資源的時候,還符合邏輯嗎?在需求變更的時候,還符合邏輯嗎?要解答這些問題,就是你要學(xué)習(xí)操作系統(tǒng)的原因。要理解操作系統(tǒng),就必須要理解每一個資源抽象的概念和實現(xiàn),以及如何使用這些抽象來解決問題。所以下面會從的抽象一進程(進程調(diào)度),內(nèi)存的抽象——地址空間(內(nèi)存管理),磁盤的抽象——文件(文件系統(tǒng)),互斥和鎖這幾個方面來記錄學(xué)習(xí)操作系統(tǒng)的一些筆記和感受。cpu-->進程(1)進程的概念就像人類對這個世界的認識一樣,首先是感性認識,之后才上升到理性認識。所以我們首先通過《現(xiàn)代操作系統(tǒng)》上對進程的一段比喻來理解進程。想象一位有一手好廚藝的計算機科學(xué)家正在為他的女兒烘制生日蛋糕。他有做生日蛋糕的食譜,廚房里有所需要的原料:面粉、雞蛋、糖和香草汁等。在這個過程中:做蛋糕的食就是程序。計算機科學(xué)家就是處理器。做蛋糕的各種原料就是輸入數(shù)據(jù)。科學(xué)家閱讀食譜、取來各種原料按照食譜的步驟烘培蛋糕的一系列動作的總和就是進程。進程切換的比喻:現(xiàn)在科學(xué)家的兒子哭著跑進來,說他的頭被蜜蜂蟄了,科學(xué)家記錄下其食譜做到哪兒了(保存進程的當(dāng)前狀態(tài)),然后拿出一本急救手冊,按照其中的只是處理蟄傷。這里,我們看到處理機(科學(xué)家)從一個進程(做蛋糕)切換到一個更高優(yōu)先級的進程(實施醫(yī)療救治),每個進程擁有各自的程序(食譜和急救手冊)。蜜蜂蟄傷處理完成之后,這位計算機科學(xué)家又回來做蛋糕,從他離開時的那一步繼續(xù)往下做。所謂進程,就是容許運行一個程序所需要所有信息的容器。這些信息包括與進程相關(guān)的有地址空間和資源集。地址空間包括可執(zhí)行程序,程序的數(shù)據(jù)以及程序的堆棧;資源集包括寄存器,打開文件清單,突出的報警,有關(guān)進程清單,以及運行該進程所需要的所有其他信息。知道進程的概念,就知道系統(tǒng)會給每個進程分配一個,通過這個可以查看各個進程使用,內(nèi)存,資源情況,同時可以將傳給命令殺死這個進程。非常贊同在比較和的,隱藏了太多操作系統(tǒng)的細節(jié),而的命令行界面可以更多程序操作系統(tǒng)的相關(guān)細節(jié)。所以可以使用命令查看當(dāng)前系統(tǒng)運行了哪些進程,每個進程占用多少和進程,磁盤,機器負載是否過高等。雖然資源管理器一定程度也可以但是還是沒有的直觀和詳細。我想對有經(jīng)驗程序員來說,簡直弱爆了,費時而且不方便。雖然我還是一個菜鳥級程序員,也還一直使用著,也無法拋棄,但還是被深深滴吸引。top-15:32:03up501d乎第:23:25,1iuserfloadaverage:2.925.06,1-50Tasks:total.j.2runningj235sleeping0stopped^G1zombi0Cpu0:1丁9界sy,0一俄也79.1㈱id,0.&%waJe一夠hi,&.0%si,0.tCpul:6.9如%8.8^syj電日4.3M%。.例“明孔濟i,a.eastCpu2:2EJ富u1ii一調(diào)卬,e一姍n)62.E需id,d㈱因a,0-0%hiT亂濟i,a.濟tCpu3弓一9%工匕fl一潞n"8S.3Sidfd**。一豳hi,1一濟i,■&.e?5tFlem:121S0712ktotals■11962900kused,217B12kfree,4359544kbuffersSt/ap:14194296k■total.1152356kused,3941940kfree,6341920kcachedPIDUSERPRNIVIRTRESSHRS%CPU臥1EMTIME+pSWAPCODEDATA10574「口口七200207m15m3583ft37.20.10:00.3820156Umsvncoh'10703root200308m2948122452.90.014470:19313m11m89mphpnew_i58ro-ot2?&000S2.00-02799:461000[ksirfapdQ10428root20&29^1m10m5952S2.00.101:00,1200-11m/usr/loci9947root255152481368976Fl1.00.00:00.(1610-56656top147B1WWW2Q0531m130S908S1.00.00:00.4234198E55676m/usr/lo-c?1root20&19272428244S0.00.025:42,3221001322SS/sbin/in2root20&000S0.00.00:00.013000[Icthreadi(2)進程模型——進程如何實現(xiàn)的(如何創(chuàng)建和終止進程,進程的層次,進程的狀態(tài),進程表)創(chuàng)建一個進程,其實是啟動一個程序。一般在以下四種情況下創(chuàng)建進程:1)系.統(tǒng)初始化(比如啟動計算機)執(zhí)行了正在運行的進程所調(diào)用的進程創(chuàng)建系統(tǒng)調(diào)用()3)用.戶請求創(chuàng)建一個進程(比如用戶打開一個程序)4)一.個批處理作業(yè)的初始化進程也是有生命周期的,當(dāng)它完成它的任務(wù)之后,就要釋放計算機的相關(guān)資源并退出。一般通過以下條件來終止進程。1)正.常退出;2)出.錯退出;(異常處理)3)嚴.重錯誤;(非法指令,引用錯誤內(nèi)存,除零錯誤)被.殺死從上面創(chuàng)建進程的第二種方法可以看到進程可以進程,則說明進程存在父子關(guān)系,有其層次結(jié)構(gòu)。父進程和子進程共享文件描述符(,網(wǎng)絡(luò)連接)和相同的存儲映像,相同的環(huán)境字符串。父進程和子進程擁有不同的地址空間(擁有不同的內(nèi)存頁面)。:的進程沒有父子關(guān)系,但是“父進程”可以控制〃子進程”,并且可以轉(zhuǎn)交監(jiān)控權(quán),也可以剝奪“子進程”的繼承權(quán)。而中父進程不能剝奪子進程的繼承權(quán)。一一不太懂這個。進程具有三種狀態(tài):阻塞有資源,但是等待輸入就緒(無資源,即可運行)運行(正在占用執(zhí)行程序)就緒圖2-2就緒圖2-2一個進程可處于運行態(tài)“阻塞態(tài)和就緒態(tài).圖中顯示出各狀態(tài)之間的轉(zhuǎn)換L進程為等待輸A而阻塞2-調(diào)度程序選擇另一個進程3.調(diào)度程序詵擇這個進程4.出現(xiàn)有效輸入因為進程調(diào)度的原因阻塞不能直接轉(zhuǎn)到運行,就緒也不能直接阻塞。
為了實現(xiàn)進程模型,維護著一張表——進程表:儲存進程狀態(tài)(程序計數(shù)器,堆棧指針,內(nèi)存分配狀況,打開的文件狀態(tài)。賬號和調(diào)度信息,以及其他在進程由運行態(tài)轉(zhuǎn)換到就緒態(tài)或阻塞態(tài)時必須保存的東西,從而保證該進程隨后能再次啟動,就像從未被中斷過一樣等)(具體參見《現(xiàn)代操作系統(tǒng)》圖)存儲管理正山存儲管理正山段指針數(shù)據(jù)段指針堆棧段惜針文件管理根目錄工作H錄文件描述符用戶ID*!UD寄存器程序計數(shù)引程序狀態(tài)字堆柱指針進程狀態(tài)優(yōu)先級調(diào)度參數(shù)進程1D父進程進程綱信號進程開始時間使用的CPU若間子進程的CPU時間卜一次報警時間圖>4.典型的進程表去項中的一些字段一般通過中斷來實現(xiàn)進程切換,有硬件中斷,時鐘中斷等。通過操作系統(tǒng)通過中斷來完成進程切換的具體步驟參見圖線程是我的薄弱,之后好好補補,還有進程和線程的區(qū)別。進程的創(chuàng)建需要分配資源。而退出進程需要釋放資源。而進程的切換也意味著進程狀態(tài)的變換,以及資源的變更。當(dāng)進程無的資源的時候,等待切換的時候,就處于就緒狀態(tài),而當(dāng)進程占用資源執(zhí)行程序的時候處于運行狀態(tài),如果系統(tǒng)給進程分配資源,而進程等待輸入,則處于阻塞狀態(tài)而被掛起。此時會發(fā)生進程切換。當(dāng)創(chuàng)建和退出進程時,進程阻塞,發(fā)生中斷的時候都會進行進程切換。(3)進程間的通信進程間通信包括三個基礎(chǔ)問題:進程如何把信息傳遞給另一個確保兩個或多個進程在關(guān)鍵活動中不會交叉(保持互斥)進程執(zhí)行的正確順序(進程產(chǎn)生數(shù)據(jù),進程打印數(shù)據(jù),則應(yīng)該先執(zhí)行進程,再)關(guān)于第二個問題,就會牽涉到競爭條件——互斥兩個或多個進程讀寫某些共享數(shù)據(jù)。而最后的結(jié)果取決于進程運行的精確時序,稱為競爭條件。比如并發(fā)的時候,如何保證互斥。中的和可以確?;コ鈫幔亢凸蚕?,讀取到一個共享變量,在讀取到修改這個變量之間,該共享變量被其他進程修改。此時修改該變量覆蓋了原有的值。臨界區(qū)——保證互斥凡是涉及共享內(nèi)存,共享文件以及共享任何資源的情況都會引發(fā)與前面類似的錯誤。關(guān)鍵是要找到某種途徑來阻止多個進程同時讀寫共享的數(shù)據(jù)。有人提出臨界區(qū)的概念防止多個進程同時讀寫共享數(shù)據(jù),也就是通過臨界區(qū)來保證互斥。臨界區(qū)應(yīng)該滿足的以下條件:1)任.何兩個進程不能同時處于臨界區(qū)不應(yīng)對的數(shù)量和速度有任何的假設(shè)3)臨.界區(qū)外的程序不應(yīng)阻塞其他程序4)不.能使程序無限期等待進入臨界區(qū)實現(xiàn)互斥的幾種方法:(a)屏蔽中斷——每個進程在剛剛進入臨界區(qū)后屏蔽所有中斷,從而無法進行進程切換。這樣就只有一個進程處于臨界區(qū),也就避免了競爭條件。但是這種操作很危險。如果屏蔽不再打開,整個系統(tǒng)就終止了。()鎖一初始值為,若有一個進程進入臨界區(qū)為但是當(dāng)一個進程讀取鎖為0到設(shè)置其為1的整個過程中,又有一個進程也讀取鎖值為0,也設(shè)置為1,此時將有兩個進程進入臨界區(qū)。即該種方法無法真正達到互斥。()嚴格輪換法一一用記錄輪到哪個進程進入臨界區(qū)。需要進入臨界區(qū)的進程不斷的輪詢看其是否輪到自己。這種情況可以實現(xiàn)互斥,但是如果輪到某個進程進入臨界區(qū),它又在做其他事情,遲遲不進入臨界區(qū),就是占著茅坑不拉屎,導(dǎo)致其他人不能上廁所。也就是臨界區(qū)外的進程阻塞了其他進程進入臨界區(qū)。違反了上面的第三個條件。()解法為了防止出現(xiàn)臨界區(qū)外的進程阻塞其他進程進入臨界區(qū),設(shè)置了一個數(shù)組來記錄某個進程是否有興趣進入臨界區(qū),如果其沒有興趣進入臨界區(qū),則讓給其他進程進入臨界區(qū)。采用和設(shè)置和數(shù)組。用來記錄哪個進程希望進入臨界區(qū),或者輪到哪個進程進入到臨界區(qū)。信號量和互斥(重點)法則:任何可能出多的地方出錯的概率會大大增加。(4)進程調(diào)度——(時間上多路復(fù)用)實現(xiàn)多道程序設(shè)計,也就是通過進程切換讓各個進程輪流占用執(zhí)行程序,從而實現(xiàn)多程序分時系統(tǒng)。調(diào)度程序的主要工作就是決定應(yīng)當(dāng)運行哪個進程、何時運行及它應(yīng)該運行多長時間。進程調(diào)度的算法力圖在整體效率和進程的競爭公平性之間取得平衡。進程分為密集型進程和密集型進程。所謂密集型進程就是占用大量來運行程序,而所謂密集型進程就是需要進行大量的操作。幾乎所有進程的(磁盤)請求或計算都是交替突發(fā)的。有關(guān)調(diào)度處理的一個關(guān)鍵問題是何時進行調(diào)度決策:.創(chuàng)建新進程時,應(yīng)該先調(diào)度父進程還是子進程.進程退出時進程阻塞時(,信號量等)中斷發(fā)生時調(diào)度目標:保證公平;系統(tǒng)的策略強制執(zhí)行;保持系統(tǒng)的所有部分盡可能忙碌。調(diào)度算法:先來先服務(wù),最短作業(yè)優(yōu)先,最短剩余時間優(yōu)先關(guān)鍵調(diào)度算法:時間片輪轉(zhuǎn)和優(yōu)先級調(diào)度。時間片過長——導(dǎo)致較短請求較長相應(yīng)時間,資源浪費時間片過短——更多的進程切換,導(dǎo)致占用更多的U利用率降低為了防止高優(yōu)先級無休止運行下去,導(dǎo)致低優(yōu)先級的處于饑餓狀態(tài)。調(diào)度程序可以在每個時鐘中斷降低當(dāng)前進程優(yōu)先級,或者設(shè)置每個進程運行運行的最大時間片。對密集型進程,若其在時間片占用時間越短,其優(yōu)先級越高。多級隊列采用對進程的優(yōu)先級進行分類的算法。彩票調(diào)度:給各個進程發(fā)放一些資源彩票,抽中誰,就給誰分配資源。對于新來的程序也發(fā)放彩票,它也將擁有同等的概率獲得資源,這樣對新的程序可以及時響應(yīng)。同時可以通過發(fā)放彩票的額度來量化各個進程的優(yōu)先級。策略和機制:將調(diào)度策略和調(diào)度機制分離。將調(diào)度算法(機制)形式化,調(diào)度參數(shù)(策略)由用戶進程填寫。線程調(diào)度線程調(diào)度和進程調(diào)度基本一致。只是因為同一個進程中的各個線程之間都共享相關(guān)的資源,所以線程切換效率要高于進程切換。內(nèi)存-->地址空間帕金森定律聲稱不管存儲器有多大,程序都可以把它填滿。所以對于程序來說,內(nèi)存是遠遠不夠。一方面希望能盡可能多的活躍用戶程序裝入內(nèi)存,另一方面系統(tǒng)內(nèi)存資源有限。所以需要對內(nèi)存資源進行協(xié)調(diào)分配和管理,最大限度的充分使用各個存儲資源。接下來主要討論操作系統(tǒng)是怎樣對內(nèi)存創(chuàng)建抽象模型以及怎樣管理內(nèi)存的。由于每個存儲介質(zhì)的特性不盡相同。一般存取速度快的存儲介質(zhì)其成本也會更高,存儲空間小,易失性也高(比如高速緩存)。而相對低成本的存儲介質(zhì)如磁盤容量大,不易丟失,但是存取速度比內(nèi)存慢幾個數(shù)量級。所以具體問題具體分析,依據(jù)各個存儲介質(zhì)的特點建立了分層存儲體系。如下圖金字塔所示:
象模型。操作系統(tǒng)中管理分層存儲體系的部分稱為存儲管理器。它的任務(wù)是有效地管理內(nèi)存,即記錄哪些內(nèi)存是正在使用的,哪些內(nèi)存是空閑的,在進程需要時為其分配內(nèi)存,在進程使用完后釋放內(nèi)存。并且負責(zé)內(nèi)存與磁盤之間交換。存儲管理器()的主要作用參見下面截圖:MemoryManager■ManagememoryNe「a「chyMonitorusedandfreememoryAllocatememorytoprocessesReclaim(De-allocate)memorySwappingbetweenmainmem017anddisk(1)地址空間的概念地址空間:是一個進程可用于尋址內(nèi)存的一套地址集合。使用地址空間對存儲器進行抽象,主要是為了實現(xiàn)多道程序設(shè)計,即實現(xiàn)多個程序可以裝入內(nèi)存且互不干擾。每個進程都有自己獨立的地址空間。為了實現(xiàn)多道程序設(shè)計,曾有采用交換技術(shù),基址寄存器與界限寄存器,虛擬內(nèi)存等來實現(xiàn)。目前主要采用的是虛擬內(nèi)存的方法。(2)虛擬內(nèi)存虛擬內(nèi)存的基本思想是:每個程序擁有自己的地址空間,這個空間被分隔成多個塊,每一塊稱作一頁或頁面。每一頁有連續(xù)的地址范圍。這些頁被映射到物理內(nèi)存,但并不是所有的頁面都必須在內(nèi)存中才能運行程序。當(dāng)程序引用到一部分在物理內(nèi)存中的地址空間,這個空間被分
割成多個塊,每一塊稱作一頁或頁面。每一頁有連續(xù)的地址范圍。這些頁被映射到物理內(nèi)存,但并不是所有的頁都必須在內(nèi)存中才能運行程序。當(dāng)程序引用到一部分在物理內(nèi)存中的地址空間時,由硬件立刻執(zhí)行必要的映射。當(dāng)程序引用到一部分不在物理內(nèi)存中的地址空間時,由操作系統(tǒng)負責(zé)將缺失的部分裝入物理內(nèi)存并重新執(zhí)行失敗的指令。虛擬地址空間60K~64K56K-60K52K-56K4RK-52K44K-4^K40K-44K35K-4OK32K-36K2KK-32K24K-2SK20K~24K1GK-20K12K-16K&K-12K4K-8KQK-4K頁框物理內(nèi)存地M24K78K20K?24K16K-20K頁框物理內(nèi)存地M24K78K20K?24K16K-20K12K-16KSK-12K多個程序被裝載如進內(nèi)存,而內(nèi)存資源有限。所以并不是當(dāng)前運行的程序的所有的頁面都載入內(nèi)存。這也將導(dǎo)致程序引用到的一些頁面不在物理內(nèi)存中,則可能引起缺頁中斷。這個時候就需要進行頁面置換。由于頁面大小固定,所以不需要考慮分配多大內(nèi)存。關(guān)鍵在于選哪一個頁面換出內(nèi)存。如果是干凈頁面,不需要寫回磁盤,但如果是臟數(shù)據(jù),則需要將其寫回磁盤。頁面置換的算法基于這樣的思想:已經(jīng)很久沒有使用的頁面很有可能在未來較長時間的一段時間內(nèi)仍然不會被使用。這個思想意味著在缺頁中斷發(fā)生時,置換未使用時間最長的頁面。這個策略稱作:(最久最少使用)頁面置換算法。算法理論上可以實現(xiàn),但是代價太高,所以用軟件模擬。(最不常用)簡單的就是記錄每個頁面的訪問頻次以及最近一次的訪問時間,將訪問頻次最少的置換出來。對于訪問頻次相同的,選擇最久沒有被訪問的那個頁面置換。老化算法也是模擬算法,就是說在用一個序列記錄每個時t鐘頁面是否被訪問,如果第個時刻該頁面被訪問,那么該序列第位為,否則為0為時鐘個數(shù)。選擇計數(shù)器值最小的頁面進行置換。采用此種置換方法會使得訪問頻次相同,越久沒被訪問的頁面計數(shù)器值偏小。因為越早的時刻被訪問訪問值處在低位,越早的處于高位。(自己語言表述沒表達清楚,書上的一段看看)首先在位被加入之前先將計數(shù)器右移一位;其次,將位加到計數(shù)器最左端的位。這樣保證頁面的最早的訪問位處于計數(shù)器值低位,最近訪問位處于計數(shù)器值高位。(覺得這個計數(shù)器很,不但款可以衡量訪問頻次,還可以衡量最新訪問時間)。這個方法的缺陷在于計數(shù)器只有有限位,計數(shù)器只記錄9個時刻,假如一個頁面上次訪問是在10個時鐘前,另一個頁面上次方位是在100個0時鐘前。這個時候計數(shù)器就無法衡量這兩個頁面哪一個最久沒被訪問。此時很有可能將第一個頁面(連續(xù)10個時鐘沒有訪問)給置換掉,而不是將最久沒被訪問的頁面(連續(xù)100個0時鐘沒有訪問)置換掉。除了老化算法,還有類似隊列先進先出()的算法,該算法最新訪問的頁面放在隊列尾,這樣最久沒被訪問的處于隊列頭部,選擇頭部的頁面置換掉。這樣的方式會將最新的放在隊列尾部,但是最常用的最老的頁面將會被淘汰掉,因為它沒有考慮頁面訪問頻繁程度。為了防止算法將常用的老頁面置換掉,提出了第二次機會算法,就是從隊頭尋找沒有被訪問的頁面為。如果該頁面的為,則將其置換掉。如果隊頭的頁面被訪問過(為),則將其置為,并且從隊頭裝入到隊尾。直至從隊頭找到?jīng)]有被訪問過的頁面為)按照這本書一貫的慣例,一個算法在解決一個問題后,又會在其他情況下存在缺陷,也就是說沒有盡善盡美的算法。第二次機會算法雖看起來很贊,但由于需要在鏈表中頻繁移動頁面,從而降低效率。還好是用鏈表來實現(xiàn)隊列,用數(shù)組實現(xiàn)第二次算法的隊列,會搞死你滴。比第二次算法稍微好點(不需要頻繁移動頁面)就是時鐘頁面置換算法。時鐘頁面置換算法是將所有的頁面都保存在一個類似鐘面的環(huán)形鏈表中,用表鐘的時針來指向最老的頁面。時鐘按照某一個方向轉(zhuǎn)動尋找未被訪問過(為)的頁面,如果當(dāng)前時針指向的頁面沒被訪問過,則置換掉,并且將新的頁面插入這個位置,然后將表針前移一位。如果位是就清除位并把表針前移一個位置,重復(fù)這個過程直至找到位為0的頁面。在多道程序設(shè)計系統(tǒng)中,經(jīng)常會把進程轉(zhuǎn)移到磁盤上(即從內(nèi)存中移走所有的頁面),這樣可以讓其他的進程有機會占用U當(dāng)進程再次被調(diào)用回來后,該進程會一直產(chǎn)生缺頁中斷直到它所需要的頁面全部被裝入內(nèi)存。這樣就導(dǎo)致每次裝入進程,都要發(fā)生多次缺頁中斷,大大的降低了效率,并且也要花時間處理缺頁中斷,浪費的寶貴時間。所以內(nèi)存的分頁系統(tǒng)()會設(shè)法跟蹤進程的工作集,在進程運行前將其裝入內(nèi)存。這種方法叫做預(yù)調(diào)頁,大大的減少了缺頁中斷的時間。人們很早就發(fā)現(xiàn)大多數(shù)程序都不是均勻地訪問他們的地址空間的,而訪問往往是集中于一小部分頁面。如何確定進程的工作集合以及工作集合大小,這是一個讓人頭疼的問題。由于基本的工作集算法,需要掃描整個頁表才能確定被淘汰的頁面,因此基本工作集算法是比較費時的。與時鐘算法一樣,所需的數(shù)據(jù)結(jié)構(gòu)是一個以頁框為元素的循環(huán)表,起初表是空的,之后逐漸將頁面加入到表中,形成一個環(huán)。每個表項包含來自基本工作集算法的上次使用時間,位(訪問位)和位(修改位)。如下圖所示:先選擇沒有被訪問的頁面訪問的頁面跳過并且其位重置為0如果找到了沒被訪問過的頁面,再看其上次使用時間距離現(xiàn)在的時間(即生存時間)是否大于某個值。如果大于生存時間,則看其是否是干凈頁面,如果是干凈頁面,則將其置換掉換入新的頁面。如果其不是干凈頁面,則跳過(為了減少寫入磁盤的時間)。如果轉(zhuǎn)了一圈還沒有干
凈的未訪問頁面,則將某個頁面寫入磁盤,置為干凈頁面,并將該頁面置換出來。工作集時鐘頁面轉(zhuǎn)換算法中,頁面置換的優(yōu)先級:未訪問頁面>未修改的干凈頁面>老頁面。工作集時鐘頁面轉(zhuǎn)換算法圖解見下圖:匿]■當(dāng)前實際時間…一fins工作集時鐘頁面轉(zhuǎn)換算法圖解見下圖:匿]■當(dāng)前實際時間…一finsfend\^ni圈土21工作第時餅頁面置換算法的操作:”和同維山在R=i時所發(fā)生的僭形IG寺N)給出R=o的例子上次使新幣面各個頁面置換算法比較:最優(yōu)算法(酸近未使用)算法FIHD最優(yōu)算法(酸近未使用)算法FIHD(先進比HJ算正-,一第二次機會算法—一時鐘算港-Fru(最近最少使用)算法_.NZ退不經(jīng)忘使用)算法老化算法_匚作案算定i二作集時鐘算法圖茶22書中詞耗過的況而置換算法注釋_不可也現(xiàn),世可用作交很粗糙的近似可能拋棄第要頁曲一正FI田有義的改善忠實犯"相優(yōu)爰,但眼難實藥一LRU的相對粗略附近覦非常近似LR口的有效算正實現(xiàn)起來湎菽存的有效算法磁盤-->文件系統(tǒng)本著以下三個基本需求:能夠存儲大量信息使用信息的進程終止時,信息仍存在必須能使多個進程并發(fā)存取有關(guān)信息磁盤誕生了,相對內(nèi)存,磁盤具有大容量,不易丟失,成本低廉的優(yōu)點,但是在存取速度要比內(nèi)存慢幾個數(shù)量級。雖然對磁盤進行讀寫操作比較容易,但是對于以下情況不一定能很好的解決:1)如何找到信息?——查找2)如何防止一個用戶讀取另一個用戶的數(shù)據(jù)?——權(quán)限3)如何知道哪些塊是空閑的?——磁盤空間分配和回收于是類同進程之于,地址空間之于內(nèi)存。同樣磁盤也需要一個抽象來解決這些問題。于是文件的概念就出現(xiàn)了。通過進程調(diào)度來進程切換,通過內(nèi)存管理單元來管理內(nèi)存的分配,釋放和置換等。同樣操作系統(tǒng)需要一個系統(tǒng)來處理文件——文件系統(tǒng)。(1)文件和目錄的概念——從用戶角度來看文件和目錄有哪些操作,文件如何命名,目錄樹的層次,文件的相關(guān)權(quán)限修改等文雅點說文件是數(shù)據(jù)集合,粗糙點說文件就是磁盤塊集合。文件具有權(quán)限(讀寫執(zhí)行),創(chuàng)建時間,訪問時間文件所有者等屬性,可以進行創(chuàng)建打開讀寫關(guān)閉刪除等操作。文件具有不同的類型。除了普通文件和目錄外,還有字符特殊文件和塊特殊文件。字符特殊文件和輸入輸出有關(guān),用于串行類設(shè)備,如終端,打印機和網(wǎng)絡(luò)等。塊特殊文件用于磁盤類設(shè)備。普通文件一般分為和二進制文件。文件最大優(yōu)勢是在于可以顯示和打印,還可以用各種編輯器進行編輯。目錄其實也是一種文件。所以也有權(quán)限等屬性,有創(chuàng)建打開關(guān)閉刪除等操作。通過命令可以看到文件和目錄的詳細信息,
-rw-rw-r--1luoqing-rw-rw-r--1luoqing-rw-pw-ir--1luoqing—「w-p「1root-rw-nw-r--1luoqing-rw-rw-r---rw-rw-r--1luoqing-rw-rw-r--1luoqing-rw-pw-ir--1luoqing—「w-p「1root-rw-nw-r--1luoqing-rw-rw-r--1luoqing-pw-ip——r——1root-「w-|p—「—1root-rw-nw-ir--1luoqing-rw-rw-r--1luoqing-rw-r——r——1roo±-「詞-ip—「—1rootdrwxr-xr-x2roo±-「國-ip—ip—1root-rw-rw-r--1luoqingdrwxr-xr-x18root—「w-p「1root0>11總用量3531300luoqingluoqingluoqingrootluoqingluocflLngrootrootluoqingluoqingrootrootrootrootluoqingro-Dtroot66896689177533223683242822922g22920850121068143341168830S5812106427409610653113284096891911:46161911:47102515:2510420141101217:58111218:00111015:521.2120142012612:41811519:1882292014993315:17ad132014122014COV1512:22cr1917:13102014dat月月月月月月月月月月月月月月月月月611175956621i節(jié)點——實現(xiàn)者角度來看文件和目錄是怎樣存儲的,磁盤空間是怎樣管理的以及怎樣使系統(tǒng)有效而可靠地工作。文件存儲的實現(xiàn)的關(guān)鍵問題是記錄各個文件分別使用哪些磁盤塊。這樣操作系統(tǒng)就知道哪些磁盤塊被使用,哪些是空閑的。要讀寫一個文件要訪問哪些磁盤塊,創(chuàng)建和刪除文件可以進行磁盤塊的分配和回收。有四種算法來給一個文件分配磁盤塊。給文件分配磁盤塊要本著方便進行文件創(chuàng)建時分配空間,刪除時回收空間,讀寫的時候能快速查找到相應(yīng)的磁盤塊,并且最大限度減少磁盤塊空間的浪費。(a)連續(xù)分配算法:每個文件作為一連串連續(xù)數(shù)據(jù)塊存儲在磁盤上。優(yōu)點:實現(xiàn)簡單,只需要知道第一個磁盤塊地址和磁盤塊塊數(shù)即可。讀操作性能好,因為磁盤塊都挨在一塊,減少了磁盤尋道和旋轉(zhuǎn)延遲。缺點:引起磁盤碎片,從而導(dǎo)致磁盤空間浪費。而且不利于動態(tài)分配文件存儲空間。()鏈表分配算法:每個文件構(gòu)造磁盤塊鏈表優(yōu)點:最大限度使用磁盤空間,很少有磁盤碎片,除了最后一個磁盤的內(nèi)部碎片。而且可以動態(tài)擴展文件的存儲空間。缺點:讀操作性能下降,由于磁盤塊之間不是連續(xù)的,所以需要尋道和旋轉(zhuǎn)。而且隨機存取性能也會下降。磁盤塊之前有兩個字節(jié)存儲了下一個磁盤塊的地址,導(dǎo)致每一個磁盤塊存儲的內(nèi)容不是2的整數(shù)次冪。如果需要完整讀取2的整數(shù)次冪,會導(dǎo)致獲取和拼接兩個磁盤塊。(c)在內(nèi)存中采用表的鏈表分配這種方法類似于上面的方法,針對上面采用磁盤空間存儲磁盤地址不能讀取2的整數(shù)次冪,所以使用內(nèi)存來存儲磁盤塊地址鏈表。這種方法主要缺點由于其存放在內(nèi)存中,當(dāng)磁盤比較大的時候,非常占用內(nèi)存空間。()節(jié)點針對上面占用內(nèi)存空間的缺點,提出節(jié)點的概念。就是使用節(jié)點來存儲每個文件包含的磁盤塊的地址和文件屬性。但是只有當(dāng)文件打開的時候,該文件對應(yīng)的節(jié)點才會寫入到內(nèi)存。因為一般情況下,打開的文件個數(shù)有限,所以極大的減少了占用的內(nèi)存空間。節(jié)點存在的一個問題是,如果每個節(jié)點只能存儲固定數(shù)量的磁盤地址,那么當(dāng)一個文件所含的磁盤塊數(shù)量超出一個節(jié)點的所容納的數(shù)目,解決方案是:可以有兩個或更多個包含磁盤地址的塊,或者指向其他存放地址的磁盤塊的地址。(e)目錄的實現(xiàn)操作系統(tǒng)利用用戶給出的路徑名找到相應(yīng)目錄項。目錄項中提供了查找文件磁盤塊所需要的信息。目錄系統(tǒng)的主要功能是把文件名映射成定位文件數(shù)據(jù)所需的信息。也就是說根據(jù)文件名可以找到文件所包含的磁盤塊信息。每個目錄項包含一些目錄項以及文件節(jié)點(或者順序存儲的文件磁盤地址,鏈表分配的第一個塊的編號等)。(3)虛擬文件系統(tǒng)(文件創(chuàng)建打開讀寫關(guān)閉刪除等操作)因為不同操作系統(tǒng)的文件系統(tǒng)不同,所以會采用虛擬文件系統(tǒng)()概念嘗試將多種文件系統(tǒng)統(tǒng)一成一個有序的框架。關(guān)鍵的思想就是抽象出所有文件系統(tǒng)共有的部分,并且將這部分代碼放在單獨的一層,該層調(diào)用底層的實際文件系統(tǒng)來具體管理數(shù)據(jù)。虛擬文件系統(tǒng)不需要管這個數(shù)據(jù)是來自磁盤,還是來自網(wǎng)絡(luò),只需要拿到文件描述符,進行讀取操作。書中描述所有的都可以看做文件讀寫。包括網(wǎng)絡(luò),磁盤(4)文件系統(tǒng)管理和優(yōu)化磁盤塊劃分多大來平衡磁盤空間利用率和磁盤訪問時間效率,使用和空閑磁盤塊采用何種數(shù)據(jù)結(jié)構(gòu)進行記錄以方便磁盤空間的分配和釋放,磁盤對不同用戶開放權(quán)限和實用配額的設(shè)置。這些都是磁盤空間管理需要解決的問題。另一方面為了應(yīng)對人為的或者天災(zāi)的意外的文件系統(tǒng)的破壞,需要對文件系統(tǒng)進行備份。由于在數(shù)據(jù)全部寫回磁盤之前存在系統(tǒng)崩潰的可能,從而導(dǎo)致文件系統(tǒng)的不一致。所以會考慮采用日志文件系統(tǒng)記錄相關(guān)的操作歷史記錄以方便恢復(fù)。一般采用高速緩存,提取預(yù)讀數(shù)據(jù),以及順序存取減少磁盤臂的移動等方法來優(yōu)化文件系統(tǒng)的性能?;コ夂玩i(1)什么是死鎖由于計算機系統(tǒng)中有很多獨占性的資源,比如打印機,系統(tǒng)內(nèi)部表項等。當(dāng)兩個進程同時使用一個獨占資源,就有可能引起死鎖。死鎖的規(guī)范定義如下:如果一個進程集合中的每一個進程都在等待只能由該進程集合中的其他進程才能引發(fā)的事件,那么,該進程集合就是死鎖的。由于所有的進程都需要其他進程促發(fā)才能執(zhí)行,所以導(dǎo)致所有的進程都處于等待和休眠的狀態(tài)??梢圆捎觅Y源分配圖來分析該進程集合是否會發(fā)生死鎖。如果資源分配圖中有環(huán)路,則該環(huán)路的進程集合會發(fā)生死鎖。資源死鎖發(fā)生的四個必要條件:互斥條件占有和等待條件不可搶占條件環(huán)路等待條件只有同時滿足以上四個條件,才會引起死鎖。換句話說,我們可以通過破壞其中的任一條件來避免死鎖。也就是我們接下來要探討的如何檢測死鎖,從而避免死鎖并修復(fù)死鎖。(2)如何避免死鎖并修復(fù)死鎖一種方法就是無視它(畫外音,沒想到無視也是一種解決棘手的計算機問題的算法…)第二種方法就是死鎖的檢測和恢復(fù)。針對每種類型一個資源的一種算法就是檢測資源圖中是否有環(huán)路。若資源圖中有環(huán)路,則說明存在死鎖。檢測環(huán)路的方法是每次選擇資源圖中的某一個節(jié)點作為起點,采用深度優(yōu)先遍歷看其最后是否回到遍歷途徑的點。如果資源圖所有節(jié)點都被用作起點進行深度優(yōu)先仍然沒有檢測到環(huán)路,則說明該進程集不存在死鎖。針對每種類型資源多個資源的死鎖檢測,采用矩陣來標識各種類型資源現(xiàn)有資源數(shù),可用資源數(shù)以及進程分配。每次給一個可以滿足其資源需求的進程分配資源,進行執(zhí)行完畢之后,釋放資源。如果所有的進程都能執(zhí)行完畢,則說明該資源集合不會發(fā)生死鎖,否則說明可能發(fā)生死鎖?;謴?fù)死鎖則可以通過破壞死鎖產(chǎn)生的四個必要條件來進行,首先破壞第三個條件,利用搶占來恢復(fù),比如資源是獨占資源,一個只能執(zhí)行一個進程。如果某個進程想使用資源,則可以采用進程切換來搶占資源。通過殺死進程恢復(fù),破壞第四個條件,這樣就等于是解開環(huán)路,因為環(huán)路中一個進程消失。當(dāng)然殺死環(huán)路外的進程不一定能避免死鎖。通過回滾恢復(fù),就倒退到進程執(zhí)行的某個時間點,可能在這個時間點,該進程某些資源暫時不需要。如何避免死鎖,提出了一種能夠避免死鎖的調(diào)度算法,稱為銀行家算法。該銀行家算法采用的是空閑的資源數(shù)能否滿足某一進城的最大需求,如果能滿足某一進程的最大需求,就稱該狀態(tài)是暫時安全的,然后滿足該進程,執(zhí)行該進程完畢后釋放資源,直至所有進程執(zhí)行完畢。如果整個過程都無法滿足某一進程其資源需求,則說明狀態(tài)是不安全的,也就是可能存在死鎖。如何預(yù)防死鎖,就是破壞死鎖的四個必要條件。比如打印機資源,采用假脫機打印機資源,所有需要打印的進程都可以訪問假脫機打印資源,該資源可以同時輸出。打印機資源只有一個后臺的可以訪問,這樣確保打印機只有一個進程可以使用。整個文件完整的輸出之后,該使用打印機打印出資源。防止獨占資源引起死鎖的一個小思路是:避免分配那些不是絕對必須的資源,盡量做到盡可能少的進程可以真正請求資源。另一種破壞占有和等待條件的方法是,要求當(dāng)一個進程請求資源時,先暫時釋放當(dāng)前占用的所有資源,然后再嘗試一次獲得所需的全部資源。linux操作系統(tǒng)先八卦下,在看關(guān)于操作系統(tǒng)這一章的時候,我很想知道是怎么評價操作系統(tǒng)滴,嘻嘻……,在的自傳《》中有敘述其與的一段郵件掐架。于是我懷著這樣滴小心情看這一章??偟膩碚f還是挺客觀的,分析了沒有流行,而操作系統(tǒng)迅速發(fā)展的原因,并且講述了和的設(shè)計差別。還是說說主角操作系統(tǒng)。系統(tǒng)的設(shè)計原則:能夠同時處理多進程和多用戶的交互式系統(tǒng)。讓系統(tǒng)盡量簡單,優(yōu)雅,并且具有一致性(最少學(xué)習(xí)成本)系統(tǒng)有較強的功能型和靈活性每個程序應(yīng)該只做一件事并且把它做好盡量減少冗余操作系統(tǒng)其需要的是一個傭人,而不是保姆。(換句話說其只需要一個執(zhí)行者,不需要一個協(xié)作者)系統(tǒng)中的層次結(jié)構(gòu):
播唯實用程序(設(shè)上編輯魏,編譯器等)用戶原統(tǒng)調(diào)用接口I播唯實用程序(設(shè)上編輯魏,編譯器等)用戶原統(tǒng)調(diào)用接口I標睢扉國數(shù)(open.close,read,wriic.ftjrk等)Linux操作需統(tǒng)\(進程管理,存儲瞥理,文件不統(tǒng),12等j核右幽t
fCPU、內(nèi)存、磁盤.要端等)?10-1LinuK系統(tǒng)中的層次結(jié)構(gòu)——非常強大的命令行界面(多用戶多程序,管道,正則表達式)命令行用戶界面包含大量的標準應(yīng)用程序:-文件和目錄操作命令-過濾器-程序設(shè)計工具,如編輯器和編譯器-文檔處理-系統(tǒng)管理-其他參見的內(nèi)核結(jié)構(gòu),理解操作系統(tǒng)。部件,內(nèi)存管理部件和進程管理部件。
部件一一對一個文件進行讀操作,不論是在內(nèi)存還是在磁盤中,進程管理部件墟柢內(nèi)存部件一一對一個文件進行讀操作,不論是在內(nèi)存還是在磁盤中,進程管理部件墟柢內(nèi)存CPU隔度都和終端輸入中讀取
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國橡膠濾膠機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年膨體聚四氟乙烯彈性帶項目投資價值分析報告
- 2025至2030年中國全自動噴香機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年甜橙汁項目投資價值分析報告
- 2025至2030年氣動測量頭項目投資價值分析報告
- 2025年中國蜻蜓風(fēng)箏市場調(diào)查研究報告
- 2025年高壓高頻脈沖電源項目可行性研究報告
- 2025至2030年便攜式一體化工業(yè)電腦項目投資價值分析報告
- 2025年鼠標電話項目可行性研究報告
- 辦公室文員轉(zhuǎn)正申請書
- 十大護理安全隱患
- 2025年新生兒黃疸診斷與治療研究進展
- 廣東大灣區(qū)2024-2025學(xué)年度高一上學(xué)期期末統(tǒng)一測試英語試題(無答案)
- 失效模式和效應(yīng)分析護理
- 2025年四川中煙工業(yè)限責(zé)任公司招聘110人高頻重點提升(共500題)附帶答案詳解
- 2024年福建省莆田市數(shù)學(xué)三上期末質(zhì)量檢測模擬試題含解析
- 2025年山東菏澤投資發(fā)展集團限公司招聘61人管理單位筆試遴選500模擬題附帶答案詳解
- 幕墻工程項目管理手冊
- 2025山東能源集團新能源限公司招聘12人管理單位筆試遴選500模擬題附帶答案詳解
- 課題申報書:反饋對青少年努力投入的影響機制及干預(yù)研究
- 康復(fù)評定頸椎病
評論
0/150
提交評論