★程序相關概念
(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...