一、什么是并发

  并发是什么?很简单,前面介绍的多道批处理系统就是典型的并发执行。这里再次过一遍高性能的多道批处理系统,其本质在于保持对系统资源的占用,CPU运行一个任务,若这个任务中断,如需要IO请求之类的,那么CPU直接去运行其他任务,原任务的IO请求由IO设备自己处理。有一个著名的图——表示并发:

  

  如图,假设计算机有输入、计算、输出这三个部件,一组任务顺序执行,并发就是如图流水线一样的各部件配合。某一时刻,只有一个程序在占用CPU(计算设备)。那么什么是并行呢?并行是建立在多核的基础上的,即多个CPU同时运行,那么有几个CPU,同一时刻就有几个程序同时运行。所以电脑只有一个CPU的苦逼程序员只能并发了。

  现代系统的实际并发比上图要复杂的多,现代计算机系统的并发是以时间片为基础的,即在很短的时间内,每个进程都分别运行一次。这样,宏观上,每个进程都在不断的运行,而实际上每个进程的运行都是间断运行的。那么问题来了,什么是进程呢?

 


二、什么是进程

  进程的目的就是为了对并发执行的程序进行控制。进程实体由程序段、数据段、PCB三部分构成。我们知道计算机运行的本质就是对数据的处理的机器。

  ——数据段就是各种数据

  ——程序段就是一系列操作计算机的指令,即操作数据的方法策略

  ——PCB 即进程控制块(Process Control Block),控制运行程序段的时机。

  书本上是这样定义进程的:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位”。

  让我们理清楚思绪,进程是什么?进程就是进程实体的运行过程,是一个过程。就是说,进程实体不运行,那就不叫进程。一个没有被调用的进程实体,不叫进程。所以说,进程有动态的特征。上面提到,进程的目的就是为了对并发执行的程序进行控制。为了在一个时间片内,运行多个程序才引进进程。所以说,进程有并发的特征。进程实体是一个拥有独立的资源(程序段和数据段)、(因为PCB)能独立地接受调度并独立的运行的基本单位。所以说,进程有独立的特征。进程运行的过程中,由于涉及到的资源众多、运行环境不一定,也受到其他进程的影响,所以,进程的运行情况是不可具体预知的。所以书本定义,进程按各自独立的、不可预知的速度向前推进。所以说,进程有异步的特征。如上文所说,进程是进程实体这一数据结构被调用运行。所以说,进程有结构的特征。

  可以这么说,真正理解了进程的这五个特征,才算理解了进程这个概念。高手跟我们这些菜鸟的最大区别,不就在于对系统的理解吗?   


三、进程的状态

  进程有3种基本状态:

(1)就绪(Ready)状态

  此时的进程拥有完整的进程实体,只要获得CPU,即只要被调用就能马上执行,这种状态被称为就绪状态。处于这种状态的进程都会被放进就绪队列,以便随时接受CPU调用。

(2)执行状态

  此时的进程已经获得CPU,正在执行。

(3)阻塞状态

  执行中的进程,因为某种原因(IO请求)无法继续执行的一种暂停状态,暂停完毕就会变成就绪状态。

  除了以上的3种基本状态,有的系统额外还增加了一种状态。

(4)挂起状态

  为什么需要挂起状态?因为有时候希望某些正在执行的线程暂停下来,持续一段时间后,让它回到之前的状态。

  挂起状态是一种静止的状态,相当于把某个进程从执行的流水线上拿出来,等到需要的时候再把它放进去继续执行。我们来看前三种基本状态,就绪 ->执行 -> 阻塞,阻塞完毕又回到就绪。由于线程的异步性,阻塞是会在不确定的有限时间内结束的。就是说,三种基本状态是动态的,通常不存在一个线程一直处于某种状态。挂起状态相对于它们来说,是静止的,因为它是被控制的,是对以不可预知的速度前进的线程的一种干扰。

  此外,为了管理的需要,通常还有两种比较常见的状态。

(5)创建状态

  我们知道进程实体包括程序段、数据段和PCB。创建状态指的是PCB已经被创建,因为某些原因(程序段或数据段未放入内存等),进程还未被放入就绪队列的这种状态。

(6)终止状态

  线程的终止也是有个过程的。终止状态指的是线程除了PCB以外的系统资源都被回收后的状态。此时线程真正终止。


四、进程的核心PCB

(1)PCB是什麽?

  作为进程实体的一部分,PCB是用来控制进程运行的一种数据结构。它包含了进程的状态、优先级、运行的状态、处理机状态、程序数据的内存地址等各种信息,一旦被操作系统调用,操作系统就从PCB中获取的信息,来恢复进程阻塞前的现场,继续执行。PCB一般都保存在CPU的寄存器中。

(2)PCB包含的信息

  1)进程标识符。用来标识唯一的一个进程。包括方便系统调用的内部标识符和方便用户调用的外部标识符。进程标识符通常还包括父、子进程,以及所属用户等信息。

  2)处理机状态信息

    处理机状态信息指的是处理机调用线程时的环境信息。处理机处理调用进程时,运行过程中的许多信息都放在处理机的寄存器中。进程阻塞或挂起时,寄存器中的运行信息会保存到PCB中,以便进程下次被调用时恢复之前的运行现场。

  3)进程调度信息

    进程调度信息指的是本进程调度所需的必要信息。包括,本进程的状态(6种之一)、进程优先级、进程等待时间、进程执行时间(可能决定优先级)、阻塞原因、父子进程关系等。

  4)进程控制信息

    进程控制信息指的是进程的资源信息和进程切换时的所需信息,包括进程的程序和数据的内存地址、进程同步和通信的机制、进程资源的清单、指向下一个进程PCB的指针(若PCB的组织方式是链接方式)等。

(3)PCB的具体信息(结构)

  这里我们来看一下Unix中,PCB的具体结构,以便对PCB有一个清晰的认识。这玩意其实就这么一回事:

(下面代码摘自http://blog.sina.com.cn/s/blog_65403f9b0100gs3a.html)

 View Code

(4)PCB的组织形式

  系统中拥有众多PCB,对应着众多进程,那么这些PCB怎么组织的呢?一般有两种组织方式:链接方式和索引方式。这两种方式的共同点在于,正在执行的PCB,都有一个执行指针指向它。不同在于,链接方式的就绪队列、阻塞队列等,通过指针链接的方式组织。进程切换时,直接取就绪队列指针即可,因为它指向的就是当前优先级最高的就绪的PCB,随后就绪队列指针指向其指向的下一个PCB。索引方式的就绪队列、阻塞队列等,通过一个表的形式来组织,就绪队列指针指向这个表的第一条数据。这个表本质是一个指针数组,第一个指针指向的当然是优先级最高的就绪进程。


五、进程控制

  进程控制是什麽?本质就是切换进程状态的控制。 一般由操作系统中的原语实现。原语即具有“原子操作”这种属性的若干指令集合,说白了,就是这些指令集合,要么全部执行,要么全部不执行。不同操作系统的原语也是有区别的。

(1)、进程创建

  进程可能是由系统内核收到请求而创建,也可能由进程本身创建,由进程本身创建的进程一般是子进程,它继承父进程拥有的全部资源。创建进程由进程创建原语实现,通常由下面几个步骤:

(2)、进程终止

  进程的终止是由操作系统执行的。当一个进程因各种原因结束时,会通知操作系统。操作系统会调用进程终止原语来终止对应进程:

(3)进程阻塞

  进程的阻塞是由进程自身主动执行的。但进程发现自身无法继续执行时,就主动调用进程阻塞原语,把自己阻塞:

(4)进程唤醒

  进程的唤醒通常由其他线程执行。但其他线程由于某些事件希望执行线程执行时,会调用进程唤醒原语将指定进程唤醒:

  

  值得注意的是,进程唤醒和进程阻塞是一对作用刚好相反的原语。阻塞的进程必须由进程唤醒操作才能继续执行。

(5)进程挂起和激活

  进程挂起由自身或其他进程执行。进程激活由其他进程执行。过程很简单,就不画图了:

  1)进程挂起:若进程为活动就绪,就将其改为静止就绪;若进程为活动阻塞,就将其改为静止阻塞;若进程正在执行,则让调度程序重新调度。

  (PS:由于没有挂起队列,所以需要把进程的PCB复制到指定的内存区域)

  2)进程激活:若进程为静止就绪,就将其改为活动就绪;若进程为静止阻塞,就将其改为活动阻塞;

操作系统 进程(上)相关推荐

  1. LXC linux容器简介——在操作系统层次上为进程提供的虚拟的执行环境,限制其使用的CPU和mem等资源,底层是linux内核资源管理的cgroups子系统...

    1.LXC是什么? LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术. 2.LXC可以做什么? LXC可以在操作系统层次上为进程提供的虚拟的执行环境,一个虚拟的 ...

  2. linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt

    <linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...

  3. 操作系统——进程管理(一文弄懂进程间的那些事)

    进程管理 进程 进程的概念 PCB 进程的组成 进程的特征 进程的状态与转换 进程的状态 进程间的转换 进程的组织方式 链接方式 索引方式 进程控制 怎么实现进程控制--原语 进程的创建 进程的终止 ...

  4. 操作系统——进程之基本介绍

    操作系统--进程之基本介绍 一.进程的概念 1.进程和进程实体 2.进程的组织方式 3.进程的特征 二.进程的状态与转换 1.进程的状态 2.进程的转换 三.进程控制 1.定义 2.原语控制 ①创建原 ...

  5. 四级网络工程师笔记-操作系统(上)

    四级网络工程师笔记-操作系统(上) 前言: 系列博文 操作系统原理 第一章 操作系统概论 1. 操作系统概述 2. 操作系统特征 3. 操作系统结构设计 4. -般指令和特权指令 5. 研究操作系统的 ...

  6. 操作系统——进程之处理机调度

    操作系统--进程之处理机调度 一.处理机调度的本概念和层次 1.高级调度(作业调度) 2.中级调度(内存调度) 3.低级调度(进程调度) 二.进程调度的时机.切换与过程.方式 1.进程调度的时机 2. ...

  7. 操作系统-进程方案知识详解

    操作系统-进程方案 进程的概念 进程调度 操作进程 进程间通信 系统的例子IPC 客户机-服务器系统中的通信 目标 介绍进程的概念--一个正在执行的程序,它构成了所有计算的基础 描述过程的各种特性,包 ...

  8. 操作系统 - 进程和内存

    操作系统 - 进程和内存 操作系统内核和Shell 系统调用 进程管理 1. 进程控制块PCB 2. 进程的状态 3. 进程通信 3.1 共享存储 3.2 管道 Or 无名管道 3.3 有名管道 3. ...

  9. 一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户...

    一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户 启动任务管理器:右键计算机--管理--"服务和应用程序"选项--"服务 ...

  10. 银河麒麟桌面操作系统V10上安装使用MySQL5.7、MySQL Workbench

    前言 本文介绍银河麒麟桌面操作系统V10上通过麒麟软件商店安装MySQL5.7.MySQL Workbench及其基本使用方法 一.安装MySQL5.7 点击UK图标.所有程序,找到麒麟软件商店 输入 ...

最新文章

  1. Docker 制作镜像-redis
  2. DOS 批处理命令学习1
  3. 多思计组原理虚拟实验室_先睹为快!汽院实验室组团来亮相_搜狐汽车
  4. 获取滚动条宽度代码(记录)
  5. 关于android MTK相机L版本,切换屏幕比例后,分辨率随之改变,但重新进入相机后原有分辨率不再生效问题...
  6. POJ1742 Coins(DP)
  7. feko软件_计算电磁学各种方法和电磁仿真软件简述
  8. 视觉SLAM笔记(36) 3D-2D: PnP
  9. mysql 检索操作时间段_postgresql数据库使用说明_实现时间范围查询
  10. 史上最大漏洞危机再生新变种,大量芯片受感染
  11. pat上写java程序_如何运行Java程序和设置CLASSPAT
  12. 如何将CAD图纸转换成彩色jpg
  13. digester java_Java XML解析之Digester的使用
  14. zyf的童年(异或运算的运用)
  15. mysql spring lobhandler_Spring让LOB数据操作变得简单易行
  16. 云计算大数据基础知识点
  17. html 导出excel 列被合并,前端实现导出excel单元格合并和调整样式
  18. OpenLayers中文文档2栅格重投影
  19. 多边形交叉区域计算面积_使用GPC或Clipper计算多边形交叉区域
  20. Infrastructure-Based Object Detection and Tracking for Cooperative Driving Automation: A Survey

热门文章

  1. Python使用matplotlib可视化模拟龟兔赛跑折线图
  2. 攻击需要成本吗_光伏智能温室建设成本高吗?需要哪种钢结构?
  3. MySQL引擎innodb和mysum_mysql数据库引擎 MyISAM和 InnoDB区别
  4. PHP password_hash 与 password_verify 使用
  5. 2019年三峡大学计算机考研名单,三峡大学2019硕士研究生复试录取方案
  6. java trimprefix_MyBatis动态SQL中的trim标签的使用方法
  7. 植树问题python_《程序员的数学》思考题(一)
  8. 安装增强功能失败:Could not mount the media/drive C:\Program Files\Oracle\VirtualBox/VBoxGuestAdditions.iso
  9. LINUX编译Android doubango
  10. 解决办法:ubuntu登录后,桌面空空如也,状态栏没了