標籤:多線程 共用 過程 管理 處理 free src 返回 應用
進程:可執行程式是儲存在磁碟裝置上的由代碼和資料按某種格式組織的靜態實體,而進程是可被調度的代碼的動態運行。在Linux系統中,每個進程都有各自的生命週期。在一個進程的生命週期中,都有各自的運行環境以及所需的資源,這些資訊都記錄在各自的進程式控制制塊中,以便系統對這些進程進行有效管理,進程式控制制塊的結構如所示:
每個進程都有各自獨立的虛擬位址空間,空間的大小與所基於的硬體體繫結構有關。虛擬空間中各區代表的意義,程式碼片段儲存指令序列和唯讀資料,多個進程執行個體可共用程式碼片段。資料區段用來存放全域變數和靜態變數。堆地區用於程式的動態記憶體管理,new或者malloc申請的記憶體就位於堆中。棧用來存放進程運行過程中的局部變數,函數返回地址,參數和進程上下文環境。
線程:引入進程是為瞭解決程式並發執行的問題,而引入線程是為了減少程式並發所帶來的時間和空間的開銷,線程是比進程更小的單位,一個進程至少有一個線程,線程是作業系統進行調度的基本單位,線程基本上不佔用系統資源,線程與其他同屬一個進程的線程共用該進程所佔有的資源。
應用編程介面(相關標頭檔和參數類型可通過man命令查看)
進程環境
getuid 獲得當前進程實際使用者ID
geteuid 獲得當前進程有效使用者ID
getgid 獲得當前進程實際使用者組ID
getegid 獲得當前進程有效使用者組ID
getpid 獲得當前進程ID
getppid 獲得父進程ID
getpgrp 獲得進程組ID
setpgid 設定進程組
getsid 獲得進程會話ID
setsid 設定進程會話ID
進程地址空間
malloc 申請記憶體
free 釋放記憶體
brk 設定堆地區大小
進程的建立與終止
fork 建立子進程
exit 終止進程
atexit 註冊終止處理常式
載入可執行二進位映像
exec
進程的同步控制
wait 暫停執行直到一個子進程結束
waitpid 等待指定子進程結束
線程
1. pthread_equal //判斷線程是否相同
2. pthread_self //返回調用線程的ID
3. pthread_create //建立線程
4. pthread_exit //退出線程
5. pthread_join //啟動線程
6. pthread_cancel //取消線程
7. pthread_cleanup_push
8. pthread_cleanup_pop
9. pthread_detach
10. pthread_mutex_init
11. pthread_mutex_destroy
總結:這一部分,間短介紹了linux下多進程和多線程的相關概念,並介紹了編程時使用的一些api,多進程編程和多線程編程的執行個體放在下一部分介紹。
Linux 多進程多線程相關概念