美文网首页
操作系统(二)——进程管理

操作系统(二)——进程管理

作者: 花卷呀花卷 | 来源:发表于2020-03-25 10:37 被阅读0次

程序活着的标志是进程,把进程总结为一个公式:进程=程序+状态。
多个进程在内存中运行过程就像一场社交活动,需要交流,为了保证社交活动能够正常进行就要对进程的行为作出干预(调度)。因此需要对单个进程、多个进程的交流进行管理。

image.png

(一)进程

1.什么是进程

关于进程的定义有很多,其中一个定义是:进程是进程实体的运行过程,是系统进行资源分配调度的一个独立单位。

其实进程也就是程序在内存中运行时的标志,当一个程序被执行时,它从外存被调入到内存中工作,通过进程来标志它的工作状态。因此需要创建小本本一样东西来记录它的状态,这个东西就要做进程控制块(Process Control Block,PCB),一旦PCB被创建了,也就意味着该程序的进程创建了。

程序被调入内存.png

2.进程为什么会出现

由于多道批处理操作系统的出现,多个程序可以并发运行,并且可共享资源,这导致了它们失去了封闭性。一旦失去封闭性,某个程序执行的命令、使用的变量都会受到其他程序的影响,因此引入进程来管理程序的运行状态。

3.进程有哪些特征

每个程序运行都会创建一个进程,进程通过PCB来记录动态运行时的状态,既然PCB用于记录,那么要符合一定的约束条件,记录必须描述,才便于管理。由此可得出进程的特征:

  • 动态性,这是一个进程的生命周期
  • 并发性,多个程序可并发执行,使得多个进程可并发运行
  • 独立性,每个进程都是独立的模块,运行自己的生命周期
  • 异步性,由于进程是独立运行的,由于其运行速度不一致导致异步
  • 结构性,进程是由程序段、数据段和PCB组成

4.如何创建一个进程

程序放在外存中,当用户运行某个程序时,该程序会从外存调入到内存中,这是进程创建的过程。具体实现过程如下图所示:

进程创建过程

PCB记录进程的基本描述信息、控制和管理等一系列信息。其中一项——进程当前状态,不断更新进程的生命状态。进程有5种生命状态:新建、就绪、运行、阻塞和终止。
进程一旦被创建就加入到就绪队列等待调度,此时进程获得除处理机以外的所有资源,只要进程获得处理机便进入到运行态;进程在运行一个时间片周期后,没有执行完毕,重新调回就绪队列中,如果执行过程中需要获取如打印机这类资源,则调入阻塞队列;只要进程等待事件到来,便重新加入就绪队列中。

image.png

5.什么是线程

线程是“轻量级进程”。如果把进程比作工厂,那么线程就是工厂里的生产线,生产线上的元件是共享资源。
同进程一样,线程可以创建和撤销子线程,多个线程之间可以并发执行,同时它也有就绪、阻塞和运行三种状态。

线程示意图

6.线程实现了什么

由于进程的并发性,使得其在创建、相互切换等花费较大的时空开销,引入线程,目的就是为了实现减小程序在并发执行时所付出的时空开销。
体现在以下方面:

  • 调度。引入线程后的操作系统,以线程作为独立调度的基本单位,而进程作为拥有资源的基本单位,如此,在同一进程内切换线程不会引起进程的切换,但是不同进程切换线程,会引起线程切换;
  • 资源。进程是拥有资源的基本单位,线程共享进程内的资源,这大大减少了资源开销;
  • 并发。多个线程可并发执行,提高系统吞吐量;
  • 通信。进程间通信需要进程同步和互斥手段辅助,线程间直接读/写进程数据段来进行通信。

(二)调度

1.进程调度史

在多道批处理系统中,进程并发运行,争夺处理机,为了解决这个问题,使用处理机调度,利用公平、高效的算法选择一个进程运行。

程序执行往往经历三级调度:

  • 作业调度:辅存与内存之间的调度,每个作业只调入一次,调出一次,每次调入分配内存、输入\输出等必要资源;
  • 中级调度:将暂时不用进程调到外存等待,此时的进程还拥有资源,一旦内存空闲且需要运行,则重新调入内存;
  • 进程调度:按照某种策略从就绪队列中选择一个进程运行


    调度层次

2.调度方式

如果某个进程A正在CPU上执行时,有一个优先级更高的进程B进入就绪队列,如何分配CPU?两种方式,第一种,等待A的时间片用完或者进入阻塞态后,才把CPU分配给B,第二种,直接暂停A,把CPU分配给B。
这两种方式分别称为非剥夺调度方式剥夺调度方式

调度方式

非剥夺调度方式相比较剥夺调度方式来说优雅一些,比如你在排队在窗口买火车票,有个人很着急,他越过排在你后面的所有人,直接排在你后面,等你买完票后轮到他买,这就像非剥夺调度,而另一种人则直接把你从买票窗口推开,直接买票,这是剥夺式调度。

3.调度算法

操作系统中有6中常用的调度算法:

  • 先来先服务:哪个进程优先进入就绪队列,就先执行哪个进程。


    image.png
  • 短作业优先:根据进程运行时间长短选择最短的进程,这种算法下有非剥夺式短作业优先和剥夺式短作业优先。
    非剥夺式短作业优先:qq在处理机上执行,就绪队列中微信的运行程序比它短,但是微信等待qq从处理机上退出后才获得处理机;
    剥夺式短作业优先:由于就绪队列中的微信运行时间比qq短,直接暂停qq,把处理机分配给微信。


    image.png
  • 优先级调度:PCB中记录每个进程的优先级,将处理机分配给优先级高的进程,同短作业优先一样,这种算法下也有非剥夺式优先级调度和剥夺式优先级调度。
image.png
  • 高响应比优先调度:这种调度方式常用与作业调度,根据公式选择响应比高的作业运行。
image.png
  • 时间片轮转调度:主要用于分时系统,所有进程在就绪队列排队,每个进程依次定时使用处理机,如果规定时间范围内进程没有完成,则重新排队。
  • 多级反馈队列调度:该算法结合优先级调度和时间片轮转调度,将就绪队列分为不同级别优先级,对优先级不同的队列运行时间不同,优先级高的队列运行时间短,优先级低的队列运行时间长。
    如图:
    1.在优先级为3的队列上有3个进程等待运行,有1个进程在CPU上处理,当时间片用完时这些程序都没有执行完毕,则依次进入优先级为2的队列等待调度;2.qq、wechat在优先级为2的队列执行完毕,直接退出,而浏览器和lol没有执行完毕,它们进入第三个队列等待调度。
image.png

(三)进程同步

1.进程之间的关系

多个进程并发运行,它们之前有什么联系?协助和竞争,也就是同步和互斥。
同步:多个进程为了完成同个任务而相互等待,它们之间是相互合作关系。
互斥:多个进程因争夺某一临界资源而等待,只有一个进程使用完后,另一个程序才能使用,它们是竞争关系。

2.解决同步、互斥的方法

解决同步、互斥问题的原因主要是为了保护数据,避免产生与最终预期不一致的结果。
1.软件实现方法
2.硬件实现方法
3.信号量

(四)死锁

1.死锁是什么

计算机内部资源有限,如果多个进程并发执行,且每个进程在执行一开始获得部分资源,执行过程中需要申请其他资源,此时申请的资源被其他程序占用,使得多个进程无法向前推进,形成死锁。

比如两辆车同时过河,它们上桥行驶一半后发现对方,但都不退让,使得双方都没办法继续先前行驶。


image.png

2.死锁产生的原因

系统资源的竞争和进程推进顺序非法。

系统资源的竞争:计算机内部存在不可剥夺的资源,一旦多个进程争夺这些资源,就有可能造成死锁;
进程推进顺序非法:进程执行过程中会不断请求和释放资源,如果某一进程对资源需求量大,不断请求该资源,使得其他进程无法请求足够资源,也会导致死锁。

3.什么条件下会产生死锁

死锁产生的必要条件:

  • 互斥条件:进程之间存在竞争关系;
  • 不剥夺条件:进程只能主动释放资源,不能在运行中被剥夺;
  • 请求并保持条件:已有资源的进程在执行过程中申请被其他程序占用的资源;
  • 循环等待条件:每个已获得资源的进程同时被其他进程请求资源,形成循环链。

4.避免死锁的策略

避免死锁的策略以破坏以上四个必要条件为目的,在三个不同时机(事前、事中和事后)提出不同的策略。
这三个时机分别对应:死锁预防、死锁避免和死锁检测。


image.png image.png

相关文章

  • 操作系统总览

    操作系统的 操作系统的用户界面 进程管理 处理机调度 存储管理 进程和存储管理示例 windows进程和内存管理 ...

  • 操作系统教程学习计划(1)

    1 操作系统概论 2 存储管理 3 进程管理 4 进程通信 5 设备管理 6 文件系统 7 windows操作系统...

  • 软件设计师4--OS处理机管理

    处理机管理 处理机管理也称进程管理。在多道批处理操作系统和分时操作系统中有多个并发执行的进程。进程是资源分配和独立...

  • Linux进程管理详解(转)

    Linux进程管理详解 1.1 Linux进程管理 进程管理是操作系统的最重要的功能之一。有效率的进程管理能保证一...

  • 操作系统知识点整理

    操作系统 操作系统知识模块主要分为:操作系统概述、进程管理、内存管理、文件管理、输入/输出(I/O)管理。 1.操...

  • 操作系统(二)——进程管理

    程序活着的标志是进程,把进程总结为一个公式:进程=程序+状态。多个进程在内存中运行过程就像一场社交活动,需要交流,...

  • 【操作系统笔记】进程管理

    一、前言 之前已经介绍了操作系统的各个模块,现在来具体深入学习操作系统中的进程管理。 二、进程的基本概念 在未配置...

  • 2.进程管理

    进程管理 进程是操作系统的基本概念,本节主要总结Linux内核如何管理进程:进程在内核中如何创建,消亡。 1.进程...

  • 第二章 操作系统基础知识

    一、概要 1、操作系统的内核。 2、操作系统的五大管理功能:进程管理、存储管理、...

  • 操作系统笔记

    操作系统主要功能 进程管理(CPU管理) 进程控制:创建,暂停,唤醒,撤销 进程调度:调度策略,优先级 进程通信:...

网友评论

      本文标题:操作系统(二)——进程管理

      本文链接:https://www.haomeiwen.com/subject/karbyhtx.html