进程与线程

接下来,我开始阅读进程管理这章,首先把知识框架列在下面。

首先,早期的计算机只支持单道程序,计算机中所有的资源都用于该程序的运行。之后引入多道程序技术之后,为了方便操作系统管理、完成各程序并发执行,引入了进程、进程实体的概念。PCB、程序段和数据段三部分构成了进程实体(进程映像)。一般情况下,我们把进程实体简称为进程。其中PCB是系统为每个运行的程序配置的一个数据结构,称为进程控制块(PCB),用于描述进程的各种信息,同时PCB也是进程存在的唯一标志。操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息。所谓创建进程,实质上是创建进程实体中的PCB。

引入进程实体的概念后,可把进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的,一般情况下,默认进程实体就是进程。

 

在一个系统中存在数以百计的PCB,为了对他们进行有效的管理,应该用适当方式把这些PCB组织起来。

进程和程序是两个截然不同的概念,具有以下几个特征,其中动态性是最基本特征。

 进程是程序的一次执行,在执行的过程中,进程的状态是会变化的。为了方便对各个进程的管理,操作系统需要将进程合理的划分为几种状态。其中,在单核处理机环境下,每一时刻最多只有一个进程处于运行态。阻塞态的进程因一事件未满足,例如打印机未分配,等待读取磁盘。CPU是计算器中最昂贵的部件,为了提高CPU的使用率,需要先将其他进程需要的资源分配到位,才能得到CPU的服务。

 

进程状态的转换

 进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有新进程、撤销已有进程、实现进程状态转换等功能。在操作系统中,一般把进程控制的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不可分割的基本单位。原语采用“关中断指令”和“开中断指令”实现。显然,关/开中断指令是只能允许运行在核心态下的特权指令。无论哪个原语要做的无非三类事情。

1,更新PCB中的信息(如修改进程状态标志,将运行环境保存到PCB,从PCB回复运行环境)

      a,所有的进程控制原语一定都会修改进程状态标志

      b,剥夺当前运行进程的CPU使用权比如需要保存其运行环境。

      c,某进程开始运行前必然恢复其运行环境。

2,将PCB插入合适的队列

3,分配/回收资源

进程创建原语:

进程撤销原语:

进程的阻塞和唤醒原语:

 进程切换原语:

 

进程通讯指进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。但进程之间的信息交换又是必须的,为了保证进程间的通信安全,操作系统提供了一些方法。

共享通讯,在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行读写操作实现进程之间的信息交换。两个进程对共享空间的访问必须是互斥的。基于数据结构的共享是低级的通信方式,基于存储区的共享是高级通信方式。

管道只能采取半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。

各进程要互斥的访问管道,未写满不允许读,为读空不允许写。

数据以字节流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。

数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。

 

有的进程可能需要“同时”做好多事,但传统的进程只能串行的执行一系列程序,为此引入“线程”来增加并发度。传统的进程是程序执行流的最小单位。线程可以理解为“轻量级进程”,是一个基本的CPU执行单元,也会程序执行流的最小单位。引入进程后,不仅是进程之间可以并发,进程内的各进程之间也可以并发,从而进一步提升额系统的并发度,使得一个进程内也可以并发处理各种任务。引入线程后,进程只作为除CPU之外的系统资源的分配单位。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要出家当道士

打赏是不可能,这辈子都不可能

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值