<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            操作系統

            操作系統讀書工程報告

            時間:2025-04-20 06:19:44 操作系統 我要投稿
            • 相關推薦

            操作系統讀書工程報告范文

              篇一:操作系統讀書工程報告

            操作系統讀書工程報告范文

              一、基本理論闡述

              1.進程

              定義:進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。它是操作系統動態執行的基本單元,在傳統的操作系統中,進程既是基本的分配單元,也是基本的執行單元。

              基本介紹:多道程序在執行時,需要共享系統資源,從而導致各程序在執行過程中出現相互制約的關系,程序的執行表現出間斷性的特征。這些特征都是在程序的執行過程中發生的,是動態的過程,而傳統的程序本身是一組指令的集合,是一個靜態的概念,無法描述程序在內存中的執行情況,即我們無法從程序的字面上看出它何時執行,何時停頓,也無法看出它與其它執行程序的關系,因此,程序這個靜態概念已不能如實反映程序并發執行過程的特征。為了深刻描述程序動態執行過程的性質,人們引入“進程(Process)”概念。

              進程的概念:第一,進程是一個實體。每一個進程都有它自己的地址空間,一般情況下,包括文本區域(text region)、數據區域(data region)和堆棧(stack region)。文本區域存儲處理器執行的代碼;數據區域存儲變量和進程執行期間使用的動態分配的內存;堆棧區域存儲著活動過程調用的指令和本地變量。第二,進程是一個“執行中的程序”。程序是一個沒有生命的實體,只有處理器賦予程序生命時,它才能成為一個活動的實體,我們稱其為進程。

              主要特征:

              動態性:進程的實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消亡的。

              并發性:任何進程都可以同其他進程一起并發執行

              獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位;

              異步性:由于進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進

              結構特征:進程由程序、數據和進程控制塊三部分組成。

              狀態分類:

              1)就緒狀態(Ready):進程已獲得除處理器外的所需資源,等待分配處理器資源;只要分配了處理器進程就可執行。就緒進程可以按多個優先級來劃分隊列。例如,當一個進程由于時間片用完而進入就緒狀態時,排入低優先級隊列;當進程由I/O操作完成而進入就緒狀態時,排入高優先級隊列。

              2)運行狀態(Running):進程占用處理器資源;處于此狀態的進程的數目小于等于處理器的數目。在沒有其他進程可以執行時(如所有進程都在阻塞狀態),通常會自動執行系統的空閑進程。

              3)阻塞狀態(Blocked):由于進程等待某種條件(如I/O操作或進程同步),在條件滿足之前無法繼續執行。該事件發生前即使把處理機分配給該進程,也無法運行。

              進程控制的基本事件:

              進程的創建

              1.引起創建進程的事件

              2在多道程序環境中,只有(作為)進程(時)才能在系統中運行。因此,為使程序能運行,就必須為它創建進程。導致一個進程去創建另一個進程的典型事件,可以有以下四類:

              1) 用戶登錄。

              在分時系統中,用戶在終端鍵入登錄命令后,如果是合法用戶,系統將為該終端建立一個進程,并把它插入到就緒隊列中。

              2) 作業調度。

              在批處理系統中,當作業調度程序按照一定的算法調度到某作業時,便將該作業裝入到內存,為它分配必要的資源,并立即為它創建進程,再插入到就緒隊列中。

              3) 提供服務。

              當運行中的用戶程序提出某種請求后,系統將專門創建一個進程來提供用戶所需要的服務,例如,用戶程序要求進行文件打印,操作系統將為它創建一個打印進程,這樣,不僅可以使打印進程與該用戶進程并發執行,而且還便于計算出為完成打印任務所花費的時間。

              4) 應用請求。

              在上述三種情況中,都是由系統內核為它創建一個新進程,而這一類事件則是基于應用進程的需求,由它創建一個新的進程,以便使新進程以并發的運行方式完成特定任務。

              2.進程的創建過程

              一旦操作系統發現了要求創建新進程的事件后,便調用進程創建原語Creat()按下述步驟創建一個新進程。

              1) 申請空白PCB。為新進程申請獲得唯一的數字標識符,并從PCB集合中索取一個空白PCB。

              2) 為新進程分配資源。為新進程的程序和數據以及用戶棧分配必要的內存空間。顯然,此時操作系統必須知道新進程所需要的內存大小。

              3) 初始化進程控制塊。PCB的初始化包括:①初始化標識信息。將系統分配的標識符和父進程標識符,填入新的PCB中;②初始化處理機狀態信息。使程序計數器指向程序的入口地址,使棧指針指向棧頂;③初始化處理機控制信息。將進程的狀態設置為就緒狀態或靜止就緒狀態,對于優先級,通常是將它設置為最低優先級,除非用戶以顯式的方式提出高優先級要求。

              4) 將新進程插入就緒隊列。如果進程就緒隊列能夠接納新進程,便將新進程插入到就緒隊列中。

              進程終止

              1.引起進程終止的事件

              1)正常結束。

              在任何計算機系統中,都應該有一個表示進程已經運行完成的指示。例如,在批處理系統中,通常在程序的最后安排一條Hold指令或終止的系統調用。當程序運行到Hold指令時,將產生一個中斷,去通知OS本進程已經完成。

              2)異常結束。

              在進程運行期間,由于出現某些錯誤和故障而迫使進程終止。這類異常事件很多,常見的有:越界錯誤,保護錯,非法指令,特權指令錯,運行超時,等待超時,算術運算錯,I/O故障。

              3)外界干預。

              外界干預并非指在本進程運行中出現了異常事件,而是指進程應外界的請求而終止運行。這些干預有:操作員或操作系統干預,父進程請求,父進程終止。

              2. 進程的終止過程

              如果系統發生了上述要求終止進程的某事件后,OS便調用進程終止原語,按下述過程去終止指定的進程。

              1)根據被終止進程的標識符,從PCB集合中檢索出該進程的PCB,從中讀出該進程狀態。

              2)若被終止進程正處于執行狀態,應立即終止該進程的執行,并置調度標志為真。用于指示該進程被終止后應重新進行調度。

              3)若該進程還有子孫進程,還應將其所有子孫進程予以終止,以防他們成為不可控的進程。

              4)將被終止的進程所擁有的全部資源,或者歸還給其父進程,或者歸還給系統。

              5)將被終止進程(它的PCB)從所在隊列(或鏈表)中移出,等待其它程序來搜集信息。

              進程的阻塞和喚醒

              1.引起進程阻塞和喚醒的事件

              1)請求系統服務。

              當正在執行的進程請求操作系統提供服務時,由于某種原因,操作系統并不立即滿足該進程的要求時,該進程只能轉變為阻塞狀態來等待,一旦要求得到滿足后,進程被喚醒。

              2)啟動某種操作。

              當進程啟動某種操作后,如果該進程必須在該操作完成之后才能繼續執行,則必須先使該進程阻塞,以等待該操作完成,該操作完成后,將該進程喚醒。

              3)新數據尚未到達。

              對于相互合作的進程,如果其中一個進程需要先獲得另一(合作)進程提供的數據才能運行以對數據進行處理,則是要其所需數據尚未到達,該進程只有(等待)阻塞,等到數據到達后,該進程被喚醒。

              4)無新工作可做。

              系統往往設置一些具有某特定功能的系統進程,每當這種進程完成任務后,便把自己阻塞起來以等待新任務到來,新任務到達后,該進程被喚醒。

              2.進程阻塞過程

              正在執行的進程,當發現上述某事件后,由于無法繼續執行,于是進程便通過調用阻塞原語block把自己阻塞。可見,進程的阻塞是進程自身的一種主動行為。進入block過程后,由于此時該進程還處于執行狀態,所以應先立即停止執行,把進程控制塊中的現行狀態由執行改為阻塞,并將PCB插入阻塞隊列。如果系統中設置了因不同事件而阻塞的多個阻塞隊列,則應將本進程插入到具有相同事件的阻塞(等待)隊列。最后,轉調度程序進行重新調度,將處理機分配給另一就緒進程,并進行切換,亦即,保留被阻塞進程的處理機狀態(在PCB中),再按新進程的PCB中的處理機狀態設置CPU環境。

              3. 進程喚醒過程

              當被阻塞的進程所期待的事件出現時,如I/O完成或者其所期待的數據已經到達,則由有關進程(比如,用完并釋放了該I/O設備的進程)調用喚醒原語wakeup(),將等待該事件的進程喚醒。喚醒原語執行的過程是:首先把被阻塞的進程從等待該事件的阻塞隊列中移出,將其PCB中的現行狀態由阻塞改為就緒,然后再將該PCB插入到就緒隊列中。

              二、當前理論或實踐應用現狀

              1.線程、SMP 和微內核

              在許多操作系統中,傳統的進程概念被分為兩部分:一部分負責管理資源所有權;另一部分負責指令流的執行。一個單獨的進程可包含多個線程。使用多線程的組織方法對程序的結構化和性能方面都有很大的幫助。SMP是一個擁有多處理器的計算機系統,其中的每一個處理器都可以執行所有應用程序和系統代碼。SMP的組織方法增強了系統的性能和可靠性。SMP通常和多線程機制一起使用,即使沒有多線程機制也能很大幅度的提高系統性能。微內核是操作系統為了減少運行在內核模式的代碼量的一種設計方式,并且分析了這種方法的優點。

              2.并發:互斥和同步

              相交進程之間的關系主要有兩種:同步與互斥。所謂互斥是指散步在不同進程之間的若干程序片斷,當某個進程運行其中一個程序片段時,其它進程就不能運行它們之中的任一程序片段,只能等到該進程運行完這個程序片段后才可以運行。 

              篇二:操作系統讀書工程報告

              一、 基本理論闡述

              在操作系統中調度實質上是一種資源的分配,因而調度算法是指:根據系統的資源分配策略所規定的資源分配算法。對于不同的操作系統和系統目標,通常采用不同的調度算法,例如,在批處理系統中,為了照顧為數眾多的短作業,應采用短作業優先的調度算法;又如在分時系統中,為了保證系統具有合理的相應時間,應采用輪轉法進行調度。目前存在的多種調度算法中,有的使用于作業調度,也有的適用于進程調度;但也有些算法既可適用于作業調度又適用于進程調度。

              1.先來先服務(FCFS)

              先來先服務(FCFS, First Come First Serve)是最簡單的調度算法,按先后順序進行調度。

              1.1 FCFS算法

              按照作業提交或進程變為就緒狀態的先后次序,分派CPU; 當前作業或進程占用CPU,直到執行完或阻塞,才出讓CPU(非搶占方式)。 在作業或進程喚醒后(如I/O完成),并不立即恢復執行,通常等到當前作業或進程出讓CPU。最簡單的算法。

              1.2 FCFS的特點

              比較有利于長作業,而不利于短作業。 有利于CPU繁忙的作業,而不利于I/O繁忙的作業。

              2.短作業優先

              短作業優先(SJF, Shortest Job First)又稱為“短進程優先”SPN(Shortest Process Next);這是對FCFS算法的改進,其目標是減少平均周轉時間。

              對預計執行時間短的作業(進程)優先分派處理機。通常后來的短作業不搶先正在執行的作業。

              2.1 SJF的特點

              (1) 優點:

              比FCFS改善平均周轉時間和平均帶權周轉時間,縮短作業的等待時間;

              提高系統的吞吐量;

              (2) 缺點:

              對長作業非常不利,可能長時間得不到執行; 未能依據作業的緊迫程度來劃分執行的優先級;

              難以準確估計作業(進程)的執行時間,從而影響調度性能。

              2.2 SJF的變型

              “最短剩余時間優先”SRT(Shortest Remaining Time)(允許比當前進程剩余時間更短的進程來搶占)

              “最高響應比優先”HRRN(Highest Response Ratio Next)(響應比R = (等待時間 + 要求執行時間) / 要求執行時間,是FCFS和SJF的折衷)

              3優先級法

              優先級算法(Priority Sched uling)是多級隊列算法的改進,平衡各進程對響應時間的要求。適用于作業調度和進程調度,可分成搶先式和非搶先式。 3.1靜態優先級

              作業調度中的靜態優先級大多按以下原則確定:

              由用戶自己根據作業的緊急程度輸入一個適當的優先級。 由系統或操作員根據作業類型指定優先級。 系統根據作業要求資源情況確定優先級。 進程的靜態優先級的確定原則: 按進程的類型給予不同的優先級。

              將作業的情態優先級作為它所屬進程的優先級。

              3.2動態優先級

              進程的動態優先級一般根據以下原則確定: 根據進程占用有CPU時間的長短來決定。 根據就緒進程等待CPU的時間長短來決定。

              4高響應比優先

              最高響應比優先法(HRN,Highest Response_ratio Next)是對FCFS方式和SJF方式的一種綜合平衡。FCFS方式只考慮每個作業的等待時間而未考慮執行時間的長短,而SJF方式只考慮執行時間而未考慮等待時間的長短。因此,這兩種調度算法在某些極端情況下會帶來某些不便。HRN調度策略同時考慮每個作業的等待時間長短和估計需要的執行時間長短,從中選出響應比最高的作業投入執行。

              響應比R定義如下: R =(W+T)/T = 1+W/T

              其中T為該作業估計需要的執行時間,W為作業在后備狀態隊列中的等待時間。每當要進行作業調度時,系統計算每個作業的響應比,選擇其中R最大者投入執行。這樣,即使是長作業,隨著它等待時間的增加,W / T也就隨著增加,也就有機會獲得調度執行。這種算法是介于FCFS和SJF之間的一種折中算法。由于長作業也有機會投入運行,在同一時間內處理的作業數顯然要少于SJF法,從而采用HRN方式時其吞吐量將小于采用SJF 法時的吞吐量。另外,由于每次調度前要計算響應比,系統開銷也要相應增加。

              5時間片輪轉

              輪轉法(Round Robin)是讓每個進程在就緒隊列中的等待時間與享受服務的時間成正比例。

              將系統中所有的就緒進程按照FCFS原則,排成一個隊列。每次調度時將CPU分派給隊首進程,讓其執行一個時間片。時間片的長度從幾個ms到幾百ms。在一個時間片結束時,發生時鐘中斷。調度程序據此暫停當前進程的執行,將其送到就緒隊列的末尾,并通過上下文切換執行當前的隊首進程。進程可以未使用完一個時間片,就出讓CPU(如阻塞)。

              長度的確定

              時間片長度變化的影響:過長->退化為FCFS算法,進程在一個時間片內都執行完,響應時間長。過短->用戶的一次請求需要多個時間片才能處理完,上下文切換次數增加,響應時間長。對響應時間的要求:T(響應時間)=N(進程數目)*q(時間片)。

              就緒進程的數目:數目越多,時間片越小

              系統的處理能力:應當使用戶輸入通常在一個時間片內能處理完,否則使響應時間,平均周轉時間和平均帶權周轉時間延長。

              6多級反饋隊列

              6.1 多級反饋隊列的原理:

              1、設有N個隊列(Q1,Q2....QN),其中各個隊列對于處理機的優先級是不一樣的,也就是說位于各個隊列中的作業(進程)的優先級也是不一樣的。一般來說,優先級Priority(Q1) > Priority(Q2) > ... > Priority(QN)。怎么講,位于Q1中的任何一個作業(進程)都要比Q2中的任何一個作業(進程)相對于CPU的優先級要高(也就是說,Q1中的作業一定要比Q2中的作業先被處理機調度),依次類推其它的隊列。

              2、對于某個特定的隊列來說,里面是遵循時間片輪轉法。也就是說,位于隊列Q2中有N個作業,它們的運行時間是通過Q2這個隊列所設定的時間片來確定的(為了便于理解,我們也可以認為特定隊列中的作業的優先級是按照FCFS來調度的)。

              3、各個隊列的時間片是一樣的嗎?不一樣,這就是該算法設計的精妙之處。各個隊列的時間片是隨著優先級的增加而減少的,也就是說,優先級越高的隊列中它的時間片就越短。同時,為了便于那些超大作業的完成,最后一個隊列QN(優先級最低的隊列)的時間片一般很大(不需要考慮這個問題)。 6.2多級反饋隊列調度算法描述:

              1、進程在進入待調度的隊列等待時,首先進入優先級最高的Q1等待。

              2、首先調度優先級高的隊列中的進程。若高優先級中隊列中已沒有調度的進程,則調度次優先級隊列中的進程。例如:Q1,Q2,Q3三個隊列,只有在Q1中沒有進程等待時才去調度Q2,同理,只有Q1,Q2都為空時才會去調度Q3。

              3、對于同一個隊列中的各個進程,按照時間片輪轉法調度。比如Q1隊列的時間片為N,那么Q1中的作業在經歷了N個時間片后若還沒有完成,則進入Q2隊列等待,若Q2的時間片用完后作業還不能完成,一直進入下一級隊列,直至完成。

              4、在低優先級的隊列中的進程在運行時,又有新到達的作業,那么在運行完這個時間片后,CPU馬上分配給新到達的作業(搶占式)。

              二、 當前應用現狀

              linux內核的三種調度方法:

              1,SCHED_OTHER 分時調度策略,

              2,SCHED_FIFO實時調度策略,先到先服務3,SCHED_RR實時調度策略,時間片輪轉

              實時進程將得到優先調用,實時進程根據實時優先級決定調度權值,分時進程則通過nice和counter值決定權值,nice越小,counter越大,被調度的概率越大,也就是曾經使用了cpu最少的進程將會得到優先調度。

              SHCED_RR和SCHED_FIFO的不同:

              當采用SHCED_RR策略的進程的時間片用完,系統將重新分配時間片,并置于就緒隊列尾。放在隊列尾保證了所有具有相同優先級的RR任務的調度公平。

              SCHED_FIFO一旦占用cpu則一直運行。一直運行直到有更高優先級任務到達或自己放棄。

              如果有相同優先級的實時進程(根據優先級計算的調度權值是一樣的)已經準備好,FIFO時必須等待該進程主動放棄后才可以運行這個優先級相同的任務。而RR可以讓每個任務都執行一段時間。

              相同點:

              RR和FIFO都只用于實時任務。

            【操作系統讀書工程報告】相關文章:

            國產操作系統典范:deepin操作系統03-12

            操作系統大全04-01

            操作系統原理12-06

            國產的操作系統04-24

            LINUX操作系統05-27

            LINUX操作系統01-22

            操作系統安裝12-20

            操作系統的種類07-07

            計算機操作系統安裝培訓報告03-24

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院