1. 程式人生 > 其它 >2.1 動為程序,靜為程式 -程序概論 -《zobolの作業系統學習札記》

2.1 動為程序,靜為程式 -程序概論 -《zobolの作業系統學習札記》

2.1 動為程序,靜為程式 -程序概論

問1:發明程序的原因?

早在20世紀60年代,程序的思想就已經被IBM的工程師們構想出來,並且一直延續到今天。當時的計算機面臨著,一段時間內要輪轉併發執行多個任務的要求,這要求各個程式之間佔據的記憶體空間互不干擾,程式通過統一的程式編號進行訪問控制。

但是在編寫作業系統的時候,我們不可能預料到未來會有什麼樣程式執行在它之上(什麼樣都有可能)。所以我們必須給所有執行在作業系統上的程式,再封裝一次,讓它們擁有一些共性

,這樣才能藉此進行各種後續排程機制的設計。

程序是為了解決程式併發性和資源共享性而發明的。


問2:現在計算機中的程序的定義是什麼?

程序Process,就是程式執行的過程。

對於程序的定義的含義,我們可以從多個角度進行理解:

  • 程序可以看作是對處理器上執行程式的活動規律一種抽象
  • 程序可以看作是一種資料結構,他對程式執行過程進行封裝。
  • 程序是作業系統設計的最小獨立實體,擁有自己記憶體空間和分配的計算力。
  • 程序就是作業系統中的一項任務作業,負責一件事情。
    (我本人認為第一種定義更形象)

可見程序強調的是執行的過程,如果把程式看作是一道數學題,程序表示的就是做題的過程(開始、暫停、做完、放棄)。程序跟處理器CPU的聯絡遠大於

跟程式的聯絡。


問3:為什麼程序跟處理器的聯絡更密切?

雖然程序是由程式創造出來的,但是在程式創造完程序後,程序跟程式就沒有關係了。

 作業系統更關心的是程序跟處理器的關係。

因為程序就相當於做事情,管理者更關心的肯定是做事的人和事情的關係。

從另外一個角度來看,程式在作業系統眼裡,本質就是儲存在硬碟上的一個二進位制陣列,根本不需要投入精力去管理。

但是程序卻是實時執行在記憶體中的過程,時刻渴求著CPU給予足夠的計算力,作業系統必須掌控住它的狀態,因為CPU的算力同一時刻只能給一個程序。


問4:程序的主要特性有哪些?

  • 記憶體空間獨立,程序只能訪問自己的記憶體空間和一些公用暫存器,絕對不能訪問別的
    程序的記憶體空間。
  • 程序是動態的,當我們對待一個程序,一定要考慮它此時的狀態。是在使用處理器還是在等待處理器。
  • 兩個由相同程式創造出來的程序,其記憶體空間依然是獨立的,不能互相訪問。
  • 每個程序都有自己的獨立編號,不會重複。


問5:程序的主要狀態:

注意:確定程序的狀態,是考試和學習的重點
  • 建立:程式從硬碟拷貝一份到記憶體變成程序,需要CPU執行
  • 執行:程序在被CPU執行
  • 等待:等待某些外部操作(I/O資料輸入、訊號),此時不被分配處理器
  • 就緒:等待操作結束,但還未被分配CPU的狀態。
  • 終止:程式完成執行,或被作業系統強制登出,釋放佔據記憶體空間。

``` 程序是作業系統學習的核心,是後續一切學習的基礎,一定要多思考。 關鍵要理解兩點 擁有獨立的記憶體空間、跟CPU的五種狀態 ```

歡迎訪問:個人部落格-zobolの計算機作業系統學習札記