論 程序 相關操作

2021-07-16 09:39:34 字數 1804 閱讀 2782

★程序相關概念

(1)程序:是乙個能夠分配處理器並由處理器執行的,能夠攜帶資源的活動實體。

(2)程序控制塊(pcb):每乙個程序中都有唯一的乙個程序控制塊來儲存程序的相關資訊,實際pcb就是乙個task_struct的結構體。具體的見

(3)程序狀態:程序是乙個活動實體,並不代表程序是一直處於執行狀態,乙個程序可以有很多種狀態。

△r(running)表示執行狀態

△s(sleeping)表示可喚醒睡眠狀態

△d(disk sleep)表示不可喚醒的睡眠狀態

△t(stopped)表示暫停狀態

△t(tracing stop)表示終止狀態

△x(dead)表示死亡狀態

△z(zombie)表示殭屍狀態

★程序建立執行

程序的建立有兩種方法:fork()和execve()。兩者都是建立的程序都是執行程序的子程序,建立後的子程序會得到父程序中的資料段、棧段、堆區域的乙份拷貝,這些子程序都是可以對其進行更改的,但是文字段是兩者共享的,不能被子程序進行修改。

下面是fork的使用方法:

執行結果:

★程序終止

程序終止有以下幾種方式:

(1)從main函式返回

(2)呼叫exit函式

(3)呼叫_exit或_exit;

(4)最後乙個執行緒從啟動例程返回

(5)最後乙個執行緒呼叫pthread_exit;

(6)呼叫abort函式

(7)接到乙個訊號並終止

(8)最後乙個執行緒對取消請求做出相應

前5種為正常終止,後三種為異常終止。從main函式中return退出為程序退出,因為沒有在繼續執行的**,但是在程式中間的任何位置return,不算是程序退出,只能算是程式呼叫結束。

exit返回:

exit()還讓return系統會強制重新整理緩衝區,檔案描述符

_exit()強制直接結束,不需要管其餘的東西

_exit()和_exit是相同的 

★exit函式與atexit函式

(1)exit、atexit函式定義

標頭檔案:#include 標頭檔案:#include

void exit(int status);                                int atexit(void (*fun)(void));

乙個程序可以登記若干個函式,這些函式由exit自動呼叫,這些函式被稱為終止處理函式,atexit函式就可以登記這些函式。exit呼叫終止處理函式的順序和atexit登記的順序是相反的,如果乙個函式可以被多次的登記,也可以被多次的呼叫。

執行結果:

★棧幀

1.堆疊

堆疊是c語言以及其他語言執行時必須使用的一塊空間,它的主要作用是函式呼叫、傳遞引數、儲存返回位址、提供區域性變數空間的。

①堆需要程式設計師自己申請,並且需要顯示的進行釋放,申請和釋放必須是成對出現的,要不然就會出現記憶體洩漏,因為堆上的空間生命週期都是一直存在,直到手動進行釋放。而棧是系統自動進行分配的,**也是程序執行結束時系統自動**。

②堆的空間較大,棧的空間小,一般申請大的記憶體都在堆上。

2.棧幀的詳細解釋:

程序相關操作

python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源 os.cpu count 檢視 在python中大部分情況需要使用多程序。python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組...

程序的相關操作

shellexecute 進行程序的建立,屬於 shell api int iret int shellexecute m hwnd,t open t notepad.exe t c 123.txt null,sw show int iret int shellexecute m hwnd,t op...

Linux系統基礎 程序相關操作

程序與程式 程式 儲存在磁碟上的檔案,包含可執行指令和資料的靜態實體 程序 執行中的程式 乙個程式可以執行多次,載入出多個程序 程序就是處於活動狀態的電腦程式 程序的分類 互動程序 有輸入有輸出。使用者可以根據自己的情況輸入資料,得到想要的結果 一般程序 批處理程序 由指令碼載入執行的程式 linu...