浅谈进程控制

摘要

CPU是计算机中最宝贵的资源,为了对CPU进行有效的管理,使之能够得到充分的利用,操作系统引入了并行处理与资源共享的概念,而正因为要实现并行运行和资源共享,操作系统引入了进程,以它作为分配资源和运行的独立单元。通常通过进程控制块、进程的几种状态来描述进程。

进程控制是通过使用一些具有特殊功能的程序段来创建、撤销进程以及完成进程间的各状态间的转换的,从而达到多进程高效率并发执行和协调、实现资源共享的目的。而进程调度算法是一种服务于系统目标的策略,对于不同的系统和系统目标,采用不同的调度算法。

进程的同步和互斥是多个进程,既独立又并发地执行,进程之间可以合作的完成一项任务,可以共享一种系统资源,可以相互支持和依赖,甚至制约对方。运行同步与互斥的概念,可以解决现实生活中类似“生产者--消费者”等诸多问题。

线程是为了将进程的调度和资源分配独立开,线程仅作为独立运行的实体,不进行资源的分配。

最后是死锁的预防、避免、检测和解除等。对于理解死锁的一系列问题,可以解决现实生活中类似“银行家算法”等问题。

正文

一、进程的定义和特征

1.1 进程的定义

进程 的概念有两个要素:一个是有一段程序代码,另一个是处于运行过程中。两个要素缺一不可。同一个程序同时被系统的两个用户启动,则两个运行过程视为不同的两个进程。国内学术界较为一致的看法是:进程是一个具有独立功能的程序关于某个数据结合的一次运行活动。

1.2 进程的特征

a)动态性:进程是程序在数据集合上的一次执行过程,是动态概念,同时,它还有生命周期,由创建而产生,由撤销而消灭;而程序是一组有序的指令集合,是静态概念,所以,程序作为一种系统资源是永远存在的;

b)独立性:进程既是系统中资源分配和保护的基本单位,也是系统调用的独立单位(单线程进程)。凡是未建立进程的程序,都不能作为独立单元参与运行。通常,每个进程都可以以各自独立的速度在CPU上进行。

c)异步性:是指进程由于共享资源和协同合作时产生的相互制约关系,造成进程执行的间断性,即进程以各自独立的、不可预知的方向和速度向前推进,或者说。,进程实体按异步方式执行。为此,系统必须提供某种设施,来保证进程间能协同操作和共享内存;

d)并发性:进程可以并发地执行。对于一个单处理器的系统来说,m个进程P1,P2……Pm是轮流占用处理器并发执行。

1.3 进程与程序

a)进程是程序的一次执行过程,而程序是一组指令的有序集合;

b)进程具有动态性、独立性、并发性和异步性等,但程序不具有这些特性;

c)进程包含程序、数据和PCB;

d)程序多次运行,边可以产生多个进程。

从以上四点可以看出进程和程序的差异,即程序是静态的概念,而进程是动态的概念。程序可以长期保存,而进程是短暂存在的,它动态地产生、变化和消灭。程序和相应的进程之间,有点像乐谱和相应演奏之间的关系,乐谱可以长期保存,而演奏是一个动态的过程。

二、进程的描述

一个进程是一个程序对某种数据集的执行过程,是分配资源的基本单位。

2.1 进程的表示

为了能够描述进程的动态变化过程,使之能独立运行,应为每一个进程配置一个PCB。这样,每个进程都有程序段、数据和一个PCB三部分组成,下面分别描述这三个部分:

a)程序段:描述了进程所要完成的功能;

b)数据段:程序执行时所需要的数据和工作区;

c)PCB:为了描述和控制进程的运行,系统为每一个进程定义了一个数据结构,

2.2进程的调度状态及其转换  

进程执行时的间断性,决定了进程可能有多种状态。实际上,在进程的生命周期中,进程至少具有以下三种状态:

a)就绪状态(ready):进程以获得除处理机以外的所有资源,一旦分配到了处理机就可以立即执行,这时进程就处于就绪状态;

b)执行状态:执行状态又称为运行状态,当一个进程获得必要的资源,并占有处理机,即在处理机上运行时,进程所处了状态就是执行状态;

c)阻塞状态(blook):阻塞状态又称为等待状态,正在执行的进程,由于发生某事件而暂时无法执行下去(如等待输入/输出完成),此时进程所处的状态称为阻塞状态。

注:

1. 进程之间的状态转换并非都是可逆的。进程既不能从阻塞状态转换成运行状态,也不能从就绪状态转换为阻塞状态;

2.进程之间的状态转换并非是主动的。在很多情况下状态转换是被动的。

三、进程控制

所谓进程控制,就是系统使用一些具有特定功能的程序段来创建和撤销进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的功能。

进程控制功能是通过各种原语来实现的。所谓原语,是管态下执行的某种具有特殊功能的程序段。原语可分成两类:一类是机器指令级的,其特点是执行期间不允许中断。另一类是功能级的,其特征是作为原语的程序段不允许并行执行。

这两类原语都在系统态下执行,且都是为了完成系统管理所需要的功能和被高层软件所调用。用于进程控制的原语一般有创建原语、撤销原语、阻塞原语和唤醒原语。

四、进程调度

在多道程序处理系统中,用户进程数一般都多于处理机数,这将导致用户进程相互争夺处理机。另外,系统进程也同样需要使用处理机。这就需要程序按一定的策略,动态的把处理机分配于就绪队列中的某一个进程,使之执行。

4.1 进程调度的方式

a)抢占方式(优先级);

b)非 抢占方式(继续或阻塞);

c)选择抢占方式(特征位)。

4.2进程调度算法

a)先来先服务调度算法;

b)短执行进程优先算法;

c)最高优先级优先调度算法;

d)时间片轮转法。

五、进程的同步与互斥

在操作系统的支持下,多个进程即独立又并发的执行。然而,进程之间 可能合作完成一项任务,可能共享一种系统资源,可能互相支持和依赖,甚至制约对方。为了协调进程间的这种关系,操作系统必须进行进程间的协调。系统中的进程合作和资源共享,使进程间可能产生两种形式的制约关系,即直接相互制约和间接相互制约。

六、线程

6.1 线程的基本概念

进程是一个拥有资源的独立单元,进程同时又是一个被处理机独立调度和分配的基本单元。

线程是进程内一个相对独立的可以并行执行的单元,是进程内的一个可调度实体;

线程具有很多传统进程所具有的特征,所以又称为轻型进程或进程元。而把传统的进程称为重型进程,它相当于只有一个线程的任务。进程内至少包含一个线程,也可以包含多个线程。

6.2线程的类型

a)用户级线程:仅存在于用户空间,没有操作系统内核的支持,完全在用户级提供一个线程库来实现多线程;

b)内核级线程:是操作系统支持的线程,操作系统维护内核级线程的各种管理表格,负责线程在处理机上的调度和切换,线程是CPU调度的基本单位。

c)混合型线程:用户级线程和内核级线程实现方式各有优缺点,混合使用,这样有利于用户编写并发程序又能够最大限度的发挥多处理机的并发性。

6.3线程和进程的关系

进程是资源拥有的基本单元,而线程是调度和分派的基本单位;线程不拥有系统资源;操作系统对进程的创建与撤销所作的开销远大于对线程的创建与撤销。

七、死锁  

7.1死锁产生的原因

a)竞争临界资源;

b)进程推进顺序不当。

7.2死锁的预防与避免

死锁的预防就是通过破坏产生死锁的必要条件之一,使系统中不发生死锁的一种操作系统来对付死锁的方法。这种方法是在系统运行之前就采取措施,即在系统设计时确定资源分配算法,消除发生死锁的任何可能性。方法:1.静态资源分配法;2.有序资源使用法。

死锁的避免就是将限制条件弱化,设置一种安全状态。

7.3死锁的检测与解除

死锁检测程序的任务就是实际确定系统是否存在死锁,并试图找出陷入死锁的进程和资源。通常采用检测算法主要是通过对资源分配图的化解来确定资源分配时是否有循环等待事件。

当死锁检测程序检测到系统中出现死锁时,应该立即把系统从死锁状态中解脱出来。常见的死锁解除方法有两种:撤销进程法和挂起进程法。

注:1.化解资源分配图:是指依次把所有资源请求都能满足的进程结点变成孤立结点的过程(即消去其请求边和分配边,回收资源)。

进程控制-----操作系统相关推荐

  1. 模拟进程创建、终止、阻塞、唤醒原语_操作系统基础8-进程及进程控制

    进程(Process) 的定义 从不同的角度,进程可以有不同的定义,传统典型的定义: 进程是程序的一次执行过程. 或者:一个正在执行的程序的实例 进程是一个程序及其数据在处理机上顺序执行所发生的活动 ...

  2. 4 操作系统第二章 进程管理 进程控制、通信

    文章目录 1 进程控制 1.1 进程控制 1.2 进程控制实现 1.3 进程创建 1.4 进程终止 1.5 进程阻塞与唤醒 1.6 进程切换 1.7 进程控制小结 2 进程通信 2.1 共享通信 2. ...

  3. 操作系统学习笔记-2.1.3进程控制

    操作系统学习笔记-2019 王道考研 操作系统-2.1.3进程控制 文章目录 3.进程控制 3.1知识概览 3.2 基本概念 3.2.1什么是进程控制? 3.2.2如何实现进程控制? 3.3进程控制相 ...

  4. 操作系统之进程管理:3、进程控制(进程状态转化的实现)、原语、进程通信(共享、管道、消息)

    3.进程控制 进程控制 思维导图 进程控制相关的原语 创建原语 撤销原语 阻塞原语.唤醒原语 切换原语 原语要做的几件事 进程通信 思维导图 进程通信方式 数据共享 管道通信 消息传递 进程控制 1. ...

  5. (王道408考研操作系统)第二章进程管理-第一节3:进程控制(配合Linux讲解)

    文章目录 一:如何实现进程控制 二:进程控制原语 (1)进程创建 A:概述 B:补充-Linux中的创建进程操作 ①:fork() ②:fork()相关问题 (2)进程终止 A:概述 B:补充-僵尸进 ...

  6. 实验四 linux进程控制实验报告,Linux系统进程控制操作系统实验报告4

    实验课程名称:操作系统 实验项目名称Linux系统进程控制实验成绩 实验者专业班级组别 同组者实验日期年月日第一部分:实验分析与设计(可加页) 实验内容描述(问题域描述) 要求:掌握Linux系统中进 ...

  7. 进程的描述与控制 操作系统第二章知识点归纳总结

    系列文章 第一章 操作系统概述 第二章 进程调度 第二章 进程的描述与控制 2.1 什么是进程 程序代码+相关数据+程序控制块PCB 当处理器开始执行一个程序的代码时,称这个执行的实体为进程 2.1. ...

  8. 【操作系统/OS笔记09】线程、线程的实现、上下文切换、进程控制

    本次笔记内容: 7.8 为什么使用线程 7.9 什么是线程 7.10 线程的实现 7.11 上下文切换 7.12 进程控制--创建进程 7.13 进程控制--加载和执行进程 7.14 进程控制--等待 ...

  9. 操作系统学习笔记02【进程控制——进程互斥的硬件实现方法】【自用】

    1.进程控制 什么是进程控制? 如何实现进程控制: 为了避免把某一进程pbc从一个队列转移到另一个队列,但是并没有把pbc内的状态标志改为新的对应状态,从而导致pcb的状态标志与实际所处队列不一样这一 ...

最新文章

  1. eclipse中一个项目引用另一个项目的方法
  2. c++ websocket客户端_你要的websocket都在这,收好不谢~~~
  3. 2020-11-15(IEEE浮点数计算)
  4. HarmonyOS之数据管理·关系型数据库的应用
  5. Spring 的核心API
  6. java转换为字符串_java – 如何从int转换为字符串?
  7. 软件工程导论课程主页 :12-13-2
  8. 用友php漏洞,用友CRM注入漏洞(无需登录通杀所有版本)
  9. 为什么程序员纷纷反对微软收购GitHub?
  10. R packages for big data:data.table
  11. 怎么强制弹出窗口永远在最前面
  12. vue3 使用sass/scss
  13. linux文件加解密,linux 系统下对文件进行加解密的方法参考总结
  14. [iuud8]ios不同版本下推送本地通知
  15. python pgm 转 bmp
  16. java8 新特性 ibm_【Java8新特性】Streams(流)
  17. 关于ios 卡顿检测分析
  18. RTT简介及其简单应用
  19. openstack heat 编排模板(HOT)指南
  20. 承先启后 - 2021 年开源社顾问委员会年度会议圆满结束

热门文章

  1. 【附源码】计算机毕业设计SSM社区居家养老服务管理系统
  2. 智能剪辑系统爆款生成器--移动端(小程序)手机版
  3. 物流云管理系统-免费版
  4. 基于Spring Boot的学生志愿者管理系统的设计与实现
  5. JavaScript菜鸟教程 grammar
  6. Flask项目目录设计
  7. windows错误事件10016解决方案
  8. 解决UEditor超出最大字数后只提示不限制的问题
  9. 【AI生产力工具】ChatPDF:将 PDF 文档转化为交互式阅读体验的利器
  10. 一致性哈希的简单认识