操作系统——进程与线程

进程的概念

以前的单道批处理系统一次只能执行一个程序,到了多道批处理阶段,cpu能在同一时间间隔内运算多个程序,为了方便管理,从而引进了进程的概念,更好的实现系统的并发性和共享性。
为了让每个进程都可以独立运行,专门设置了一种数据结构称为进程控制快(PCB),系统利用PCB来描述进程的基本情况和运行状态,从而方便控制和管理进程。程序段,数据段和PCB构成了进程映像(进程实体)。创建进程就是创建进程实体中的PCB,进程实体是静态的,进程是动态的。PCB是进程存在的唯一标志。

进程的特征

动态性,并发性,独立性,异步性,结构性

进程的状态与转换

(1)运行态:进程正在处理机上运行。在单处理机环境下,每个时刻最多只有一个进程处于运行态。
(2)就绪态:进程获得了除处理机以外的所有资源,一旦得到处理机,便可立即执行,处于就绪的队列可能有多个,通常将他排成一个队列,称为就绪队列。(万事俱备,只欠CPU)因为cpu分配给每个进程的时间片很短,所以进程在频繁的在运行态和就绪态之间装换。
(3)阻塞态:又称等待态,进程正在等待某一事件而暂停运行,过个某资源不可用,即使处理机空闲都不能运行
(4)创建态:申请一个空白的PCB,在PCB中填入控制和管理进程的信息,然后由系统分配该进程需要的资源,最后转入就绪态。
(5)结束态:进程从系统中消失,可能是正常结束,可以能是其他原因中断运行。
在这里插入图片描述

进程控制

进程控制是通过原语实现的。

进程的创建:

允许进程创建进程,创建者称为父进程,被创建的进程称为子进程,子进程被撤销时,所有资源返还给父进程,如果父进程被撤销,相应的子进程也会被撤销。
原语执行过程
1.创建进程需要申请PCB,如果申请失败则创建失败(PCB是有限的)。
2.为进程分配资源,内存等,如果资源不足则进入堵塞态,等待资源。
3.初始化PCB,主要包括初始化标志信息,初始化处理机状态和控制信息。
4.进程就绪队列能够接纳新的进程,则将进程插入就绪队列,等待被调用

进程的终止

引起终止的事件1.正常结束2.异常结束3.外界干预
原语执行过程
1.找到PCB
2.被终止的进程如果处于运行态,则立即终止该进程,将处理机分配给其他进程
3.若进程有子进程则终止所有子进程
4.将该进程所有资源返还给父进程或者操作系统
5.将该PCB从PCB列表里面删除

进程的阻塞和唤醒

进程的阻塞是一种主动行为,因此也只有处于运行态的进程才可能装入阻塞态。如果分配的资源没有出现则进入阻塞态,把处理机让给其他进程。
阻塞原语执行过程
1.找到PCB
2.若该进程处于运行态,则保护现场,将其转为阻塞态。
3.将该PCB插入等待序列,将处理机资源调度给其他进程
当被阻塞的进程期待的事件出现后,需要调用唤醒原语,将该事件唤醒
唤醒原语执行过程
1.找到等待队列里面的PCB
2.移除等待队列,将其置于就绪态队列
阻塞原语和唤醒原语是一对刚好想法的原语,需要成对使用

进程切换

对于进程而言,其创建、撤销及其要求由系统完成的i/o操作,都是利用系统调用进入内核完成的,所以任何进程都需要进入核心态。进程切换是指,处理机处理的进程由一个进程转变到另一个进程的行为,这个过程运行环境发生了改变。
1.保存处理机上下文,包括程序计数器和寄存器
2.更新PCB信息
3.把进程的PCB移入相应的队列
4.选择另一个进程执行,并更新其PCB
5.更新内存管理的数据结构
6.回复恢复处理机的上下文

进程的组成

PCB的组成

在这里插入图片描述
为了方便管理和调度,常用的组织方式有链接方式和索引方式
1.链接方式是把不同状态的PCB处于不同队列中。
2.索引方式是将不同状态的PCB放在不同的索引表里面。

程序块的组成

程序段就是进程所对应的程序的源程序。

数据段

就是进程对应的程序的原始数据。

进程之间的通讯

1.共享储存:进程之间有一块可以共同访问的共享空间通过这个共享空间进行写/读操作,共享存储又分为两种,低级方式是通过数据结构实现共享,高级方式是基于存储区的共享,操作系统只提供储存空间,和互斥工具,数据交换由程序自己完成。
2.消息传递
(1)直接通信方式:发送进程把信息直接花在接收进程的消息缓冲区上,接收进程直接从自己的消息缓冲区中读取信息。
(2)间接通信方式:发送进程把消息放在某个中间实体中,接收进程从中间实体获取信息,计算机网络中,电子邮件系统也是通过这种方式。
3.管道通信
管道是指的两个进程之间的共享文件,又称pipe文件,管道是半双工通讯方式,通过互斥工具,管道的大小是固定的,接收进程在管道填满的时候才可以读取里面进程,发送进程在管道为空时才能进行发送操作。

线程的概念和多线程模式

线程可以理解成”轻量级的进程“,他是cpu的最小执行单元,线程是满足进程需要执行更多操作的产物,如QQ本身有一个进程,但是这个进程可能同时需要发文字,开视频等操作,则需要不同线程来控制不同的操作。引入线程后进程的内涵就变了,进程只作为CPU外的系统资源分配单元,而CPU控制的最小单元为线程,由于多个线程同时处于一个进程中,在切换时时空开销很小。
在这里插入图片描述

线程与进程的比较

1.调度
同一进程内的线程进行调度时(运行,就绪,阻塞),不会进程的切换,如果切换的线程不是同一个进程中的线程,则需要切换进程,重新分配资源。
2.拥有资源
进程是拥有资源的基本单位,线程不拥有系统资源。
3.并发性
线程和进程都具有并发性,提高系统的吞吐量
4.系统开销
进程创建,切换,撤销过程中会重新分配系统资源,资源开销大,线程的创建,切换,撤销只需要保存销量的存储器内容,开销小。进程在切换的过程中需要保存寄存器里面的内容,把寄存器里面的内容压入栈中,防止下一个进程使用寄存器导致丢失当前进程的数据,当时线程的切换时不用此操作,因为都是一个进程里,寄存器里面的内容是通用的。
5.地址空间和其他资源
进程之间的地址空间相互独立,一个进程中的所有想成共享线程资源,进程中的线程对其他进程不可见
6.通信方面
线程的通信需要进程同步,互斥手段来辅助,保证数据的一致性,线程之间可以直接读写数据段来进行通信

线程的属性

线程是个轻量级的实体,不拥有系统资源,但是每个线程都有唯一表示的线程控制块(TCB),线程控制块记录了线程执行的寄存器和栈等现场状态。不同的线程可以被多个程序调用,多个线程可以执行同一套程序。统一进程中的线程共享数据段中的所有资源。单处理机中的线程被交替的调用,多处理机的计算机中,cpu可以处理不同的线程,也可以同时处理同一个线程以缩短处理时间,一个线程被创建后都有他的生命周期,在生命周期内执行各种状态的变化。
在这里插入图片描述

线程的实现方式

线程的实现可以分为两大类:用户级线程和内核级线程

用户级线程

有关线程管理的所有工作都由用户程序完成,内核意识不到这些操作,应用程序可以利用线程库设计多线程程序。通常都是从单线程开始,在其运行的任何时刻都可以通过调用线程库中的派生例程创建一个在相同进程中的新线程。
在这里插入图片描述

内核级线程

内核级线程中的所有工作都由内核完成,应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口,内核为进程以及内部的每一个线程维护上下文,调度也在内核基于线程框架中完成。内核级线程才是处理机分配的单位
在这里插入图片描述

多线程模式

1.多对一模型,将多个用户级线程映射到一个内核级线程中,线程管理在用户控件内完成,此模式中用户线程对操作系统不可见
优点:线程管理在用户空间中完成,效率比较高
缺点:一个线程不在使用内核服务中被阻塞,整个进程都会被阻塞,多个线程不能并行在多处理机中
在这里插入图片描述

2.一对一模式,将每个用户级线程分别映射一个内核级线程。
优点:如果有线程发生阻塞之后不会影响其他线程
缺点:开销大,影响性能
在这里插入图片描述

3.多对多模式,将n个用户线程映射到m个内核级线程上
特点:集合一对一和多对一的优点。
在这里插入图片描述

总结

在这里插入图片描述

真题

2020:父进程和子进程可以并发执行,父进程与子进程共享一部分资源但是不能共享虚拟地址空间,父进程和子进程也不能同时访问临界资源,每个进程都有自己的PCB,父进程和子进程的pcb不同。
2019:内核级线程调度由操作系统带完成,操作系统会为每个内核级线程创建线程控制快,而每个用户级线程与内核级线程的控制方式不同,在一对一的情况下,用户级线程才被称为分配了一个线程控制块,用户级线程是在用户空间中进行的切换,而内核级线程需要操作系统进行处理机调度,所以用户级线程的切换效率更高,用户级线程在用户空间中执行,对于操作系统来说是透明的,所以不管操作系统支不支持内核级线程,应用都可以分配用户级线程。
2019:进程切换都是在内核态,操作系统通过系统调用避免用户程序直接访问外设,系统调用是操作系统内核为应用程序提供的服务接口。

2014:一个进程读磁盘操作之后,操作系统针对该进程必须做的是?
解 修改进程状态为就绪态,因为在申请io之后进程会阻塞,所以在读进程操作后需要从阻塞态该为就绪态。

2014:管道通信是半双工数据传输,是一种特殊的文件放在内存中,是一种临界资源需要互斥

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值