进程和线程
进程
进程是系统进行资源分配和调度的基本单位。
线程
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
区别
1、资源:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。
2、地址空间和其他资源的共享:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
3、通信:线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。进程间通信需要借助IPC,
4、调度和切换:由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。
进程状态
- 新建态(new):等待操作系统完成创建进程的必要操作。
- 运行态(running):进程占有处理器正在运行。
- 就绪态(ready):进程具备运行条件,等待系统分配处理器以便运行。
- 等待态(wait):又称为阻塞(blocked)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。
- 终止态(exit):进入终止态的进程以后不再执行,但依然保留在操作系统中等待善后。
1、NULL一一新建态:执行1个程序,创建一个子进程。
2、新建态一一就绪态:当操作系统完成了进程创建的必要操作,并且当前系统的性能和内存的容量均允许。
3、运行态一一终止态:当1个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结。
4、终止态一一NULL:完成善后操作。
5、就绪态一一终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。
6、等待态一一终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。
7、运行态一一等待态:等待使用资源或某事件发生,如等待外设传输;等待人工干预。
8、等待态一一就绪态:资源得到满足或某事件己经发生,如外设传输结束;人工干预完成。
9、运行态一一就绪态:运行时间片到,或出现有更高优先权进程。
10、就绪态一一运行态:CPU空闲时被调度选中一个就绪进程执行。
进程调度算法
- FCFS:先来先服务,也可以称为先进先出
- 轮转:以一个周期性间隔产生时钟中断,此时当前正在运行的进程被置于就绪队列,基于FCFS选择下一个就绪进程运行。
- SPN:最短进程优先,下一次选择所需处理时间最短的进程
- SRT:最短剩余时间优先,总是选择预期剩余时间最短的进程
- HRRN:最高响应比优先,R=(w+s)/s,其中R表示响应比,w表示已经等待的时间,s表示期待服务的时间
- 反馈:进程第一次进入系统是放置于RQ0,第一次被强占并返回就绪态时,放入RQ1,以后每次被强占就下降一级。如果进程处于最低等级,则不再降级,反复返回到该队列,直到结束。
例如
进程 | 到达时间 | 运行时长 |
---|---|---|
A | 0 | 3 |
B | 2 | 6 |
C | 4 | 4 |
D | 6 | 5 |
E | 8 | 2 |