进程
程序:一个指令序列
PCB(进程控制块):描述进程的各种信息(如程序代码存放位置)
进程实体(进程映像)(简称进程)
PCB
程序段
数据段(程序运行时使用、产生的运算数据,如全局变量、局部变量、宏定义的常量就存放在数据段内)
创建进程实质是创建进程实体中的PCB
撤销进程实质是撤销进程实体中的PCB
进程定义
(1)进程是程序的一次执行过程
(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动
(3)进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
(进程实体是静态的,进程则是动态的)
进程的组成
PCB是进程存在的唯一标志
进程描述信息
进程标识符PID
用户标识符PID
进程控制和管理信息
进程当前状态
进程优先级
(进程的管理者(操作系统)所需的数据都在PCB中)
资源分配清单
程序段指针
数据段指针
键盘
鼠标
处理机相关信息:各种寄存器值
程序段:存放要执行的代码
数据段:存放程序运行过程中处理的各种数据
进程的组织方式
链接方式
按照进程状态将PCB分为多个队列
操作系统持有指向各个队列的指针
索引方式
根据进程状态的不同,建立几张索引表
操作系统持有指向各个索引表的指针
进程的特征
动态性:进程是程序的一次执行过程,是动态地产生变化和消亡的
并发性:内存中有多个进程实体,各进程可并发执行
独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供 “进程同步机制” 来解决异步问题
结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成
进程状态
1.创建状态
进程由创建而产生。创建进程是一个非常复杂的过程,一般需要通过多个步骤才能完成:如首先由进程申请一个空白的进程控制块(PCB),并向PCB中填写用于控制和管理进程的信息;然后为该进程分配运行时所必须的资源;最后,把该进程转入就绪状态并插入到就绪队列中。
2.就绪状态
这是指进程已经准备好运行的状态,即进程已分配到除CPU以外所有的必要资源后,只要再获得CPU,便可立即执行。如果系统中有许多处于就绪状态的进程,通常将它们按照一定的策略排成一个队列,该队列称为就绪队列。有执行资格,没有执行权的进程。
3.运行状态
这里指进程已经获取CPU,其进程处于正在执行的状态。对任何一个时刻而言,在单处理机的系统中,只有一个进程处于执行状态而在多处理机系统中,有多个进程处于执行状态。既有执行资格,又有执行权的进程。
4.阻塞状态
这里是指正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行的状态,即进程执行受到阻塞。此时引起进程调度,操作系统把处理机分配给另外一个就绪的进程,而让受阻的进程处于暂停的状态,一般将这个暂停状态称为阻塞状态
5.终止状态
进程的终止也要通过两个步骤:首先,是等待操作系统进行善后处理,最后将其PCB清零,并将PCB空间返还给系统。当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止状态。进入终止态的进程以后不能在再执行,但是操作系统中任然保留了一个记录,其中保存状态码和一些计时统计数据,供其他进程进行收集。一旦其他进程完成了对其信息的提取之后,操作系统将删除其进程,即将其PCB清零,并将该空白的PCB返回给系统。
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程和实现进程状态转换等功能
用原语实现进程控制,原语的特点是执行期间不允许中断,只能一气呵成
这种不可被中断的操作即原子操作
原语采用 “关中断指令” 和 “开中断指令” 实现
原语功能:
更新PCB中的信息
将PCB插入合适的队列
分配/回收资源
… |
---|
关中断指令 |
原语指令1 |
原语指令2 |
开中断指令 |
代码3 |
代码4 |
… |
进程通信
1.共享存储(设置一个共享空间,要互斥地访问共享空间)
基于数据结构的共享(低级)
基于存储区的共享(高级)
2.消息传递
直接通信方式
间接通信方式(通过信箱访问)
3.管道通信
设置一个特殊的共享文件(管理),即缓冲区,一个管道只能实现半双工通信,实现双向同时通信要建立两个管道,各进程要互斥访问管道;写满时,不能再写。读完时,不能再读;没写满,不能读。没读完,不能写。
进程通信就是指进程之间的信息交换
进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。
为了保证安全,一个进程不能直接访问另一个进程的地址空间。
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。
引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务。
引入线程后,进程只作为除CPU之外的系统资源的分配单元。
线程的属性:线程是处理机调度的单位,多CPU计算机中,各个线程可占用不同的CPU,每个线程都有一个线程ID,线程控制块(TCB),线程也有就绪、阻塞、运行三种基本状态。线程几乎不拥有系统资源,同一进程的不同线程间共享进程的资源,由于共享内存地址空间,同一进程中的线程切换,不会引起进程切换,不同进程中的线程切换,会引起进程切换,切换同进程内的线程,系统开销很小。
线程是处理机调度的单位,进程是资源分配的单位。