操作系统笔记-进程管理

操作系统的主要功能

处理机管理
存储器管理
用户接口
文件管理
设备管理

内存管理

内存分配
内存保护
地址映射
内存扩充

处理机管理

进程控制(创建/撤销进程,进程状态转换)
进程同步(临界资源互斥访问,协同工作)
进程通信(进程合作,进程间通信)
进程调度(分配CPU算法实现)

文件管理

管理用户文件和系统文件
文件存储空间管理
目录管理
文件读、写管理和保护

设备管理

完成用户程序请求的I/O操作
为用户程序分配I/O设备
提高处理机和I/O设备的利用率
改善人机界面

多道程序设计

多道:多个程序同时装入内存
宏观上并发:进入系统的多道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕
微观上串行:
内存中的多道程序轮流占有CPU,交替执行

前驱图和程序执行

如何描述程序各部分的关系-前驱图DAG

在这里插入图片描述
定义:一个有向无循环图,由结点和结点间的有向边组成
前驱图用于描述工程和程序的有序执行,结点代表个程序端操作,而结点间的有向边表示两程序段操作之间的关系

程序的顺序执行

一个程序通常可以分为若干程序段,并且必须按照某种先后次序来执行
单道批处理系统程序顺序执行的特征:
顺序性:按照程序所指定的次序执行
封闭性:独占全部资源,资源的状态只由该程序才能改变它
可再现性:初始条件相同则结果相同
优点:程序的编制,调试方便
缺点:CPU与外部设备之间不能并行工作,资源利用率低,计算机系统效率不高

程序的并发执行

并发执行是指若干个**程序(或者程序段)**在一个处理器上的交替执行,宏观上表现为同时执行,目的是为了提高资源利用率,程序并发执行时的前驱图如下
在这里插入图片描述
在多道程序设计环境下,多个程序可以在单CPU上交替执行。程序的并发执行通常是指多个程序在单个CPU上的交替执行
间断性:“走走停停”,一个程序可能走到中途停下来
失去封闭性:共享资源受其他程序的影响。如:一个程序写到存储器中的数据可能被另给程序修改,失去原有不变特征
不可再现性:失去封闭性–>失去再现性

并发程序对资源的共享与竞争,又会导致程序执行环境与运行速度的改变,从而可能产生程序执行结果不唯一
在这里插入图片描述
数据库存放还剩下的票数量,只剩一张票时,有可能出错,可以采用共享缓冲区存放共享变量,分析执行顺序

在这里插入图片描述

什么是进程

进程是程序的一次执行
进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。是系统进行资源分配与调度的一个独立单位
进程的结构
PCB-存储程序执行过程中的有关运行信息。
进程实体=程序段+相关数据段+PCB
进程的特征:
特征:
动态性:进程是程序的一次执行过程,是动态的。动态性表现在它因创建而产生、因调度而执行、因得不到资源暂停执行,由撤销死亡;进程有声明周期。
并发性:多个程序存入内存,并发运行。引入进程的目的是为了使程序能与其他程序并发以提高资源利用率
**独立性:**进程是能独立运行的基本单位,也是系统进行资源分配和调度的独立单位
异步性:进程以各自独立的、不可预知的速度向前推进
结构特征:每个进程都由程序段、数据段和进程控制块(PCB)三部分组成

进程与程序的区别

进程是动态的,程序是静态的通常进程不可再计算机之间迁移,而程序通常对应着文件,可以复制
进程是暂时的,程序是永久的进程是一个程序变化的过程,程序可长久保存
进程和程序的组成不同进程的组成包括程序、数据和进程控制块PCB
进程与程序的对应关系通过多次执行,一个程序可对应多个进程,通过调用关系,一个进程可包括多个程序

进程的基本状态及装换

进程具有动态性,有生命期,运行中的进程可能具有3种基本状态。系统根据PCB中的状态值控制进程
就绪状态:进程已获得了除CPU以外的所有资源,一旦获得CPU就可立即执行。多个就绪进程时,组成就绪队列
执行状态:进程获得了所有资源,正在CPU上运行
阻塞状态:正在执行的进程由于某事件(I/O申请。申请内存失败等)而暂时无法执行。多个阻塞进程时,组成阻塞队列

在这里插入图片描述
五种状态进程模型
五种状态:创建、就绪、运行、阻塞、终止
创建状态:进程正在创建过程中,还不能运行。如:建立PCB表项、建立资源表并分配资源、加载程序并建立地址空间表等
终止状态:进程已结束运行。回收除PCB外的其他资源,并让其他进程从PCB中收集有关信息,如将退出代码传递给父程序。
在这里插入图片描述

挂起进程模型

指在内存中的进程被暂时移到外存(如磁盘)的过程
目的:提高处理机效率,为运行进程提高足够内存,用于调试
当某个进程被挂起的时候,若被挂起的进程处于运行状态则停止执行,若被挂起的进程处于就绪状态,则暂时不参加进程调度
引起进程挂起的原因:
用户的请求
父进程的请求
操作系统的原因

进程控制块PCB

PCB包括:
进程标识符
进程的当前状态
进程响应的程序段和数据段地址
进程资源清单
进程优先级COU现场保护区
进程同步和通信机制
PCB队列指针或链接字
与进程相关的其他信息
在这里插入图片描述

PCB组织方式

顺序表方式

用一段连续的存储单元依次数据圆度,需要预分配存储空间,分大了浪费,小了容易发生上溢
在这里插入图片描述

链接方式

在这里插入图片描述
把具有同一状态的PCB,用其中的链接字链接成一个队列。

索引方式

在这里插入图片描述
知识逻辑记录与物理记录之间对应关系

进程控制

进程控制是进程管理中最基本功能,主要功能:
创建进程、终止进程、阻塞和唤醒、进程状态转换等
进程控制一般由OS内核中的原语来实现
在这里插入图片描述
当一个进程执行系统调用而执行内核代码时,称该进程处于内核态,此时处理器处于特权级最高的(0级)内核代码中执行。
当进程执行用户代码时,称其处于用户态,此时处理器在特权级最低的用户代码中运行。

进程的创建

一个进程可以创建一新进程。引进创建进程的事件:
在这里插入图片描述
父进程–建立者进程:撤销父进程时,同时撤销其所有子进程
子进程–被建立的进程:子进程继承父进程所拥有的的资源

进程的创建

进程图–用于描述一个进程的家族关系的有向图
在这里插入图片描述

实例:Linux fork()创建进程

新的进程通过克隆旧的进程而建立,具体操作
为新进程申请新的task_struct
继承:
子进程可以从父进程中继承用户标识符、环境变量、打开文件、文件系统的当前目录、控制终端、已经连接的共享存储区、信号处理历程入口表等
不被继承:进程标识符,父进程标识符
fork系统调用执行之后,父子进程返回到用户空间中相同的地址,用户进程根据fork()的返回值分别安排父子进程执行不同的代码
在这里插入图片描述
在这里插入图片描述

实例:exec()进程

功能:给新进程指定一个新的运行程序
该进程的代码段、数据段和堆栈段就被新程序所代替。新程序从它自己的main()函数开始执行
调用格式:exec(文件名,参数表,环境变量表)

进程的终止

进程完成任务后应予以撤销,以便及时释放它占有的各类资源。
终止语句:收回被终止进程所占有的所有资源,并撤销其PCB
在这里插入图片描述
保护错:读只写文件
算术运算错:被零除
进程终止exit()
系统提供exit()系统调用
在这里插入图片描述

进程的阻塞和唤醒

引起进程阻塞和唤醒的事件
1)向系统请求共享资源失败,如打印机
2)等待某种操作的完成,启动某种操作:典型I/O操作
3)新数据尚未到达
4)无新工作可做:等待
正在执行的进程,无法继承执行时,进程把自己阻塞
当被阻塞进程所期待的时间出现时,则由有关进程(如:提供数据的进程)
进程阻塞自己–其他有关进程唤醒
在这里插入图片描述
(1)中断处理机,保存该进程的CPU现场,停止运行该进程
(2)将该进程(PCB)插入相应事件的等待队列
(3)从就绪队列中选择另一个进程投入运行

实例:进程的阻塞和终止

在Linux系统中,与进入阻塞状态相关的系统调用主要有:
sleep
在指定时间内挂起本进程,调用格式:
unsigned sleep(unsigned seconds)
返回值为实际挂起时间
wait
挂起本进程以等待子进程的结束
若有子进程退出时,父进程中的wait函数在第一个子进程结束时返回,返回值为子进程ID

进程同步

程序顺序执行时:顺序性,封闭性,可在现性
程序并发执行时:间断性,事情封闭性,不可再现性
进程同步机制的任务:对多个相关进程在执行次序上进行协调,使并发执行的进程能按照一定的规则(次序)共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性

两种形式的制约关系

(1)简介相互制约关系:进程间由于共享某种系统资源,而形成相互制约
(2)直接相互制约关系:进程间犹豫合作而形成的相互制约
临界资源:某段时间内只能允许一个进程使用的资源;
临界区:进程中访问临界资源的代码段

同步机制应遵循的准则

(1)空闲让进:无进程处于临界区,表明临界资源处于空闲状态,若有进程要求进入临界区,应立即允许进入
(2)忙则等待。当已有进程进入其临界区时,该临界资源正在使用,所有其他欲访问该临界资源的进程必须等待,以保证各进程互斥地进入其临界区。
(3)有限等待。对要求访问临界资源的进程,应在有限时间内使一进程进入临界区,不应出现各个进程互相等待都无法进入临界区的情况
(4)让权等待。当进程不能进入其临界区时,应立即释放所占有的CPU,以免陷入“忙等”(进程在占有CPU的同时又一直等待),保证其他可执行的进程获得CPI运行。
实现进程有两种方法
(1)硬件方法
通过计算机提供的一些机器指令实现进程的互斥
1.开关中断指令
2.测试与设备指令TS
3.交换指令
(2)软件方法
为并发进程设置标志,表示进程是否在临界区

硬件同步机制

1.开关中断指令
进程在进入临界区之前先执行“关中断”指令,屏蔽掉所有中断;进程完成临界区的任务后,再执行“开中断”进程打开中断
关中断后,计算机不响应中断,不引发调度,不会进程切换
2.测试与设置指令TS
为每一个临界区资源设置一个布尔变量lock,可以将它看成一把锁
3.交换指令Swap
为每个临界资源设置一个布尔变量lock,初值false
交换指令(Swap)功能是交换两个字的内容

信号量机制

1965年荷兰计算机科学家提出了新的同步工具,信号量和P、V原子操作,让多个进程通过信号量进行交互。
信号量是一种数据结构
信号量的值与相应的资源的使用情况有关
信号量的值仅由P、V操作改变
类型:整形信号量、记录型信号量、AND信号量、信号量集
1.整型信号量
在这里插入图片描述
信号量为S
在这里插入图片描述
2.记录型信号量
在这里插入图片描述
在这里插入图片描述
记录型信号S的P(S)原语
在这里插入图片描述
记录型信号S的V(S)原语
在这里插入图片描述
AND型信号量同步机制思想
对于进程在整个运行过程中需要的所有资源,要么一次性地全部分配给该进程,要么一个也部分
在这里插入图片描述
在这里插入图片描述
4.信号量集
解决问题:进程一次需要N个某类临界资源时,避免执行N次P操作;当资源量小于下限值(t1)时不分配
数据结构:信号量S,下限值t,需求值d

信号量的应用

1.使用信号量实现前驱关系
例:语句S1-S6的前驱关系图如下,写出一个可并发执行的程序
在这里插入图片描述
在这里插入图片描述
有多少条有向边就需要多少个信号量来实现同步
2.使用信号量实现进程互斥
为临界资源设置一个互斥信号量mutex,初值为1.将各进程的临界区置于P(mutex)和V(mutex)之间
在这里插入图片描述
在这里插入图片描述

经典进程的同步问题

生产者–消费者问题

消费者是指使用某一软硬件资源的进程
生产者是指提供某一软硬件资源的进程
问题抽象为:一组生产者向一组消费者提供产品
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

哲学家进餐问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进程同步

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值