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(进程描述符)相关推荐

  1. 操作系统:进程控制块PCB

    一.进程控制块的作用: 记录进程信息. 操作系统是根据进程控制块PCB来对并发执行的进程进行控制和管理的. PCB是进程存在的唯一标志. 二.进程控制中的信息: 进程标识符信息--进程标识符用于唯一地 ...

  2. 操作系统之进程控制块PCB

    操作系统之进程控制块PCB PCB的作用: PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程. (1) 作为独立运行基本单位 ...

  3. 线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这

    线程共享的环境: 进程代码段.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯).进程打开的文件描述符.信号的处理器.进程的当前目录和进程用户ID与进程组ID. 进程拥有这许多共性的 ...

  4. Linux中进程间传递文件描述符的方法

    在进行fork调用后,由于子进程会拷贝父进程的资源,所以父进程中打开的文件描述符在子进程中仍然保持着打开,我们很容易的就将父进程的描述符传递给了子进程.但是除了这种情况下,如果想将某个父进程在子进程创 ...

  5. android进程间传递文件描述符原理

    在Linux中,进程打开一个文件,返回一个整数的文件描述符,然后就可以在这个文件描述符上对该文件进行操作.那么文件描述符和文件到底是什么关系?进程使用的是虚拟地址,不同进程间是地址隔离的,如何在两个进 ...

  6. 进程间传递文件描述符--sendmsg,recvmsg(可用)

    UNIX域套接字可以在同一台主机上各进程之间传递文件描述符. 下面先来看两个函数: #include <sys/types.h> #include <sys/socket.h> ...

  7. Linux高级进程编程———在任意两个进程间传递文件描述符:使用 sendmsg 和 recvmsg 实现

    进程间传递打开的文件描述符,并不是传递文件描述符的值.那么在传递时究竟传递了什么?我们要先搞明白这个问题. 1.文件描述符 文件描述符的值与文件没有任何联系,只是该文件在进程中的一个标识,所以同一文件 ...

  8. Linux 进程间传递文件描述符

    文章目录 文件描述符 文件数据结构 共享文件 UNIX域socket实现传递文件描述符 进程间传递打开的文件描述符,并不是传递文件描述符的值.先说一下文件描述符. 文件描述符 对内核来说,所有打开的文 ...

  9. 操作系统-进程控制块PCB

    1.进程实体包括:程序段.数据段.进程控制块PCB: 2.进程控制块是操作系统中最重要的数据结构. PCB是用来记录进程信息的.比如说当CPU执行某程序的时候,当停止执行一段时间后,重新执行的时候如何 ...

最新文章

  1. ICinsights:中国芯片难达成既定的2025目标
  2. POJ-2386-Lake Counting
  3. Appirater -- app中提示用户为app评价的提示框
  4. 【Git】GitHub主页从Dark调回Light的方法
  5. 清华大学崔鹏:因果推断技术最新的发展趋势及在推荐系统中的应用
  6. LVDS之一_理解SerDes
  7. 数据结构C语言版第二版(名师严蔚敏最新力作)人民邮电出版社
  8. JavaScript 开发者的 5 款必备工具
  9. 计算机怎么快捷截图桌面,电脑截图的快捷键是什么_屏幕截图快捷键_怎么截图快捷键-太平洋IT百科手机版...
  10. 常用的几种红外接收器
  11. 什么是支付通道,一篇文章了解支付通道理念
  12. PHP知识一:系统知识总结
  13. java基础提升(六):缓冲流、转换流、序列化流、打印流
  14. 【C语言基础】——6个人摇骰子
  15. Prometheus 监控系统
  16. 整个计算机都在桌面列表里,win10系统桌面东西都不见的三种恢复方法
  17. 雨林木风 GhostXP SP3 2012 08装机版
  18. 亿信华辰入选中国大数据产业一级市场相关厂商图谱
  19. Linux服务器上监控网络带宽的18个常用命令和工具
  20. 百万并发下的Nginx性能优化之道,值得看!!!

热门文章

  1. 2014-08-26 遇到的小问题
  2. 关于在页面中针对不同版本的IE浏览器实现不同的JS或者CSS样式
  3. float与double类型参数区别_8大基本数据类型及包装类,不知道这些点别说自己是大佬...
  4. pytorchyolov4训练_使用pytorch-yolov5 訓練自己的數據集-2020.6.15
  5. java property_property在Java中的用法
  6. c# ef报错_C# EF调用MySql出现“未将对象引用设置到对象的实例”错误解决方案
  7. 手机mstsc远程工具_远程桌面连接,只需3步,轻松远程操控电脑!
  8. cd-rom门锁定什么意思_CD-ROM的完整形式是什么?
  9. C ++ STL中的set :: upper_bound()函数
  10. JavaScript中的String()函数与示例