微吼云上線多路互動直播服務 加速多場景互動直播落地
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
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小時內刪除侵權內容。