进程
定义:
- 一个正在执行的程序;
- 一个正在计算机上执行的程序实例;
- 能分配给处理器并由处理器执行的实体;
- 一个由一组执行指令,一个当前状态和一组相关的系统资源表征的活动单元。
进程的基本元素:程序代码和与代码相关联的数据集。
进程控制块:由操作系统创建和管理,每个进程控制块包含操作系统所需要的关于进程的所有信息,可以中断一个进程的执行,并恢复进程的执行;进程控制块是操作系统支持多线程处理和多重处理技术的重要工具。进程控制块是操作系统中最重要的数据结构.主要包含以下信息
标识符:进程的标识符,唯一确定这个进程。
状态:进程在执行中,则处于运行态。
优先级:相较于其他进程。
程序计数器:程序中即将执行的下一条指令的地址。
内存指针 :包括程序代码和进程相关的指针以及和其它进程共享内存的指针。
上下文数据:进程执行过程中,处理器中的寄存器的数据。
记账信息:处理器时间总和等等。
当一个进程中断的时候,操作系统会把程序计数器和上下文数据保存到进程控制块中。
进程的创建和终止
1、创建步骤:
- 为新进程分配一个唯一的标识符。
- 为新进程分配空间。
- 初始化进程控制块
- 设置正确的连接
- 创建或者扩充其他数据结构。
创建进程的原因:
进程终止的原因
五状态模型:运行态,就绪态,阻塞态,退出态,新建态
运行态:进程正在运行。
就绪态:进程准备好,有机会就会执行
阻塞态:进程在某些事件发生前不能执行。
新建态:刚刚创建的进程,操作系统还未将其加入可执行进程组,通常是进程控制块已经创建但没加载到内存。
退出态:从可执行进程组释放的进程。
注意:进程转换到退出态后,其信息并不是立马被删除,与作业相关的表和其它信息会临时被操作系统保留,给辅助程序或者支持程序提供了提取所需信息的时间。提取信息完毕后,操作系统就不会保留与该进程相关的信息。
空-->创建:创建执行新进程。
新建-->就绪:操作系统准备好接纳一个新进程,就会把一个进程从新建态转成就绪态。
就绪-->运行:需要选择一个新进程执行的时候,操作系统就会从处于就绪状态的进程选择一个。
运行-->退出:当运行的进程已完成时,便会退出。
运行-->就绪:(1)有一个更高优先级的进程需要运行,那么当前进程转入就绪,也叫抢占 。(2)正在运行的进程已经到达运行不中断执行的最大时间(超时)。(3)进程自愿释放对处理器的控制。
运行-->阻塞:进程请求其必须等待的事情到来,则进入阻塞态。
阻塞-->就绪:所等待事情完成,进入就绪态。
就绪-->退出:例如父进程终止,那么父进程创建出的子进程也终止
阻塞-->退出:
上述状态中无法从就绪—>阻塞,阻塞-->运行(必须经过就绪状态)。
引入另外一种状态--挂起态。
挂起态:原因主要是由于内存的大小远远小于处理器处理的速度,导致资源浪费。因而把当前内存中处于阻塞状态的进程转出到磁盘的“挂起队列”。操作系统在此之后取出挂起队列中的另一个进程,或者接受一个新进程的请求,将其纳入内存运行.
挂起进程特点:该进程不能立即执行
进程描述
操作系统为了管理进程和资源,必须掌握关于每个进程和资源当前状态的信息。普遍使用的方法是:操作系统构造并维护它所管理的每个实体的信息表:
四种类型的信息:内存表,I/O表,文件表和进程表
内存表:跟踪内存和外(虚)存.内存表中必须包含以下:分配给进程的内存,分配给进程的外存,内存块或虚存块的任何保护属性以及管理虚存所需要的任何信息。
I/O表:管理计算机系统中的I/O设备和通道
文件表:文件是否存在,位置,当前状态以及相关属性
进程表:相关进程
使用进程映像来描述一个进程,进程镜像包括:程序、数据、栈和进程控制块(属性的集合):
进程控制
执行模式:用户模式和内核模式。使用两种模式的原因是很显然的,它可以保护操作系统和重要的操作系统表(如进程控制块)不受用户程序的干涉
切换:程序状态字(PSW)有一位表示执行模式,这一位应某些事件的要求而改变。当用户调用一个操作系统服务或中断触发系统例程的执行时,执行模式被设置为内核态;当从系统服务返回到用户进程时,执行模式被设为用户态.
下列情况下,进程可能把控制权交给操作系统。
进程切换:
- 保存处理器上下文环境
- 更新当前处于运行态进程的进程控制块
- 进程控制块移到相应队列
- 选择另一进程执行
- 更新所选择进程的进程控制块
- 更新内存管理的数据结构
- 恢复处理器在被选择的进程最近一次切换出运行状态时的上下文环境
进程切换一定会有模式切换,而模式切换不一定有进程切换。
线程:
进程是操作系统调度资源的基本单位,而线程是调度的基本单位。进程中的所有线程共享该进程的状态和资源
线程的优点:
- 时间短:在一个进程中创建一个线程比重新创建一个进程时间短
- 终止一个线程比终止一个进程时间短
- 统一进程内的线程切换比进程间切换时间短
- 线程提高不同执行程序间通信效率。
线程生命周期:
线程分类:用户级线程和内核级线程。
用户级线程优点:
(1)可以在任何操作系统执行,不需要修改内核以支持用户级线程
(2)调度可以是应用程序相关的。
(3)线程切换不需要内核特权,节省状态转换开销
用户级线程缺点:
(1)当用户级线程执行一个系统调用时,不仅这个线程会被阻塞,进程中的所有线程都会被阻塞
(2)一个多线程应用程序不能利用多处理技术。内核一次只把一个进程分配给一个处理器,因此一次进程中只有一个线程可以执行
内核级线程优点:
(1)内核可以同时把同一进程中的多个线程调度到多个处理器中同时运行
(2)如果进程中一个线程被阻塞,内核可以调度其它线程
(3)内核例程自身也可以使用多线程
缺点:把控制从一个线程转移到用一进程的另一线程时,需要到内核的状态切换
原文地址:https://www.cnblogs.com/tingweichen/p/10645090.html