进程的概念:
可以定义为:可并发执行的程序在一个数据集合上的运行过程。进程可以申请和拥有系统资源。传统操作系统中,进程是一个可以独立调度的基本单位(现代操作系统中为线程)。进程是一个动态的概念,它是“活的”,它有产生、运行、消亡的过程。进程与程序不是等同概念,程序是一个静态的概念,是指令和数据的集合,作为一种文件可长期存放在存储介质中。
进程的相关概念:父子关系 进程状态 优先级
1、进程状态:
task_uninterruptible:不可中断睡眠 mkdir:系统调用,硬件:I/O 1ms
task_interruptible:可中断睡眠
stopped:停止状态(不能被调入CPU运行)
zombie:僵尸状态(结束父进程才能够退出当前进程的僵尸状态):进程运行完成后没有释放CPU和内存资源
2、进程优先级:
0-139数字,共140个优先级,数字越小,优先级越高
0-99:系统分配优先级(用户不可控优先级)
100-139:nice值 (用户可控优先级);-20到19;root用户可以任意调整nice值;普通用户只能调整0-19
高优先级进程:获取更多的CPU运行时长,更优先的让CPU执行
进程的特性:
动态性
并发性
独立性
异步性
CPU分环运行:
0环:特权环,运行内核
1-2环:库文件
3环:进程环
task struct:进程的数据结构(存放在内存的内核空间中),相当于进程控制块
task struct结构:状态 进程信息和内核栈 运行列表(指令等) MM(内存管理):memory mangement PID:进程ID号 群组信息 用户信息 文件系统 文件描述符等,同时也维护页表寄存器
进程内存结构:
forbidden:内核空间
program text:指令
data+bss:全局变量
heap:堆空间,进程运行时调用的数据等
shared library:共享库
stack:栈空间,局部变量
线程的概念:
现代操作系统中,将传统的进程分离,即将资源申请和调度分开,进程作为资源的申请和拥有的单位,而进程作为调度的基本单位。thread:线程,轻量级进程
线程与进程的比较:
调度
并发性
拥有资源
系统开销
lock:死锁 自旋锁等
由于临界区的存在导致了该概念的产生,临界区使用原则:忙则等待、有限等待、空闲让进、让权等待