2.1 動為程序,靜為程式 -程序概論 -《zobolの作業系統學習札記》
阿新 • • 發佈:2021-08-16
2.1 動為程序,靜為程式 -程序概論
問1:發明程序的原因?
早在20世紀60年代,程序的思想就已經被IBM的工程師們構想出來,並且一直延續到今天。當時的計算機面臨著,一段時間內要輪轉併發執行多個任務的要求,這要求各個程式之間佔據的記憶體空間互不干擾,程式通過統一的程式編號進行訪問控制。
但是在編寫作業系統的時候,我們不可能預料到未來會有什麼樣程式執行在它之上(什麼樣都有可能)。所以我們必須給所有執行在作業系統上的程式,再封裝一次,讓它們擁有一些共性
程序是為了解決程式併發性和資源共享性而發明的。
問2:現在計算機中的程序的定義是什麼?
程序Process,就是程式執行的過程。
對於程序的定義的含義,我們可以從多個角度進行理解:
- 程序可以看作是對處理器上執行程式的活動規律的一種抽象。
- 程序可以看作是一種資料結構,他對程式執行過程進行封裝。
- 程序是作業系統設計的最小獨立實體,擁有自己記憶體空間和分配的計算力。
- 程序就是作業系統中的一項任務作業,負責一件事情。
(我本人認為第一種定義更形象)
可見程序強調的是執行的過程,如果把程式看作是一道數學題,程序表示的就是做題的過程(開始、暫停、做完、放棄)。程序跟處理器CPU的聯絡遠大於
問3:為什麼程序跟處理器的聯絡更密切?
雖然程序是由程式創造出來的,但是在程式創造完程序後,程序跟程式就沒有關係了。
作業系統更關心的是程序跟處理器的關係。
因為程序就相當於做事情,管理者更關心的肯定是做事的人和事情的關係。
從另外一個角度來看,程式在作業系統眼裡,本質就是儲存在硬碟上的一個二進位制陣列,根本不需要投入精力去管理。
但是程序卻是實時執行在記憶體中的過程,時刻渴求著CPU給予足夠的計算力,作業系統必須掌控住它的狀態,因為CPU的算力同一時刻只能給一個程序。
問4:程序的主要特性有哪些?
- 記憶體空間獨立,程序只能訪問自己的記憶體空間和一些公用暫存器,絕對不能訪問別的
- 程序是動態的,當我們對待一個程序,一定要考慮它此時的狀態。是在使用處理器還是在等待處理器。
- 兩個由相同程式創造出來的程序,其記憶體空間依然是獨立的,不能互相訪問。
- 每個程序都有自己的獨立編號,不會重複。
問5:程序的主要狀態:
注意:確定程序的狀態,是考試和學習的重點
- 建立:程式從硬碟拷貝一份到記憶體變成程序,需要CPU執行。
- 執行:程序在被CPU執行。
- 等待:等待某些外部操作(I/O資料輸入、訊號),此時不被分配處理器。
- 就緒:等待操作結束,但還未被分配CPU的狀態。
- 終止:程式完成執行,或被作業系統強制登出,釋放佔據記憶體空間。