第二章进程的描述与控制

第二章进程的描述与控制

前趋图和程序执行

前趋图

是一个有向无环图,用于描述程序执行的先后顺序

程序的顺序执行

特征:

  • 顺序性:处理机的操作严格按照程序所规定的顺序执行。
  • 封闭性:程序一旦开始执行,其计算结果不受外界因素的影响
  • 可再现性:程序执行的结果与它的执行速度无关(即与时间无关),而只与初始条件有关。

程序的并发执行

特征

  • 间断性
  • 失去封闭性
  • 不可再现性

进程的描述

进程的定义和特征

定义:
程序关于某个数据集合的一次执行过程

特征:

  • 结构特征
    进程控制块(PCB)+程序+数据=进程实体
  • 动态性(最基本特征)
  • 并发性
  • 独立性
  • 异步性
    进程按各自独立的、不可预知的速度向前推进

进程的三种基本状态

  • 就绪态
  • 运行态
  • 阻塞态

在这里插入图片描述

挂起状态

引起挂起的原因:

  • 终端用户的请求
  • 父进程的请求
  • 负荷调节的需要
  • 操作系统的需要

在这里插入图片描述

进程控制块

作用:

  • 作为独立运行基本单位的标志
  • 能实现间断性运行方式
  • 提供进程管理所需要的信息
  • 提供进程调度所需要的信息
  • 实现与其他进程的同步与通信

进程控制块的组织方式:

  • 线性方式
  • 链接方式:把具有同一状态的PCB用其中的链接字链接成一个队列。
  • 索引方式:系统根据所有进程的状态建立几张索引表,把各表的内存首地址记录在内存的专用单元中。索引表的表目中记录了相应状态的某个PCB在PCB表中的地址。

进程控制

引起进程创建的事件

  • 用户登录
  • 作业调度
  • 提供服务
  • 应用请求

进程创建过程

  1. 申请空白PCB
  2. 为新进程分配其运行所需要的资源
  3. 初始化PCB
  4. 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列

引起进程终止的事件

  • 正常结束
  • 异常结束
  • 外界干预

进程终止过程

  1. 找出被终止进程的PCB
  2. 若进程状态为运行态,应立即终止该进程的执行,并置调度标志为真
  3. 若进程有子孙进程,终止其子孙进程
  4. 回收终止进程的资源或者归还给其父进程,或者归还给系统
  5. 将被终止的进程(PCB)从所在队列(或链表)中移出。也叫回收终止进程的PCB

进程同步

进程同步的主要任务:

使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。

进程同步的基本概念

临界资源:

一次仅允许一个进程访问的资源

临界区:

每个进程中访问临界资源的那段代码

进程互斥
两进程不能同时进入访问同一临界资源的临界区

进程同步机制:
系统用来实现进程间同步与互斥的机构

进程同步机制遵循的规则:

  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待

信号量机制

整型信号量

定义:整型量,除初始化外,仅能通过两个原子操作来访问

P操作 wait(S):
While (S<=0) do no-op;
S–;
V操作 signal(S):
S++;
P、V操作是原子操作,不可中断。

未遵循让权等待原则,导致忙等

记录型信号量

正确使用时能实现同步和互斥

含义:信号量>0,代表可用资源的数量
信号量<0,代表由于申请信号量
代表的资源而阻塞的进程数量

AND型信号量

将进程在整个运行过程中需要的所有资源,一次性全部分配给进程,待进程使用完后再一起释放。只要尚有一个资源未能分配给进程,其他所有可能为之分配的资源,也不分配给它。即对临界资源的分配采取原子操作。

信号量集

一般信号量集的几种特殊情况:

  • Swait(S, d, d),只有一个信号量S,允许每次申请d个资源,若现有资源数少于d,不予分配。
  • Swait(S, 1, 1),蜕化为一般的记录型信号量(S>1时)或互斥信号量(S=1时)。
  • Swait(S, 1, 0),当S>=1时,允许多个进程进入某特定区,当S变为0后,阻止任何进程进入特定区,相当于可控开关。

线程的基本概念

进程出现的原因:

使多个程序能够并发的执行,提高资源利用率和系统吞吐量

线程和进程的关系是:

线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一物理内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。

引入线程的目的:
减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。

进程与程序的区别

进程是程序的一次运行活动,属于一种动态的概念。程序是一组有序的静态指令,是一种静态的概
念。 进程离开了程序也就没有存在意义——进程是执行程序的动态过程,而程序是进程运行的静态文本。
一个进程可以执行一个或多个程序。
程序可以作为一种软件资源长期保持,而进程则是一次执行过程,它是暂时的,是动态地产生和终止的。
(1)程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;

(2)程序是静态的观念,进程是动态的观念;

(3)进程具有并发性,而程序没有;

(4)进程是竞争计算机资源的基本单位,程序不是。

(5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行一个或几个程序。

概念上的区别:

(1)进程是动态的,而程序是静态的。

(2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。

(3)1个程序可以对应多个进程,但1个进程只能对应1个程序。

进程与线程的区别

  • 根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位

  • 资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

  • 包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

  • 内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

  • 影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

  • 执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行
    通过梳理懂了一丢丢,哈哈哈
    还可以从其他角度进行区分,比如后端童鞋可以从JVM出发,比较它们的异同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值