Linux操作系统的进程管理
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.进程相关概念
1>.进程概述
内核的功用:
进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
Process:
运行中的程序的一个副本,是被载入内存的一个指令集合
进程ID(Process ID,PID)号码被用来标记各个进程
UID、GID、和SELinux语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
存在生命周期
task struct:
Linux内核存储进程信息的数据结构格式
task list:
多个任务的的task struct组成的链表
进程创建:
init:第一个进程
进程:都由其父进程创建,父子关系,CoW
fork(), clone()
2>.用户和内核空间
3>.进程,线程和协程
4>.进程的基本状态和转换
进程的基本状态 创建状态: 进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态 就绪状态: 进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行 执行状态: 进程处于就绪状态被调度后,进程进入执行状态 阻塞状态: 正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用 终止状态: 进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行 状态之间转换六种情况 运行——>就绪: (1)主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的; (2)在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态 就绪——>运行: 运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU 运行——>阻塞: 正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求 阻塞——>就绪: 进程所等待的事件已经发生,就进入就绪队列 以下两种状态是不可能发生的: 阻塞——>运行: 即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取 就绪——>阻塞: 就绪态根本就没有执行,谈不上进入阻塞态
5>.进程优先级
二.进程及系统相关工具
原文:https://www.cnblogs.com/yinzhengjie/p/11879987.html