作業系統中程序概念的理解
提 起程序這個概念,讓很多經常使用計算機的人感到陌生,其實我們經常和它打交道,只要在計算機上執行乙個程式,相應的乙個程序就誕生了,而且它伴隨著整個操 作過程,直到程式終止。程序在作業系統中是乙個非常抽象、非常重要、非常難以理解的概念。對程序概念的深入透徹的理解,有助於理解作業系統中的各種機制原 理。
為什麼要引入程序概念
提 起程式這個概念,大家再也熟悉不過了,程式與程序概念是不可分的。程式是為了完成某項任務編排的語句序列,它告訴計算機如何執行,因此程式是需要執行的。 程式執行過程中需要占有計算機的各種資源才能執行下去。如果任一時刻,系統中只有一道程式,即單道程式系統,程式則在整個執行過程中獨佔計算機全部資源, 整個程式執行的過程就非常簡單了,管理起來也非常容易。就象整個一套房子住了乙個人,他想看電視就看電視,想去衛生間就去衛生間,沒人和他搶占資源。但為 了提高資源利用率和系統處理能力,現代計算機系統都是多道程式系統,即多道程式併發執行。程式的併發執行帶來了一些新的問題,如資源的共享與競爭,它會改 變程式的執行速度。就象多個人同時住一套房子,當你想去衛生間的時候,如果此時衛生間裡有人,你就得等待,影響了你的生活節奏。如果程式執行速度不當,就 會導致程式的執行結果失去封閉性和可再現性,這是我們不希望看到的。因此應該採取措施來制約、控制各併發程式段的執行速度。由於程式是靜態的,我們看到的 程式是儲存在儲存介質上的,它無法反映出程式執行過程中的動態特性,而且程式在執行過程中是不斷申請資源,程式作為共享資源的基本單位是不合適的,所以需 要引入乙個概念,它能描述程式的執行過程而且可以作為共享資源的基本單位,這個概念就是程序。
程序的生命週期
進 程和人一樣是有生命的,從誕生到死亡要經歷若干個階段。一般說來程序有三種狀態:就緒、執行、等待。由多種原因可以導致建立乙個程序,例如乙個程式從外存 調入記憶體開始執行,作業系統就要為其建立程序,當然還可以有其它原因,如乙個應用程序為完成乙個特殊的任務,可以自己建立乙個子程序。程序被建立後就是在 記憶體中,處於就緒狀態,所謂就緒狀態就是具備除了
cpu之外的所有資源,萬事具備,只欠東風,一旦占有了
cpu,就變成了執行狀態,執行中如果需要等待外圍裝置輸入資料,則程序就淪落為等待狀態,作業系統又會從就緒狀態佇列中排程乙個程序占有
cpu。等到資料到來後,等待狀態的程序又被喚醒成為就緒狀態。這些狀態的轉換是通過程序控制原語實現的。程式的執行是通過程序體現的,作業系統對程序進行管理和控制,那麼作業系統怎麼了解到程序的狀態呢,怎麼把資源分配給程序呢,而且程序做狀態轉換時
cpu現場儲存在那呢?這要說到
pcb(程序控制快)。
pcb是程序的唯一標誌,在其中記錄了程序的全部資訊,它是一種記錄型的資料結構,相當於程序的檔案。作業系統就通過
pcb感知程序的存在,通過
pcb了解程序和控制程序的執行。
pcb也是放在記憶體中的,如果
pcb太大,有些系統把
pcb中一些不重要的資訊放在外存中。
程序執行速度的制約
並 發程序由於共享系統內部資源,因此導致程序執行速度上的制約,這種制約分為:間接制約與直接制約。間接制約引起程序之間的互斥執行,直接制約引起程序間的 同步執行。例如乙個家裡如果只有乙個衛生間,衛生間這個公有資源使得每個人只能互斥使用它,這就是間接制約。而直接制約是指併發程序各自執行的結果互為對 方的執行條件,例如司機與售票員的關係,當司機到站停車後,售票員才能開門,而只有售票員關門後,司機才能開車,他們之間是同步的。程序的互斥與同步可以 很好的通過訊號量和
pv原語來實現。通過讀一些同步與互斥的例子,你會體會到
pv原語的精妙,也會感到一種樂趣。併發程序的資源競爭不當還會導致死鎖現象。
作業系統中程序的實現
程序控制結構體 pcb 用來管理程序 struct tack struct struct mm struct 用於保留現場 struct thread struct 在linux核心中,將task truct結構體和程序的核心層棧空間融為一體,低位址存放task struct結構體,餘下的存放程序的...
作業系統 程序概念
程序是具有獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的獨立單位 1 程序是程式的一次執行過程,是對cpu的抽象,是正在執行的程式的抽象 2 每個程序具有獨立的位址空間 3 作業系統通過排程將cpu的控制權交給某個程序 又稱程序描述符,程序屬性,是作業系統用於管理控制程序...
作業系統 程序概念
三 pcb包含哪些資訊 四 程序狀態及狀態轉換 五 程序的特性 六 程序佇列 七 上下文切換 程序是具有獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的獨立單位 動態性 獨立性 併發性是程序的三大特性。在程式執行的過程中,它的狀態是在不斷變化的。例如乙個程式在執行過程中,它...