日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进程控制块PCB(进程描述符)

發布時間:2023/11/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程控制块PCB(进程描述符) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1PCB

每個進程在內核中都有一個進程控制塊(PCB)來維護進程相關的信息,Linux內核的進程控制塊是task_struct結構體。grep -r “task_struct” /? 可以查找根目錄下,包含task_struct的文件文件。或者 find /usr -name sched.h。從而,在/usr/include/linux/sched.h文件中可以查看struct task_struct 結構體定義。其內部成員有很多,我們重點掌握以下部分即可:

(1)進程id。系統中每個進程有唯一的id,在C語言中用pid_t類型表示,其實就是一個非負整數

(2)進程的狀態,有就緒、運行、掛起、停止等狀態。

(3)進程切換時需要保存和恢復的一些CPU寄存器的值。

(4)描述虛擬地址空間的信息(如虛擬地址與物理地址之間的映射關系)。

(5)描述控制終端的信息(桌面終端、文字終端和設備終端,pts/0或者tty0等)。

(6)當前工作目錄(當前進程的工作目錄)。

(7)umask掩碼(對文件的一種保護機制,文件權限)。

(8)文件描述符表,包含很多指向file結構體的指針。

(9)和信號相關的信息。

(10)用戶id和組id。

(11)會話(Session)和進程組(功能相似的一些進程組成一個進程組)。

(12)進程可以使用的資源上限(Resource Limit)。(ulimit –a命令可以查看)

2ulimit命令詳解

ulimit -a命令用來顯示各種進程能夠使用的資源上限(顯示并控制shell啟動的程序或進程所能夠使用的資源上限,ulimitshell內建命令),Linux對于每個用戶,系統限制其最大進程數,為提高性能,可以根據設備資源情況,設置個Linux用戶的最大進程數,一些參數需要設置為無限制,如:數據段長度:ulimit -d unlimited???? 最大內存大小:ulimit -m unlimited????? 堆棧大小:ulimit -s unlimited

在用這個命令的時候主要是為了產生core文件,就是程序運行發行段錯誤時的文件:ulimit -c unlimited??? 從而產生core文件。

[root@localhost ~]# ulimit -a

core file size????????? (blocks, -c) 0

data seg size?????????? (kbytes, -d) unlimited

scheduling priority???????????? (-e) 0

file size?????????????? (blocks, -f) unlimited

pending signals???????????????? (-i) 14473

max locked memory?????? (kbytes, -l) 64

max memory size???????? (kbytes, -m) unlimited

open files????????????????????? (-n) 1024

pipe size??????????? (512 bytes, -p) 8

POSIX message queues???? (bytes, -q) 819200

real-time priority????????????? (-r) 0

stack size????????????? (kbytes, -s) 8192

cpu time?????????????? (seconds, -t) unlimited

max user processes????????????? (-u) 14473

virtual memory????????? (kbytes, -v) unlimited

file locks????????????????????? (-x) unlimited

如果需要修改open files (-n) 1024的值,命令就是limit -n 2048(隨各自需要設置),其余類似。

參數解釋:

?? -a  顯示目前資源限制的設定。?
???? ? -c <core文件上限>  設定core文件的最大值,單位為區塊。?
?? ????-d <數據節區大小>  程序數據節區的最大值,單位為KB。?
??? ?? -f <文件大小>  shell所能建立的最大文件,單位為區塊。?
???? ? -H  設定資源的硬性限制,也就是管理員所設下的限制。?
???? ? -m <內存大小>  指定可使用內存的上限,單位為KB。?
?????? -n <文件數目>  指定同一時間最多可開啟的文件數。?
????? ?-p <緩沖區大小>  指定管道緩沖區的大小,單位512字節。?
????? ?-s <堆疊大小>  指定堆疊的上限,單位為KB。?
????? ?-S  設定資源的彈性限制。?
????? ?-t <CPU時間>  指定CPU使用時間的上限,單位為秒。?
????? ?-u <程序數目>  用戶最多可開啟的程序數目。?
????? ?-v <虛擬內存大小>  指定可使用的虛擬內存上限,單位為KB。

3)進程狀態

進程基本的狀態有5種。分別為初始態(創建),就緒態,運行態,掛起態與終止態。其中初始態為進程準備階段,常與就緒態結合來看。

?

總結

以上是生活随笔為你收集整理的进程控制块PCB(进程描述符)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。