知识储备_计算机操作系统:进程管理

进程管理

进程的基本概念

  1. 进程的特征与定义
    定义:作为资源分配和独立运行的基本单位,引入进程的目的是使多个程序能并发执行,且对并发执行的程序加以描述和控制
    特征:
    1)结构特征:进程实体对应于一个进程,进程实体的创建指的是进程实体中PCB(process control block:进程控制块)
    2)并发性:进程实体(要创建了相应的PCB)存于内存中,在一段时间内同时运行
    3)独立性:进程实体能独立运行 + 独立分配资源 + 独立调度
    4)异步性:进程的执行顺序和执行时间的不确定性,但是可以引入进程同步机制,使得进程按我们想要的结果方式运行
  2. 进程的状态(三种基本状态和其它状态)
    1)就绪状态:可以获得但还未获得CPU资源;有多个,形成就绪队列
    2)执行状态:获得CPU,正在执行
    3)阻塞状态:CPU无法继续执行该进程,进入阻塞状态,譬如IO请求,形成阻塞队列
    这里写图片描述
    4)挂起状态(人为)
    中断用户的请求,将正在运行的程序停止下来,进程就处于挂起状态
    5)创建状态
    进程创建状态过程:为进程创建PCB,把进程转入就绪状态并插入就绪队列
    6)终止状态:释放PCB所占用的资源
    这里写图片描述
  3. 进程控制块PCB
    1) PCB概述:系统会为每一个进程创建一个相应的数据结构PCB,操作系统就是根据PCB来对并发执行的进程进行控制和管理。PCB描述了一个进程当前状态及控制进程运行的全部信息
    2) PCB中的信息(了解即可)
    1、为了描述和控制进程的运行,系统为进程定义的数据结构
    2、PCB常驻内存

进程控制
进程控制主要涉及到进程的创建、终止以及进程运行过程中状态的转换,它们一般是通过原语来实现的(原语:原子性操作,不可分割)

  1. 进程的创建
    步骤为:申请空白的PCB—为进程分配相应的内存资源—初始化PCB—插入到就绪队列
  2. 进程的终止
    步骤为:根据进程标识符,找出该进程对应的PCB—停止该进程及其子进程的运行—释放PCB所占用的资源
  3. 进程的阻塞与唤醒
    阻塞步骤为:停止进程的运行——将进程从执行状态变为阻塞状态——插入到阻塞队列
    唤醒步骤为:从阻塞队列中移出—将进程从阻塞状态变为就绪状态—插入到就绪队列
  4. 进程的挂起与激活

进程同步
在多道程序系统中,各进程以异步的方式执行,这就很容易导致程序执行结果的不可再现性,譬如说它们在争用临界资源的时候。因此用引入进程同步机制来协调各进程的执行,使程序的执行结果具有可再现性。

  1. 进程同步的基本概念
    1) 进程间两种形式的制约关系
    a、进程互斥关系:例如对临界资源的访问(打印机)
    b、进程同步关系:进程间直接的相互制约关系(AB进程直接相关)
    2) 临界资源:进程采用互斥的方式访问临界资源(生产者-消费者中的缓冲池)
    3) 临界区:进程访问该临界区时,检查是否该临界资源现在是否被访问,如果没被访问则进入该临界区,并设置该临界区为访问状态,否则等待。
  2. 信号量机制
    操作系统中采用信号量机制作为实现进程同步的有效工具
    信号量集的发展过程:
    1)整型信号量
    S:资源数目
    Wait(S):while S < 0 等待(忙等); S = S-1 获得资源
    Signal(S):S= S+ 1 释放资源
    缺点:忙等
    2) 记录性信号量
    S:是一种数据结构
    S.value:绝对值为等待资源进程的个数
    S.L:等待资源进程链表
    缺点:只共享一种临界资源
    3) AND型信号量
    共享多个临界资源,一次性把所有临界资源分配给进程,进程使用完之后再一起释放
    缺点:一次只能分配一个临界资源 + 当资源小于某个临界值时,不予分配
    4)信号量集
    之前的只能获取和释放一个临界资源
    当资源数目小于某一下限值得时候不予分配
    Swait(信号量i,下限值i,需求值i)
  3. 管程机制
    (一种新的进程同步进制)
    1)管程:代表共享资源的数据结构 + 对共享资源的并发操作
    2)管程每次只允许一个进程访问,从而实现进程互斥访问资源
    3)假如一个进程调用了管程,在管程中挂起,如果在此期间不释放管程资源,则其他进程无法访问管程资源,这里采用了条件变量的方法解决这个问题
    4)根据挂起或阻塞的条件不同,在管程中设置多个条件变量,对条件变量的操作仅仅是wait和signal,每个条件变量对应于一个链表
    x.wait:正在调用管程的进程由于条件x而被阻塞或挂起,将进程插入到x条件的等待队列上
    x.signal:x条件发生变化,重启一个因为x条件而阻塞或挂起的进程

经典的进程同步问题
1. 生产者-消费者
2. 哲学家进餐
3. 读者-写者问题
4. 生产者-消费者

进程通信
1. 进程之间的通信要兼顾进程同步问题(互斥和同步),信号量机制作为进程同步机制很有效,但不能作为进程通信进制(效率低 + 不透明)。
2. 低级进程通信:进程的同步和互斥(因为要交互的数据少);高级进程通信:共享存储器系统 + 消息传递系统 + 管道通信系统
3. 共享存储器系统:共享数据结构 + 共享存储区
2. 如今最常用的进程通信方式是消息传递系统,进程之间可直接发送消息(报文)通信,该方法称为直接通信方式(例如原语:send(Receiver, message) + Reveive(sender, message))。间接通信方式需要通过一个共享的数据结构实体(信箱)。(设有消息缓冲队列)
3. 管道通信系统:用于连接一个读进程和一个写进程的共享文件
3. 但在消息传递实现进程通信也会存在一些问题:通信链路,消息的格式,进程同步的方式

线程

  1. 在没有引入线程概念之前,进程的定义为:作为资源分配、独立运行和调度的基本单位。而引入线程概念后,把进程作为资源分配的基本单位,而把线程作为独立运行和调度的基本单位。
    引入线程的目的是:提高程序的并行执行程度,进一步提高系统吞吐量
  2. 线程的实现方式
    1、内核支持线程:线程的创建、切换、撤销都是在内核中进行的,内核通过TCP对线程进行管理
    2、用户级线程(更有效):线程的创建、切换、撤销都与内核无关;仅存在于用户空间中;但调度仍是一进程为单位的
    3、组合方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值