Linux系統編程-進程概念、進程管理、信號處理

      網友投稿 767 2025-04-03

      1. 進程知識點

      操作系統里的進程是程序一次執行的過程,是操作系統動態執行的基本單元;每當創建新的進程后,操作系統會為新的進程分配一個唯一的標識符,方便后續管理進程。

      進程的概念主要有兩點:

      第一,進程是一個實體。每個進程都有自己的虛擬地址空間,包括文本區、數據區、和堆棧區。文本區域存儲處理器執行的代碼;數據區存儲變量和動態分配的內存;堆棧區存儲著活動進程調用的指令和本地變量。

      第二,進程是一個“執行中的程序”,它和程序有本質區別。程序是靜態的,它是一些保存在磁盤上的指令的有序集合;而進程是一個動態的概念,它是一個運行著的程序,包含了進程的動態創建、調度和消亡的過程,是Linux的基本調度單位。只有當處理器賦予程序生命時,它才能成為一個活動的實體,稱之為進程。

      Linux在命令行上可以用ps命令查看后臺運行的進程詳細信息。

      2. 查看可執行文件的內部空間布局

      進程是動態的(內存里的)、程序是靜態的_a.out(硬盤上)。

      Linux下進程都是運行在虛擬地址空間的—MMU。每個進程的空間是獨立的(物理地址)。

      [wbyq@wbyq linux_c]$ gcc app.c [wbyq@wbyq linux_c]$ ls a.out app.c shell.sh [wbyq@wbyq linux_c]$ ./a.out [wbyq@wbyq linux_c]$ size a.out text data bss dec hex filename 960 248 8 1216 4c0 a.out text :文本段. 程序里存放邏輯代碼的大小. if while .... data :數據段. 程序里已經初始化過的全局變量和靜態變量的大小. bss :BSS段. 程序里未初始化的全局變量和靜態變量的大小. dec :十進制格式的程序總大小 hex :十六進制格式的程序總大小 filename :文件的名稱

      3. 進程前臺與后臺切換方式

      [wbyq@wbyq linux_c]$ ./a.out & 后臺運行 [1] 14705 [wbyq@wbyq linux_c]$ jobs 查看后臺運行的進程 [1]+ Running ./a.out & [wbyq@wbyq linux_c]$ fg 1 將后臺進程切換到前臺 ./a.out ^Z [1]+ Stopped ./a.out [wbyq@wbyq linux_c]$ jobs [1]+ Stopped ./a.out [wbyq@wbyq linux_c]$ bg 1 將后臺停止的進程變為執行狀態 [1]+ ./a.out & [wbyq@wbyq linux_c]$ jobs [1]+ Running ./a.out & [wbyq@wbyq linux_c]$ fg 1 ./a.out

      4. kill命令

      4.1 查看合法信號

      Kill命令是給進程發送信號. 當前系統可以發送的合法信號有哪些? 通過kill -l

      [wbyq@wbyq linux_c]$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX

      4.2 如何發送信號?

      kill [-s signal|-p] [--] pid... kill -l [signal] 用法: kill -s <信號> <進程PID> kill -信號 <進程PID> [wbyq@wbyq linux_c]$ ps PID TTY TIME CMD 9877 pts/0 00:00:01 bash 14983 pts/0 00:00:01 a.out 14984 pts/0 00:00:00 ps [wbyq@wbyq linux_c]$ kill -s 2 14983

      4.3 C語言程序如何捕獲信號?

      #include #include #include void sighandler(int sig) { printf("sig=%d\n",sig); exit(0); } int main() { signal(SIGINT,sighandler); while(1) { } return 0; }

      Linux系統編程-進程概念、進程管理、信號處理

      5. ps命令

      [wbyq@wbyq linux_c]$ ps -aux Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2880 1432 ? Ss Aug16 0:06 /sbin/init root 2 0.0 0.0 0 0 ? S Aug16 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Aug16 0:03 [migration/0] root 4 0.0 0.0 0 0 ? S Aug16 0:18 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S Aug16 0:00 [migration/0] root 6 0.0 0.0 0 0 ? S Aug16 0:07 [watchdog/0] root 7 0.0 0.0 0 0 ? S Aug16 0:05 [migration/1] root 8 0.0 0.0 0 0 ? S Aug16 0:00 [migration/1] root 9 0.0 0.0 0 0 ? S Aug16 0:20 [ksoftirqd/1] root 10 0.0 0.0 0 0 ? S Aug16 0:14 [watchdog/1] root 11 0.0 0.0 0 0 ? S Aug16 0:46 [events/0] root 12 0.0 0.0 0 0 ? S Aug16 1:18 [events/1] USER: 啟動該進程的用戶賬號名稱 PID: 該進程的 ID 號,在當前系統中是唯一的 %CPU: CPU 占用的百分比 %MEM: 內存占用的百分比 VSZ: 占用虛擬內存(swap 空間)的大小 RSS: 占用常駐內存(物理內存)的大小 TTY: 該進程在哪個終端上運行。 “? ”表未知或不需要終端 STAT: 顯示了進程當前的狀態。 D 不可中斷的休眠。通常是 IO。 R 運行。正在運行或者在運行隊列中等待。 S 休眠。在等待某個事件,信號。 T 停止。進程接收到信息 SIGSTOP, SIGSTP, SIGTIN, SIGTOU 信號。 X 死掉的進程,不應該出現。 Z 僵死進程。 通常還會跟隨如下字母表示更詳細的狀態。 < 高優先級 N 低優先級 L 有 pages 在內存中 locked。用于實時或者自定義 IO。 s 進程領導者,其有子進程。 l 多線程 + 位于前臺進程組。 START: 啟動該進程的時間. TIME: 進程使用的總 CPU 時間 COMMAND: 啟動該進程的命令的名稱

      Linux 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps2019怎么刪除重復數據?wps2019刪除重復項教程
      下一篇:薄膜表面瑕疵檢測設備與人類視覺相比有什么優勢
      相關文章
      蜜芽亚洲av无码精品色午夜| 亚洲白色白色在线播放| 亚洲日韩中文字幕| 亚洲AV无码专区国产乱码4SE| 亚洲精品无码av天堂| 亚洲AV日韩AV无码污污网站| 中文字幕亚洲综合小综合在线 | 亚洲国产成人久久笫一页| 亚洲av无码专区在线电影天堂| 亚洲中文字幕无码mv| 亚洲午夜国产精品无卡| 亚洲男女性高爱潮网站| 亚洲精品偷拍无码不卡av| 亚洲沟沟美女亚洲沟沟| 亚洲精彩视频在线观看| 亚洲大片免费观看| 亚洲国产日产无码精品| 亚洲一区二区三区四区视频| 亚洲一区二区三区免费在线观看| 激情综合亚洲色婷婷五月APP| 97久久国产亚洲精品超碰热| 国产亚洲精aa在线看| 亚洲欧美日韩一区二区三区| 国产精品无码亚洲精品2021 | 亚洲欧美乱色情图片| 亚洲狠狠婷婷综合久久| 国产亚洲人成在线影院| www国产亚洲精品久久久| 亚洲国产中文字幕在线观看| 中文字幕亚洲综合久久菠萝蜜| 伊人久久大香线蕉亚洲 | 亚洲av永久无码精品天堂久久| 亚洲人成日本在线观看| 亚洲一区电影在线观看| 亚洲国产精品无码中文lv| 夜色阁亚洲一区二区三区| 国产亚洲精品看片在线观看| 亚洲国产精品SSS在线观看AV| 亚洲综合一区二区国产精品| 亚洲a级在线观看| 亚洲av永久无码|