操作系统知识(第二章 进程管理)1

参考视频:王道计算机考研 操作系统_哔哩哔哩_bilibili


目录

第二章 进程管理1

 一、进程与线程

1.进程的定义和组成

2.进程的组织

3.进程的特征

4.进程的状态

5.进程的转换

6.进程控制

7.进程通信

8.线程

9.多线程模型


第二章 进程管理1

 一、进程与线程

在单道程序中,内存中有程序段(程序:一个指令序列)和数据段。而在多道程序中,内存中放入多个程序段和数据段,操作系统需要找到 

1)各个程序段存放位置;

2)哪些程序分配了哪些系统资源等。

为了使程序并发执行并且可以对并发执行的程序加以描述和控制,引入进程进程实体的概念。

1.进程的定义和组成

进程控制块(PCB)控制每一个程序(如:记录程序段存放位置),使得每一程序能够独立运行。

进程实体(又称为进程映像)由PCB、程序段、数据段三部分组成,创建进程的实质就是创建进程实体中的PCB,而撤销进程就是撤销进程实体中的PCB。PCB是进程存在的唯一标志

引入进程实体概念之后,可以把进程定义为:进程进程实体的运行过程,是系统进行资源分配调度的一个独立单位。【强调“动态性”】

【知识树 王道(左) 汤子瀛(右)】

2.进程的组织

为了有效管理上千个PCB,需要将其组织起来。

链接方式:

执行指针、就绪队列指针、阻塞队列指针

索引方式:

执行指针、就绪表指针、阻塞表指针

3.进程的特征

动态性最基本的特征。进程是程序的执行。

并发性:多个进程实体并发执行。

独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位。

              【进程是资源分配、接受调度的基本单位

异步性:由于各个进程独立、不可预知的速度前进,会导致程序执行结果的不确定性

               【需要“进程同步机制”来解决】

结构性:PCB、程序段、数据段三部分组成。

4.进程的状态

(1)三种基本状态:运行态就绪态阻塞态

就绪态下的进程只缺少CPU。

若在运行态需要等待某个除处理机以外的资源可用或是输入/输出完成,则会将此进程阻塞,当事件处理完成后再回到就绪态

(2)进程的另外两种状态:创建态终止态

创建:程序在计算机内运行,操作系统为该进程分配所需的内存空间,并创建、初始化PCB(分配PID)。

终止:进程运行结束后(正常或异常导致),撤销进程相关的工作,回收资源、撤销PCB等。

5.进程的转换

就绪态 → 运行态:进程调度,分配处理机时间片。

运行态 → 就绪态:时间片用完后,不得不让出处理机;或是处理机被更加紧急的进程抢占。

运行态 → 阻塞态:主动申请资源。

阻塞态 → 就绪态:被动等待分配。

6.进程控制

概念:对所有进程实施有效管理,具有创建新进程实现进程状态转换撤销已有进程等功能。

对进程进行控制,从一态到另一态的转变必须

        ①更新PCB的内容(状态标志PID、运行环境)

        ②将进程的PCB放入相应的队列中(就绪队列、事件 i 的阻塞队列)

        ③可能涉及分配/回收资源

注:有些程序在运行中被切换,处理机被抢占回到的就绪态,当时的运行环境保存在PCB中,那么再从就绪队列到运行就需要恢复运行环境

上述的①、②和③必须全部完成,否则程序将产生极大错误,因此引入原语来实现进程控制。

原语中具备两个特权指令关中断指令开中断指令】,因此运行在核心态。在关中断期间执行的原子操作只能一气呵成,原语执行完需要开中断。

无→创建态→就绪态

引起进程创建的事件:用户登录、新作业调度、用户请求操作系统服务、申请子进程。

就绪态/阻塞态/运行态→终止态→无

引起终止的事件:正常结束、异常结束、外界干预。

运行态→阻塞态;阻塞态→就绪态

成对使用;因何事阻塞就应由何事唤醒。

7.进程通信

每个进程都有自己独立的地址空间,只能自己访问。

因此,为实现进程之间的信息交换,需要一些方法。


1)共享存储

为实现通信,内存中开辟一个共享空间供多个进程互斥使用,即同一时刻只能有一个进程使用。

1️⃣基于数据结构的共享:多个进程共用某些数据结构操作系统提供空间和同步互斥工具,程序员来负责空间中数据结构的设置以及进程同步的处理。仅适用传递相对少量数据,通信效率低下,属于低级通信

【相当于使用同一种结构规则,对应位置表示相同,从而进行信息传递】(我自己的理解

2️⃣基于存储区的共享操作系统提供空间和同步互斥工具,数据的形式、存放位置都由进程控制,这种共享方式速度更快,属于高级通信


2)管道通信

一个管道采用半双工通信,即只能单向传输,双向同时通信需要两个管道。

②进程互斥访问管道

管道字符流写满时,写进程的write()系统调用将阻塞;为空时,读进程的read()系统调用阻塞。

④没写满不读没读完不写

⑤读出的数据被抛弃,无法找回。因此,读数据只能有一个


3)消息传递

进程间的数据交换以格式化的消息(消息头+消息体)为单位。

通过“发送消息/接收消息”两个原语进行数据交换。

1️⃣直接通信方式

发送进程的消息直接挂到接收进程的消息缓冲队列上。

2️⃣间接通信方式(信箱通信方式)

两进程通信,发送到或接收于中间实体(信箱)中,如:电子邮件系统。

8.线程

操作系统引入线程,是为了减少程序在并发执行时所付出的时空开销

1)线程的引入

1️⃣进程的两个属性

     ①可拥有资源的独立单位 ;②可独立调度和分派的基本单位(对进程的PCB操作)。

2️⃣时空开销

     创建进程(初始化),撤销进程(回收),进程切换(不宜频繁,否则限制并发程度)。

3️⃣线程——作为调度和分派的基本单位(属性②)

     既要并行又要减少开销,就将两个属性分开(线程出现后就成为CPU的基本执行单元)。一个进程中的线程调度,会访问自己所在的进程中的共享资源

2)线程与进程的比较(或者说引入线程后的变化)

1️⃣进程成为只是资源分配的基本单位,线程替代其成为调度的基本单位

2️⃣进程间并发,线程间也并发,提高并发性

3️⃣主要资源归进程所有,线程共享,少数资源(自己使用的线程控制块TCB)属于线程

4️⃣因同进程内线程共享进程资源,故线程的独立性较低许多

5️⃣不同于进程切换,线程切换不需要切换运行环境,所以无需系统干预系统开销小

(注:多个线程具有相同的地址空间,因此线程间的同步和通信也都不需要操作系统的干预

3)线程的实现方式

用户级线程(ULT),对操作系统透明,意识不到其存在。

所有的线程管理工作都应用程序(基于库函数)负责,通过线程库实现。线程创建、撤销、状态切换在目态即可完成。

 (MOOC)

 

(王道)

内核级线程(KLT)

线程调度、切换等管理工作都内核负责,线程切换必须在核心态下完成。

(MOOC)

(王道)

组合/混合线程

是将用户级线程内核支持线程两种方式组合

        1️⃣User Level Thread 用户级线程

        2️⃣Light Weighted Process(LWP)轻量级进程

        3️⃣Kernel Level Thread 核心级线程

用户级线程只能被用户看到,核心级线程只能操作系统看到,因此,需要使用内核控制线程(也就是LWP)将两个级别的线程联系在一起,使两者都能看到。

9.多线程模型

用户级线程映射到内核级线程,有多种连接方式。

1️⃣只在用户态下即可完成线程切换的多对一模型

优点:不需要切换到内核态,开销小,效率高。

缺点:一个用户级线程阻塞,整个进程阻塞;因为就对应一个内核级线程,故不能并发执行多个用户级线程。

2️⃣一个用户级对应一个内核级的一对一模型

优点:一个阻塞,另一个还能用,多核处理机中的并发能力强。

缺点:一个进程多个线程,将用多个内核级线程,切换时成本高、开销大。

3️⃣多对多模型

综合了上面两种模型的优点,既能使并发能力强,又开销小。 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值