• 操作系统精髓与设计原理(二)——进程描述和控制



    现代操作系统最基础的任务就是进程管理。

    什么是进程

    开发操作系统是为了给应用程序提供一个方便、安全和一致的接口。

    进程和进程控制块

    上一章对进程的定义:

    • 一个正在执行的程序。
    • 计算机中正在运行的程序的一个实例。
    • 可以分配给处理器并由处理器执行的一个实体。
    • 由单一的顺序的执行线程、一个当前状态和一组相关的系统资源所描述的活动单元。

    可以把进程当成由一组元素组成的实体,进程的连个基本的元素是程序代码和代码关联的数据集。
    进程实体包括:进程控制块(PCB)、程序段、数据集。
    进程可以表征为一下的元素:

    • 标识符
    • 状态
    • 优先级
    • 程序计数器
    • 内存指针
    • 上下文数据
    • io状态信息
    • 记账信息:可能包括处理器的时间总和、使用的时钟数总和、时间限制和记帐号等

    前述的列表信息存在一个叫做进程控制块 的数据结构中。进程控制块包含了充分的信息,这样就可以中断一个进程的执行,并且在后来恢复执行程序时就好像进程未被中断过。

    进程状态

    在设计控制进程的程序时,第一步就是描述进程的状态。

    两状态进程模型

    运行态和未运行态。
    状态变迁图

    进程的创建和终止

    进程的生存期都围绕着进程的创建和终止。
    进程的创建:当一个新进程添加到那些正在被管理的进程集合中去时,操作系统需要建立用于管理该进程的数据结构,并在内存中给它分配地址空间。
    进程派生:一个进程引发另一个进程的创建。前一个进程叫做父进程,被派生的叫做子进程
    进程终止:批处理作业中包含一个Halt指令或用于终止的操作系统显式服务调度用来终止。Halt指令将产生一个中断,警告操作系统一个进程已经完成。

    五状态模型

    运行态、就绪态、阻塞、新建态、退出态。
    五状态进程模型
    新建态时,程序还保存在外存中。
    对于没有优先级的方案中,可以将等待的进程放入FIFO队列中等待调度。

    被挂起的进程

    如果把被阻塞的进程都堆积在内存中,将耗费大量的内存空间。
    进程状态模型增加一个状态:挂起态。当内存中所有的进程都处于阻塞态时,操作系统可以把其中的一个进程置于挂起态,并将他转移到磁盘中,内存中释放的空间可以被调入的另一个进程使用。
    挂起态

    进程描述

    操作系统维护着四种不同类型的表:内存、IO、文件和进程。
    操作系统用于控制进程的属性集合称为进程控制块。程序、数据、栈和属性的集合称为进程映像。
    进程控制块信息分为三类:

    • 进程标识信息
    • 处理器状态信息
    • 进程控制信息

    进程控制

    进程创建

    1. 给新进程分配一个唯一进程标识符
    2. 给进程分配空间
    3. 初始化进程控制块
    4. 设置正确的连接
    5. 创建或扩充其他数据结构

    进程切换

    何时切换进程:时钟中断、IO中断、内存失效。

    1. 保存上下文,包括程序计数器和其他寄存器。
    2. 更新当前处于运行态进程的进程控制块,包括将进程状态改变的到另一状态。还必须更新同其他相关域,包括离开运行态的原因和记账信息。
    3. 将进程的进程控制块转移到相应状态的队列。
    4. 选择另一进程执行。
    5. 更新所选进程的的进程控制块,包括将状态改为运行态。
    6. 更新内存管理的数据结构。
    7. 恢复上下文。
  • 相关阅读:
    fiddler 抓取 安卓模拟器 https包
    heidiSQL使用简介
    weblogic重启脚本
    svn命令在linux下的使用
    LVS之NAT和DR服务脚本
    LVS之NAT模型、DR模型配置和持久连接
    apache ab压力测试报错apr_socket_recv
    LVS负载均衡模型及算法概述
    Orcale11g单机安装与卸载
    IPC相关的命令
  • 原文地址:https://www.cnblogs.com/lippon/p/14117722.html
Copyright © 2020-2023  润新知