zoukankan      html  css  js  c++  java
  • 操作系统学习(二)

    进程

    目录


    ### 引入,前驱图

    定义:

    前驱图是一个又向无循环图,可用来描述程序段或进程之间的先后次序关系。前趋图中的每个节点表示一个程序段或一个进程,结点间的有向边用来表示两个结点之间存在的偏序或前趋关系

    back

    程序的顺序执行

    定义:

    程序的顺序执行是指若干个程序或程序段之间必须严格按照某种先后次序来执行,进当前一程序或程序段执行完后,才能执行后面的程序或程序段

    特征:

    • 顺序性

    处理机严格按照程序所规定的顺序执行

    • 封闭性

    程序在执行时独占系统的全部资源,系统资源的改变只与执行的程序有关,而不受外界因素的影响

    • 可再现性

    初始条件相同的适合,一个程序的多次重复执行将得到相同的结果

    back

    程序的可并发执行

    定义:

    程序的并发执行是指两个或两个以上的程序或程序段可在同一时间间隔内同时执行。极大地提高了资源利用率和吞吐量。

    特征:

    • 间断性

    因为要共享资源,但是资源往往都少于正在执行的程序数,所以会存在资源抢占的问题.当一个资源被占用时,其他需要该资源的程序不得不暂停,待资源被释放时方可执行

    • 失去封闭性

    由于它们共享资源或者合作完成同一项任务,系统的状态不再受其中一个程序的控制和改变,所以就失去了封闭性

    • 不可再现性

    因为程序在并发执行时失去了封闭性,所以任何一个程序都有可能对系统的状态进行改变,这也意味着程序执行的结果可能会不相同

    back

    进程的定义与特征

    定义:

    由:

    • PCB
    • 程序段
    • 相关的数据段

    三个部分构成一个进程实体(又称进程映像),简称进程

    PCB定义:系统中存放进程的管理和控制信息的数据结构称为进程控制块PCB(process control block)

    典型的定义:

    • 进程是程序的一次执行
    • 进程是一个程序及其数据在处理机是顺序执行时所发生的活动
    • 进程是具有独立功能的程序

    进程的特征:

    • 动态性

    进程是程序的一次执行过程。进程具有一定的生命期,必须由创建而产生,由调度而执行,由撤销而灭亡

    • 最基本的特征
    • 并发性

    多个进程实体同存于内存中,且能在一段时间内同时执行

    • 最基本的特征
    • 独立性

    进程实体是一个能够独立运行、独立分配资源和独立接受调度的基本单位

    • 异步性

    进程可按各自独立的、不可预知的速度向前推进

    back

    进程的状态

    • 就绪状态

    除了处理器之外的资源都已经获得,等待处理器分配资源,只要分配了处理器就可以到达执行状态

    • 执行状态

    占用处理器资源,这个时候,处于这种状态的进程的数目小于等于处理器的数目

    • 阻塞状态

    由于进程等待某种原因,比如I/O操作或者进程同步操作,没有获得满足的条件,无法进行

    back

    进程的挂起状态

    引入原因:

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

    引入挂起原语操作后的三个进程状态的转换

    • 活动就绪->静止就绪
    • 活动阻塞->静止阻塞
    • 静止就绪->活动就绪
    • 静止阻塞->活动阻塞

    实质:

    进程不能够继续执行,即挂起后的进程处于就绪状态,不能参与CPU的竞争

    挂起常被用在进程对换中,此时挂起进程可以腾出内存空间给就绪进程使用

    back

    进程控制块

    定义:

    为了描述控制进程的运行,系统为每个进程定义了一个数据结构称为进程控制块PCB。PCB是进程实体的一个组成部分,其中记录了OS所需的、用于描述进程的当前情况以及控制进程的全部信息

    PCB的作用是将程序变成可并发执行的进程

    PCB通常包含:

    • 进程标识符
    • 处理机状态
    • 进程调度信息
    • 进程控制信息

    作用:

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

    back

    进程的组织形式

    • 线性方式:线性表
    • 链接方式:链接队列
    • 索引方式:索引表

    back

    进程控制:

    内核功能:

    • 支撑功能

      • 中断处理:内核最基本的功能,整个操作系统赖以活动的基础
      • 时钟管理
      • 原语操作
    • 由若干条指令组成的,用于完成一定功能的一个过程。一个操作中的所有动作,要么全做,要么全不做,是一个不可分割的基本单位

    • 资源管理功能

      • 进程管理
      • 存储器管理
      • 设备管理

    操作系统内核都是原语构成的,为什么?

    原因:屏蔽所有中断,保证串行,使操作系统底层执行结果是唯一的

    back

    进程的创建

    引进一个概念,进程树,其是描述进程间关系的一棵有向树。

    引起创建进程的事件

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

    进程的创建:

    • 申请空白PCB
    • 为新进程分配其运行所需的资源
    • 初始化进程控制块PCB
    • 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列

    back

    进程的终止

    引起进程终止的事件:

    • 正常结束
    • 异常结束
      • 越界错:访问存储区,超出进程的区域
      • 保护错误:进程去访问一个不允许访问的资源或文件
      • 非法指令
      • 特权指令错
      • 运行超时
      • 等待超时
      • 算术运算错
    • 外界干预

    back

    进程的终止过程

    • 根据被终止进程的标识符,读取该程序的状态
    • 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度
    • 若该进程还有子孙进程,应将其所有子孙进程都予终止
    • 被终止进程所拥有的全部资源必须全部归还,或给父进程,或操作系统
    • 将终止进程PCB从所在队列或链表中移除,等待其他程序来搜集讯息

    back

    引起进程阻塞和唤醒的事件

    • 向系统请求共享资源失败
    • 等待某种操作的完成
    • 新数据尚未到达
    • 等待新任务的到达

    back

    中断类型分为如下两大类:

    • 强迫性中断:

    正在运行的程序所不期望的,来自硬件故障或外部请求。

      • I/O 中断:来自外部设备通道;
      • 程序性中断:运行程序本身的中断,如 溢出、缺页中断、缺段中断、地址越界。
      • 时钟中断
      • 控制台中断
      • 硬件故障
    • 自愿性中断:

    用户在编程时要求操作系统提供的服务,使用访管指令或系统调用使中断发生。也称为访管中断。包括执行I/O,创建进程,分配内存,信号量操作,发送/接收消息。

    back

    按中断功能分类:

    • 输入输出中断

    输入输出中断时当外部设备或通道操作正常结束或发生某种错误时发生的中断。例如:I/O传输出错、I/O传输结束等。

    • 外中断

    对某中央处理机而言,他的外部非通道式装置所引起的中断称为外部中断。例如:时钟中断、操作员控制台中断、多机系统中CPU到CPU的通信中断。

    • 机器故障中断

    当机器发生故障时所产生的中断叫硬件故障中断。例如:电源故障、通道与主存交换信息是主存储错、从主存取指令出错、取数据错、长线传输时的奇偶校验错等。

    • 程序性中断

    在现行程序执行过程中,发现了程序性的错误或出现了某些程序的特定状态而产生的中断称为程序性中断。这些程序性错误有定点溢出、十进制溢出、十进制数错、地址错、用户态下用核态指令、越界、非法操作等。程序的特定状态包括逐条指令跟踪、指令地址符合跟踪、转态跟踪、监视等。

    • 访管中断

    对操作系统提出某种需求(如请求I/O传输、建立进程等)时所发出的中断称为访管中断。

    back

    这是小睿的博客,如果需要转载,请标注出处啦~ヾ(≧▽≦*)o谢谢。
  • 相关阅读:
    (IDEA) VCS-->Import Into Version Control没有Share Project(Subversion)这个选项。
    Maven学习笔记(二)—— 整合SSH框架
    Maven学习笔记(一)—— Maven基础
    使用IDEA完成maven整合SSH框架时抛出Hibernate : Mapping (RESOURCE) not found
    mysql性能的检查和优化方法
    每个php程序员都应该知道的15个最佳PHP库
    linux oracle 11g 漏洞补丁升级
    linux 启动MongoDB
    linux 7 查看oracle 11g版本号
    linux 清除缓存命令
  • 原文地址:https://www.cnblogs.com/Yunrui-blogs/p/12524355.html
Copyright © 2011-2022 走看看