zoukankan      html  css  js  c++  java
  • 操作系统-进程的状态以及转换

    进程的引入

    程序:就是一个指令序列
    早期的计算机(只支持单道程序)
    内存中把一个应用程序分为程序段和数据段,这个应用程序在运行期间占据内存,IO设备,CPU,所以浪费的资源较大。在引入多道批处理后,内存中可以放多个程序,各个程序的代码段和数据段都不相同,操作系统是怎样找到各个程序存放的位置呢?

    为了方便操作系统管理各个程序并发执行,引入了进程,进程实体的概念,系统在执行一个程序之前,会为每个程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放的位置)

    进程的定义

    程序段、数据段、PCB三部分组成了进程实体(进程映象)。一般情况下,我们把进程实体简称为进程。例如,所谓创建进程,实质上是创建进程实体中的PCB ;而撤销进程,实质上是撤销进程实体中的PCB。
    从不同的角度来看,进程哟不同的定义,例如:

    1. 进程是程序运行的一个过程
    2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
    3. 进程是具有独立功能的程序在数据集合上运行的过程,他是系统资源分配和 调度的基本单位(在线程出现之前)

    进程就是进程实体的运行过程,是系统进行资源分配和调度的基本单位。

    注意:严格上来讲进程和进程实体是不一样的,进程实体是静态的,进程是动态执行的一个过程。不过除非题目专门考察二者的区别否则可以认为进程就是进程实体。

    进程的组成

    进程由PCB,程序段,数据段三部分组成;
    PCB:进程控制块,包含有进程的描述信息(UID,PID),进程控制和管理信息(进程优先状态,进程优先级),资源分配清单(程序段指针,数据段指针),处理机相关信息(寄存器的值)。
    程序段:存放要执行的代码
    数据段:存放在运行过程中的各种数据

    进程的组织形式

    链接方式:按进程状态将PCB分为多个队列,
    索引方式:按照进程状态建立几张索引表,表的每项都指向一个PCB
    以上两种方式操作系统都持有指向各个索引表的指针。

    进程的特征

    动态性:动态性是进程最基本的特征,进程是程序的一次执行过程,是动态的产生、变化、消亡
    并发性:内存中有多个进程实体,各个进程可以并发执行
    独立性:进程是能够独立运行,独立获取资源、独立接收调度的基本单位
    异步性:各个进程按各自独立的,不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
    结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成。

    进程的状态

    进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会变化的。为了方便对进程的管理,操作系统需要将进程何力地划分为几种状态。
    进程的三种基本状态
    运行态(Running)、就绪态(Ready),阻塞态(Wait/Blocked)
    Running:占有CPU,在CPU上运行(这时候的进程是占有其他资源和CPU)
    Ready:已具备运行条件,但是没有空闲的CPU,所以出于闲置状态。(万事俱备,只欠CPU)
    Wait/Blocked: 因等待某一事件而不能运行。(进程没有获得CPU和资源)
    在单核处理器环境下,每一时刻最多只有一个进程出于运行态。(双核环境下可以同时有两个进程出于运行态)
    另外两种状态
    创建态(New):进程正在被创建,操作系统为进程分配资源,初始化PCB
    终止态(Terminated,又称结束态):进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB。

    进程状态之间的转换

    • 就绪态->运行态:进程被调度 运行态->就绪态:时间片执行完了,或者CPU开始执行优先级更高的进程

    • 运行态->阻塞态:等待系统资源分配,或等待某一事件发生(进程的主动行为)

    • 阻塞态->就绪态:资源分配到位,等待时间发生。(进程的被动行为)

    • 创建态->就绪态:系统完成创建进程的相关工作 运行态->终止态:进程运行结束或者遇到了不可修复的错误或异常

    进程状态转换

  • 相关阅读:
    linux每日命令(29): chown命令
    linux每日命令(28): charp命令
    linux每日命令(27): chmod命令
    linux每日命令(26):Linux文件属性详解
    linux每日命令(25): linux文件类型与扩展名
    linux每日命令(24): linux目录结构
    linux每日命令(23): find命令之xargs
    linux每日命令(22): find命令参数详解
    2017年12月31日
    Python使用otp实现二步验证
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121951.html
Copyright © 2011-2022 走看看