1.什麼是程序?
從書本上的哲學概念來解釋程序就是正在執行的程式。從另一方面作業系統如何管理記憶體來解釋,首先需要知道程序的描述。比如在學校,我們作為學生要被管理起來,首先需要被各種資訊進行描述起來(學號、姓名、班級等等),描述學生的就相當於是結構體。同樣程序需要被管理起來也需要先被描述起來,描述程序的結構叫做pcb,其中對於linux中描述結構體的叫task_struct。對於task_struct,它描述程序包含三方面的東西:
(1)身份標識碼(程序id):用來表示具體的哪個程序,同一臺主機上的各個程序之間的程序id是不同的;
(2)記憶體指標:**和**依賴的資料,標明**在記憶體的哪個地方;
(3)輔助作業系統進行程序排程的屬性:
a.優先順序,決定了程序被排程到cpu上執行的優先順序;
b.上下文資訊,儲存了該程序上次在cpu內部執行的現場;
c.記賬資訊,決定程序什麼時候需要占用cpu,什麼時候需要放棄cpu,具體的量化指標就是記賬資訊。
對於上下文資訊更加詳細的解釋:
cpu:一組暫存器(eax,esp,ebp,eip)---->執行**是在cpu中執行的,將記憶體中的**取到cpu中進行執行,對於暫存器,它的訪問速度最快但是空間小
記憶體---->當cpu去執行其他的程序的時候,需要將當前程序的上下文資訊(在cpu的一組暫存器中)拷貝到記憶體中,等到下次輪到該程序執行的時候就恢復原狀態,可以接著上次執行的地方進行**的執行。
2.對於shell、bash的理解
shell:媒婆---->作業系統與使用者之間的橋梁
bash:王媒婆---->特定的指某個橋梁,即在centos上使用者與作業系統之間的橋梁。
3.程序的生命週期
首先我們需要從馮諾依曼體系結構來進行理解程序的生命週期。
比如我們執行乙個./hello的**
cpu(執行程式的)
記憶體(hello的**和資料)----------------------------->當敲下./hello時就會將hello的東西對應的寫(拷貝)到記憶體中
磁碟(hello(檔案)可執行程式)--------------------->當把磁碟裡的hello刪除時,記憶體中的hello**以及相關的資料仍然存在,所以程序不會消失(程序是在將東西寫進記憶體時建立的)
Linux程序1 程序的概念
1 什麼是程序 乙個正在執行的程式就是乙個程序 2 併發 並行 非同步 同步 臨界區 併發 針對乙個處理器,看起來同時進行。乙個處理器在同一時刻只能執行乙個程式,但是cpu在多個程序之間快速切換,所以看起是同時進行的。這是一種假象 並行 針對多個處理器,一台機器上有多個處理器,那麼程序就有可能同時執...
程序1 程序概念以及使用process完成多程序
程序概念 程序的狀態 使用process完成多程序 什麼叫做資源,比如網路攝像頭,鍵盤,滑鼠這些硬體東西。程式只有乙個,但這個程式的程序可以有很多個。工作中,任務數往往大於cpu的核數,即一定有一些任務正在執行。而另外一些任務在等待cpu進行執行,因此導致了有了不同的狀態。程序有3種狀態 接下來放乙...
C 之程序與執行緒程式設計(1)概念
一 進行多工處理一般有兩種型別 基於程序和基於執行緒 1 基於程序的多工處理是程式的併發執行。2 基於執行緒的多工處理是同一程式的片段的併發執行 三 在linux和在window下的程序和執行緒的建立使用函式是不一樣的,比如建立程序,linux下是fork win下的是createprocess 接...