进程概念
内核的功用:
进程管理、文件系统、网络功能、内存管理、驱动管理、安全功能等
Process:
运行中的进程的一个副本,是被载入内存的一个指令集合
- 进程ID(Process ID,PID)号码被用来标记各个进程
- UID、GID和SELinux语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承
- 存在生命周期
task struct:
Linux内核存储进程信息的数据结构格式
task list:
多个任务的task struct组成的链表
进程内存:
- Page Frame:页框,用存储页面数据,存储Page 4k
- LRU:Least Recently Used 近期最少使用算法,释放内
- 存物理地址空间和线性地址空间
- MMU:Memory Management Unit 负责转换线性和物理地址
- TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存
IPC:Inter Process Communication 进程间通讯
- 同一主机:
- signal:信号
- shm:shared memory 共享内存
- semaphore:信号量,一种计数器
- 不同主机:
- socket:IP和端口号
- RPC:Remote Procedure Call 远程过程调用
- MQ:消息队列,Kafka,ActiveMQ
进程创建:
- init:第一个进程
父子关系 - 进程:都由其父进程创建,CoW
fork(),clone()
进程状态
- Linux内核:抢占式多任务
进程类型:
- 守护进程:daemon,在系统引导过程中启动的进程,和终端无关进程
- 前台进程:跟终端相关,通过终端启动的进程
注意:两者可相互转化
进程状态:
- 运行态:running
- 就绪态:ready
- 睡眠态:
- 可中段:interruptable
- 不可中断:uninterruptable
- 停止态:stopped,暂停于内存,但不会被调度,除非手动启动
- 僵死态:zombie,结束进程,父进程结束前,子进程不关闭
进程的基本状态和转换
进程的基本状态和转换.jpg- 创建状态:进程在创建时需要申请一个空白PCB(Process Control Block)进程控制块,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
- 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
- 执行状态:进程处于就绪状态被调度后,进程进入执行状态
- 阻塞状态:正则执行的进程由于某些事件(I/O请求,申请缓冲区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
- 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
状态之间转换六种情况
- 运行 --> 就绪:
- 主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;
- 在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态。
- 就绪 --> 运行:
运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU - 运行 --> 阻塞:
正在执行的进程因发生某等待时间而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求 - 阻塞 --> 就绪:
进程所等待的事件已经发生,就进入就绪队列
以下两种状态是不可能发生的
- 阻塞 --> 运行:
即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取 - 就绪 --> 阻塞:
就绪态根本就没有执行,谈不上进入阻塞态
进程优先级
优先级:
-
系统优先级:数字越小,优先级越高
0-139(CentOS 4,5)
各有140个运行队列和过期队列
0-98,99(CentOS 6及之后) - 实时优先级:99-0,值最大优先级最高
- nice 值:-20到19,对应系统优先级100-139或99
Big O:时间复杂度,用时和规模的关系
O(1)理想值,O(logn)慢速增长,O(n)线性增长,O(n^2)抛物线,O(2^n)指数型
网友评论