2.1进程的相关概念和知识

2.1.1 进程的定义、组织、组织方式、特征
本节主要内容
    1.定义,在计算机发展史上,“进程”是为了解决什么问题而被引入的?
    2.组成,每个进程有哪些部分组成?
    3.组织方式,系统中各个进程之间是如何被组织起来的?
    4.特征,相比于程序,进程有那些特征?
    
1.进程的定义:
    程序就是一个指令序列
    引入多道程序技术后,为了方便操作系统管理,完成各程序并发执行,引入进程、进程实体的概念。
        系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)
    PCB、程序段、数据段三部分构成了进程实体(进程映像)
    一般情况下,我们把进程实体简称为进程。
    例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB
    从不同角度,进程可以有不同的定义,比较传统典型的定义有:
    1.进程是程序的一次执行过程
    2.进程是一个程序及其数据在处理机上顺序执行时发生的活动
    3.进程是具有独立功能的程序在数据集合上运行的过程,
        它是系统进行资源分配和调度的一个独立单位
    引入进程实体的概念后,可把进程定义为:
        进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
    注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。
        不过,除非题目专门考察二者区别,否则认为进程实体就是进程。
        因此我们也可以说“进程由程序段、数据段、PCB三部分组成”
2.进程的组成
    进程(进程实体)由程序段、数据段、PCB三部分组成
    1.操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息。
        进程的管理者(操作系统)所需要的数据都在PCB中,而程序本身所需的数据存放在程序段和数据段中
        PCB包含四种信息
        1.进程描述信息
            1.进程标识符PID
                当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的ID,
                用于区分不同的进程(类似于身份证号)
            2.用户标识符UID
        2.进程控制和管理信息
            1.进程当前状态
            2.进程优先级
        3.资源分配清单
            1.程序段指针
            2.数据段指针
            3.键盘
            4.鼠标
        4.处理机相关信息
            1.各种寄存器值
                当进程切换时,需要把进程当前的运行情况记录下来保存到PCB中,
                如:程序计数器的值(PC)表示了当前程序执行到哪一句。
    2.程序段存放程序代码
    3.数据段存放程序运行时使用、产生的运算数据。
        如全局变量、局部变量、宏定义的常量就存放在数据段中
3.进程的组织方式
    进程的组成是讨论多个进程之间的组织方式问题
    1.连接方式
        按照进程状态将PCB分为多个队列
        操作系统持有指向各个队列的指针

在这里插入图片描述

    2.索引方式
        根据进程状态的不同,建立几张索引表
        操作系统持有指向各个索引表的指针

在这里插入图片描述

4.进程的特征
    1.动态性:动态性是进程最基本的特征
        进程是程序的一次执行过程,是动态地产生、变化和消亡的
    2.并发性:内存中有多个进程实体,各个进程可并发执行
    3.独立性:进程是资源分配、接受调度的基本单位
        进程是能独立运行、独立获得资源、独立接受调度的基本单位
    4.异步性:异步性会导致并发程序执行结果的不确定性。详见“进程同步”
        各个进程按各自独立的、不可预知的速度向前推进,
            操作系统要提供“进程同步机制”来解决异步问题
    5.结构性
        每个进程会配置一个PCB。结构上看:进程=程序段+数据段+PCB
2.1.2 进程的状态和转换
本节主要内容:
    1.进程的状态
        1.运行状态
        2.就绪状态
        3.阻塞状态
        4.创建状态
        5.终止状态
        其中运行状态、就绪状态、阻塞状态是三种基本状态
    2.进程状态间的转换
        1.就绪态-->运行态
        2.运行态-->就绪态
        3.运行态-->阻塞态
        4.阻塞态-->就绪态

1.进程的状态--三种基本状态 
    1.运行态(Running)
        占有CPU,并行在CPU上运行
        注意:单核处理机环境下,每一时刻最多只有一个进程处于运行态。
            双核环境下可以同时有两个进程处于运行态。
    2.就绪态(Ready)
        已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
        进程已经拥有除了处理机之外所有需要的资源,一旦获得处理机即可立即进入运行态开始运行。
            即:万事俱备,只欠CPU
    3.阻塞态(Waiting/Blocked,又称:等待态)
        因等待每一事件而暂时不能运行
        如:等待操作系统分配打印机、等待读磁盘操作的结果。
        CPU是计算机中最昂贵的部件,为了提高CPU的利用率,
            需要先将其他进程需要的资源分配到位,才能得到CPU的服务
2.进程的状态--另外两种状态
    1.创建态(New,又称:新建态)
        进程正在被创建,操作系统位进程分配资源,初始化PCB
    2.终止态(Terminated,又称:结束态)
        进程正在从系统中撤销,操作系统会回收进程拥有的资源、撤销PCB
3.进程状态的转换
    运行态-->阻塞态是一种进程自身做出的主动行为
    阻塞态-->就绪态是不受进程自身能控制的,是一种被动行为
    注意:不能由阻塞态直接转化为运行态,也不能由就绪态直接转换为阻塞态
        因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求

在这里插入图片描述

2.1.3 进程控制
本节主要内容
    1.基本概念
        1.什么是进程控制
        2.如何实现进程控制?
            用“原语”实现
    2.进程控制相关的原语
        1.进程的创建
        2.进程的终止
        3.进程的阻塞
        4.进程的唤醒
        5.进程的切换
        
1.进程控制的基本概念
    1.什么是进程控制?
        进程控制就是要实现进程状态转换
    2.如何实现进程控制?
        1.进程转化过程

在这里插入图片描述

        2.使用“原语”
            用“原语”实现进程控制
            原语的特点是:执行期间不允许中断,只能一气呵成
            这种不可被中断的操作即原子操作
            原语采用“关中断指令”和“开中断”指令实现
            显然,关/开中断的权限非常大,必然是只允许在核心态下执行的特权指令
            原语运行在核心态
2.进程控制相关的原语
    进程控制会导致进程状态的转换。无论哪个原语,要做到的无非三类事情。
        0.找到对应进程的PCB
        1.更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB,从PCB恢复运行环境)   
            1.所有进程控制原语一定都会修改进程状态标志
            2.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
            3.某进程开始运行前必然要恢复其运行环境
        2.将PCB插入合适的队列
        3.分配/回收资源
    1.进程的创建
        1.创建原语
            用来实现:无-->创建态-->就绪态
            1.申请空白PCB
            2.为新进程分配所需资源
            3.初始化PCB
            4.将PCB插入就绪队列
        2.引起进程创建的时间
            1.用户登录
                分时系统中,用户登录成功,系统会为其建立一个新的进程
            2.作业调度
                多道批处理系统中,由新的作业放入内存时,会为其建立一个新的进程
            3.提供服务
                用户向操作系统提出某些去请求时,会建立一个进程处理该请求
            4.应用请求
                由用户进程主动请求创建一个子进程
    2.进程的终止
        1.撤消原语
            用来实现:就绪态/阻塞态/运行态-->终止态-->无
            1.从PCB集合中找到终止进程的PCB
            2.若进程正在运行,立即剥夺CPU,将CPU分配给其他进程
            3.终止其所有子进程
            4.将该进程的所有资源归还给父进程或操作系统
            5.删除PCB
        2.引起进程终止的事件
            1.正常结束
            2.异常结束
            3.外界干预
    3.进程的阻塞
        1.阻塞原语
            用来实现:运行态-->阻塞态
            1.找到要阻塞的进程对应的PCB
            2.保护进程运行现场,将PCB状态信息设置为“阻塞态”,暂时停止进程运行
            3.将PCB插入相应事件的等待队列
        2.引起进程阻塞的事件
            1.需要等待系统分配某种资源
            2.需要等待相互合作的其他进程完成工作
    4.进程的唤醒
        1.唤醒原语
            用来实现:阻塞态-->就绪态
            1.在事件等待队列中找到PCB
            2.将PCB从等待队列移除,设置进程为就绪态
            3.将PCB插入就绪队列,等待被调度
        2.引起进程唤醒的事件
            等待的事件发生
    阻塞原语和唤醒原语必须成对使用,因何事阻塞就应由何事唤醒
    5.进程的切换
        1.切换原语
            用于实现:一个进程的运行态-->阻塞态/就绪态,
                    另一个进程的就绪态-->运行态
            1.将运行环境信息存入PCB
            2.PCB移入相应的队列
            3.选择另一个进程执行,并更新其PCB
            4.根据PCB恢复新进程所需的运行环境
        2.引起进程切换的事件
            1.当前进程时间片到
            2.有更高优先级的进程到达
            3.当期那进程主动阻塞
            4.当前进程终止
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值