进程控制模块
- 查看进程
- PCB内部构成
- 标识符
-
- 状态
- 优先级
- 查看优先级方式
- 优先级确定原理
- 调整优先级
- nice值范围
- 程序计数器
- 内存指针
- 上下文数据
-
- I/O状态信息
- 记账信息
- 查看进程信息
进程:加载到内存的程序,就叫做进程,系统中会存在大量进程,操作系统要对进程进行管理,操作系统管理进程的方式:先描述再组织,因此任何进程在形成的时候,操作系统要为该进程创建PCB(进程控制块)。
查看进程
ps axj | head -1 && ps axj | grep "test"
该命令可以查看grep关键字的进程状态
PCB内部构成
标识符
标示符(pid): 描述本进程的唯一标示符,用来区别其他进程。
查看标识符函数:getpid,他的返回值类型为pid_t可以认为是整形变量
使用方法:
ppid
ppid:父进程的标识符,获取父进程id函数为getppid()
正常在命令行上运行的程序的父进程都是0号进程bash
状态
PCB中会存储进程的状态信息,例如:任务状态,退出代码,退出信号等
其中,程序中main函数的返回值可以被称为退出码,使用该命令可以查看最近执行进程的退出码
优先级
cpu资源分配的先后顺序,就是指进程的优先权(priority)。 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。
查看优先级方式
ps -l
其中:
UID : 代表执行者的身份
PID : 代表这个进程的代号
PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
PRI :代表这个进程可被执行的优先级,其值越小越早被执行
NI :代表这个进程的nice值
优先级确定原理
PRI即进程的优先级,通俗点说就是程序被CPU执行的先后顺序,此值越小,进程的优先级别越高 。NI就是所要说的nice值了,其表示进程可被执行的优先级的修正数值 PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice 这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行。所以,调整进程优先级,在Linux下,就是调整进程nice值 。
nice其取值范围是-20至19,一共40个级别。
调整优先级
使用top命令来调整优先级
进入top后按“r”–>输入进程PID–>输入nice值
nice值范围
nice其取值范围是-20至19,一共40个级别。为什么要设置一个范围主要是因为优先级再怎么设置,也只能是一种相对的优先级,不能出现绝对的优先级,否则会出现很严重的进程饥饿问题。
程序计数器
程序计数器: 程序计数器有点类似与指针的作用,他指向程序中即将被执行的下一条指令的地址。
内存指针
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据
上下文数据: 进程执行时处理器的寄存器中的数据。
时间片
时间片是指每个进程单次运行的时间。
上下文数据
在单CPU情况下,用户可以感受到多个进程在同时进行,本质是通过cpu的快速切换完成的。
进程在运行期间是有切换的,可能存在大量临时数据,暂时在寄存器中保存,但是cpu只有一套寄存器。
在进行进程切换的时候,寄存器中的临时数据会被保存到PCB中,再次运行的时候会将上次保存的临时数据再给寄存器,这就是保护上下文数据。
通过上下文的保护和恢复我们可以感受到进程是被切换的。
I/O状态信息
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
操作系统中有一个调度模块,用来较为均衡的调度每个进程,更为公平的获得cpu资源。记账信息用来被调度器用来作为分配资源的依据。
查看进程信息
ls /proc/进程标识号
查看当前进程的信息
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)