操作系统 — 进程及线程

1 进程

1.1 进程定义和属性

进程区别于程序,这里引入两个概念。“可再入”:能被多个程序同时调用的程序。“可在用”:调用过程中可能会被修改,因此在调用它的程序退出之前,其他程序不可以调用。举个列子,编译程序P需要编译多个源程序,假定编译程序P正在编译程序A,编译程序P从指令集顶端开始执行,执行到一半时需要将内容写到磁盘上,为了提高处理器利用效率,程序A让出处理器,程序B同样被编译程序P编译,同样从指令集顶端开始执行。上例出现的编译程序就是可再入程序。程序P只有一个,而被编译程序有A和B,显然使用程序作为占用处理器的单位不太合适。为此,可以把P与服务对象联系起来,构成进程A和进程B。
进程的概念:具有独立功能的程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。
引入进程的两个目的:
a.刻画程序的并发执行
b.解决资源的共享性
进程的属性:
动态性:进程是程序在数据集合上的一次运行活动,是有生命周期的,随着创建而产生,调度而运行,由事件而等待,由撤销而消亡。
共享性:同一程序运行在不同数据集合上构成不同的进程,即多个进程可执行相同的程序,程序和进程没有一一对应关系。
独立性:进程有自己独立虚存空间,程序计数器和内部状态等
制约性:进程因共享资源或协同工作产生相互制约
并发性:多个进程的执行在时间上可以重叠,在单处理器上交叉执行,在多处理器上并发执行。

1.2 进程状态和转换

三态模型
在这里插入图片描述
三态说明:
就绪态:进程具备运行条件,等待调度获得处理器的使用权
运行态:进程占有处理器正在运行的状态
阻塞态:也可称为等待态。指进程不具备运行条件,正在等待某个事件的执行
七态模型
在这里插入图片描述
新增创建态和终止态。新建态对应于进程被创建时的状态,尚未进入就绪队列。终止态指进程执行完毕或遇到异常意外退出时的状态。
此外还有挂起就绪态和挂起等待态。挂起就绪对应于就绪态,挂起等待对应于阻塞(等待态)不同的是挂起状态的进程被存放在外存中。

1.3 进程的描述和组成

进程分为静态特征和动态特征。静态特征包括:数据和程序。动态特征包括:进程状态、占用资源状况、记录调度信息等,通常使用一种数据结构描述动态特征,该数据结构称为进程控制块。由于进程状态在不断发生变化,某时某刻进程的内容及状态集合称为进程映像。
进程映像包括:
进程控制块:每个进程仅有一个控制块,主要包括信息下面介绍。
进程程序块:是被进程执行的程序
进程核心栈:每个进程捆绑一个,进程在内核态工作时使用。
进程数据块:进程的私有地址空间,存放各种私有数据。
除了进程映像外还需要了解上下文概念。
进程上下文:进程物理实体和支持进程运行的环境。由于进程在系统中活动除了本身映像外还需要环境支持,如硬件寄存器、程序状态字寄存器等。因此引出进程上下文的概念。
进程上下文包括:
用户进程上下文、寄存器上下文、系统级上下文

1.3.1 进程控制块

进程控制块包括:
标识信息:一个整型数值唯一的标识一个进程,数值范围:0-32768。
现场信息:保存进程在运行时存放在处理器现场中的各种信息。PCB(Process Control Block)进程控制块。例如,进程让出处理器,则此时现场信息保存到PCB中,当进程恢复运行时也应恢复处理器现场。
控制信息:用于管理和调度进程。如进程状态、等待事件和等待原因、进程优先级、队列指针等。也包括进程族间关系、进程间通信等。

1.3.2 进程队列

进程队列主要功能:存储不同进程的PCB。将同一状态的PCB连接在一起的数据结构称作进程队列。
通用的进程队列组织方式包括:链接方式和索引方式。
链接方式同数据结构中链表一样,这里的连接方式包括两种单链表和双链表。
不同状态的进程可以排成不同队列,如运行队列、就绪队列和等待队列。
索引方式通过创建索引表来保存不同状态进程的PCB地址和PCB编号。

1.4 进程控制和管理
a 进程创建

1.在进程列表中增加一项,从PCB池中申请一个空闲的PCB
2.在新进程的进程映像分配地址空间
3.为新进程分配各种资源
4.初始化PCB,如进程标识符、处理器初始状态等
5.把新进程的状态设置为就绪态,并将其移入就绪队列。

b 进程撤销

进程撤销分为正常撤销和非正常撤销,后者如进程运行过程中出现错误和异常。
撤销步骤:根据撤销进程标识号从相应队列中查找并移除;将此进程所占用的资源归还给父进程或者操作系统;若此进程拥有子进程,则先撤销其子进程以防止它们脱离控制;回收PCB并将其归还至PCB池中,最后转向进程调度程序工作。
除了创建和撤销外还包括:进程阻塞和唤醒,进程挂起和激活

2 线程

2.1 线程简介

线程又称作轻量级进程。如果说引入进程是为了改善资源利用率和提高系统效率。那么引入线程又是为了什么呢?线程其实是进程的进一步抽象,其将并发粒度划分的更细,因此有效的减轻了程序并发执行时所付出的时空开销。
线程的优点:
a.线程快速切换:同一进程下的线程切换只需要改变堆栈和寄存器
b.通信易于实现:自动共享进程下的文件和内存,线程可以访问进程下的全局变量(通讯不需要经过内核)
c.减少管理开销:工作比进程少,且无需再分配存储空间和各种资源
d.并发程度提高:并发粒度划分的更细,并发行更好

2.2 线程与进程

进程是操作系统中资源分配和保护的基本单位。而线程则是进程中能够并发执行的实体,是进程的组成部分,也是处理器调度和分派的基本单位。进程下可以包含多个线程,这些线程共享进程所获得的内存空间和资源。
线程中也有自己的唯一标识符和状态信息。线程是一条执行路径,有自己独立的程序计数器等内容。线程有执行栈和和存放局部变量的私有存储空间。可访问所属进程的内存和资源,并且与进程中的其他线程共享这些资源。
进程可分为两部分:资源集合和线程集合。进程为线程提供虚拟地址空间和各种资源。

2.3 线程状态

与进程类似,线程也有生命周期,因此线程有运行、就绪、等待和种植等状态。但是线程不存在挂起等待和就绪两种状态,因为线程不是资源拥有单位。

2.4 线程的组织

组织方式包括:调度员-工作者模式、组模式、流水线模式。

参考资料:《操作系统教程第五版》费翔林等编著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值