操作系统-进程

操作系统-王道老师

第二章01-进程

目录:

1.进程定义、组成、组织方式、特征
2.进程的状态和装换
3.进程控制
4.进程通信
5.线程概念和多线程模型

1.进程定义、组成、组织方式、特征

1.1 定义

程序段、数据段、PCB三部分组成了进程实体(进程印象),一般情况下,我们一般把进程实体就简称为进程。
注:PCB是进程存在的唯一标志
从不同角度,进程可以有不同的定义:
1.进程是程序的一次执行过程
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动
3.进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的独立单位。
注:严格来说,进程实体和进程并不一样的,进程实体是静态的,进程则是动态的。除非特意说明,否者进程实体就是进程。

1.2 组成:

PCB:

进程描述信息:进程标识PID、用户标识UID
进程控制和管理信息:进程当前状态、进程优先级
资源分配清单:程序段指针、数据段指针、键盘、鼠标
处理机相关信息:键盘、鼠标

程序段:

存放要执行的代码

数据段:

存放程序运行过程中处理的各种数据
在这里插入图片描述

1.3 组织形式:

在一个系统中,通常有数十、数百乃至数千个PCB,为了能对它们加以有效的管理,应该采用适当的方式将这些PCB租出起来。
注:进程的组成是讨论进程内部由哪些组成,而进程的组织讨论的是多个进程之间的组织方式。

1.3.1 链接方式:

按照进程状态将PCB分为多个队列
操作系统持有执行各个队列的指针

在这里插入图片描述

1.3.2 索引方式:

根据进程状态不同,建立几张索引表
操作系统持有执行各个索引表的指针

在这里插入图片描述

1.4 特征:

动态性:

进程和程序的一次执行过程,是动态的产生、变化和消亡的

并发性:

内存中有多个进程实力,各进程之间可并发执行

独立性:

进程独立运行、独立获得资源、独立接受调用的基本单位

异步性:

各进程各自独立的,不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题

结构性:

每个进程都会配置一个PCB.结构上看,进程由程序段、数据段、PCB组成

2.进程的状态和装换

2.1 进程五大状态

进程是程序的一次执行,在一个执行过程中,有时进程正在被CPU处理,有时需要等待CPU服务,课件,进程的状态是会各种变化的,为了方便各个进程的管理,操作系统需要将进程合理地划分为几种状态。

运行态(Running): 占用CPU,并在CPU上运行。

就绪态(Ready): 已经具备运行条件,但没有空闲的CPU,而暂时不能运行。

阻塞态(Waiting/Blocked): 因等待某一事件而暂时不能运行(分配I/O设备,资源分配等)。

创建态(New 新建态): 进程正在被创建,操作系统为进程分配资源,初始化PCB。

终止态(Terminated,结束态): 进程真正该从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB。

2.2 进程状态间的切换

就绪态 -> 运行态: 进程被调度
运行态 -> 就绪态: 时间片到,或CPU被其他高级优先的进程抢占
运行态 -> 阻塞态: 等待系统分配资源,或登台某时间的发生(主动行为)
阻塞态 -> 就绪态: 资源分配到位,等待的事件发生(被动行为)
创建态 -> 就绪态: 系统完成创建进程的相关工作
运行态 -> 终止态: 进程运行结束,或运行过程中遇到不可以修复的错误
在这里插入图片描述

3.进程控制

3.1 基本概念:

进程控制就是要实现进程之间的状态切换,在状态切换的时候,必须要保证不能中断,一旦中断,可能造成已经加入了其他状态队列,但是PCB中的状态标志位还没有改变,所以用原语来实现进程控制,原语的特点是在执行期间不允许中断,只能一气呵成,不能中断,这种不能被中断的操作即原子操作。原语采用“关中断指令”和“开中断指令”实现

在这里插入图片描述

3.2 相关原语:

学习技巧:进程控制会导致进程状态的切换,无论哪个原语吗,要做的无非是以下三类事情:
1.更新PCB中的信息(如修改进程状态标志,将运行状态黄静保存到PCB、从PCB恢复运行环境)

a.所有进程控制原语一定都会修改进程状态标志
b.剥夺当前运行进程的CPU使用权必然需要保存其运行状态
c.某进程开始运行必然要恢复其运行环境

2.将PCB插入到合适队列
3.分配/回收资源
3.2.1 进程的创建:

创建原语:申请空白PCB、为进程分配所需资源、初始化PCB、将PCB插入到队列
引发进程创建的事件:用户登录、作业调度、提供服务、应用请求

3.2.2 进程的阻塞: 阻塞和唤醒成对出现

阻塞原语:找到阻塞进程对应的PCB、保护进程运行现场、将PCB状态信息设置成阻塞态,暂时停止进程运行,将PCB插入到相应事件的等待队列
引发进程阻塞的事件:需要等待系统分配某些资源、需要等待相互合作的其他进程完成工作

3.2.3 进程的唤醒: 阻塞和唤醒成对出现

唤醒原语:在事件等待队列中找到PCB、将PCB等待队列移除、设置进程为就绪态、将PCB插入就绪队列,等待被调度
引发进程唤醒的事件:等待的事件发生

3.2.4 进程的切换:

切换原语:将运行环境信息存入PCB、PCB移入相应队列、选择另一个进程执行,并更新其PCB、更具PCB恢复进程所需的运行环境
引发进程切换的事件:当进程时间片到、有更高优先级的进程到达、当进程主动阻塞、当进程终止

4.进程通信

4.1 共享存储:

1.设置一个共享空间
2.要互斥的访问共享空间
3.两种方式:

基于数据结构(低级)
基于存储区的共享(高级)

在这里插入图片描述

4.2 管道通信:

1.设置一个特殊的共享文件(管道),其实就是一个缓冲区
2.一个管理只能是半双工的(只能单项通信)
3.实现双向同时通信要建立两个管道
4.各进程之间互斥访问管道
5.写满时,不能再写。没读空,不能再写
6.没写满,不能读。没读空,不能写
在这里插入图片描述

4.3 消息传递:

1.传递结构化的信息(消息头/消息体)
2.系统提供“发送/接收原语”
3.两种方式:

直接通信方式:消息直接挂到接收方的消息队列里
间接(信箱)通信方式:消息通过中间体(信箱)转发

在这里插入图片描述

5.线程概念和多线程模型

5.1 什么是线程?引入线程后,有什么变化(和传统进程机制对比)

1.线程可以理解成“轻量级进程”
2.线程是一个最基本的CPU执行单位,也是程序执行流的最小单位。
3.引入线程之后,不仅进程之间可以并发,进程内的各线程之间也可以并发,从而进一步的提升了程序的并发度,从而一个进程可以并发处理各种任务。
4.引入线程之后,进程只作为除CPU之外的系统资源分配单位(如打印机、内存地址空间等),不再是处理器调度的最小单位。

5.2 线程的重要属性:

1.线程是处理机调度的最小单位
2.多CPU计算机中,各个线程可占用不同的CPU
3.每个线程都有一个线程ID、线程控制块(TCB)
4.线程也有就绪、堵塞、运行三个状态
5.线程几乎不拥有系统资源(系统资源分配给进程)
6.同一个进程不同线程间可以共享进程资源
7.由于共享内存地址空间,同一进程中的线程间的通信甚至无需系统干预
8.同一进程线程切换,不会引起进程切换,不同进程的线程切换,会引起进程的切换
9.切换同进程内的线程,系统开销很小,切换进程,系统开销很大

5.3 线程的实现方式:

5.3.1 用户级线程: (User-Level Thread,ULT)

用户级线程由应用程序通过线程库实现。所有的线程工作都由应用程序负责(包括线程切换)。
用户级线程中,线程切换在用户态下即可以完成,无需操作系统干预。
在用户看来,是多个现车给。但是操作系统内核看来,并意识不到线程的存在。

5.3.2 内核级线程: (Kernel-Level Thread)

内核级线程工作由内核负责,因此内核级线程的切换必然需要在核心态下完成。
内核级线程” 就是“从操作系统内核看能看到的线程”。

5.3.3 同时支持用户级线程和内核级线程:

操作系统只“看的见”内核级线程,因此只有内核级线程才是处理机分配的单位。
例如:下面这个模型,该进程由两个内核级进程,三个用户及线程,在操作系统看来,就是两个线程,所有即使4核处理的计算机上运行,也最多只能被分配到2个核,最多只能有两个用户级线程并行。

在这里插入图片描述

5.4 多线程模型:

5.4.1 多对一模型:

多个用户及线程映射到一个内核级线程美国个用户进程只对应一个内核级线程。
优点:用户级线程的切换在用户空间即可安慰昵称,不需要切换到和核心态,线程管理的系统开销小,效率高。
缺点:当一个用户线程堵塞的时候,整个进程会被堵塞,并发度不高。多个线程不可在多核处理器上并行运行。

在这里插入图片描述

5.4.2 一对一模型:

一个用户线程映射到一个内核级线程。每个用户进程有与用户级线程同数量的内核级线程。
优点: 当一个线程被阻塞后,别的线程还可以继续执行,并发能力强,多线程可在多核处理器上运行。
缺点: 一个用户进程会占用多个内核级线程,线程切换有操作系统内核完成,需要切换到核心态,因此线程管理成本高,开销大。

在这里插入图片描述

5.4.3 多对多模型:

n用户级线程映射到m内核级线程(n>=m)。每个用户进程对应m内核级线程。
克服了多对一模型并发度不高的缺点,又克服了一对一模型中一个用户进程占用太多内核级线程,开销太大的缺点。

在这里插入图片描述
第二章第一节关于进程的基础知识笔记,欢迎大家交流学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值