进程管理

本文详细介绍了操作系统中的进程管理,包括进程的状态转换、进程控制原语、进程通信、调度算法及其评价指标。讨论了从创建到终止的进程生命周期,强调了进程互斥和同步的重要性,介绍了信号量机制、管程和死锁预防与避免的方法。同时,涵盖了多线程模型和不同调度算法的优缺点,如FCFS、SJF、时间片轮转等。
摘要由CSDN通过智能技术生成

进程管理

程序:是静态的,就是一个存放在磁盘里的 可执行文件,就是一系列的指令集合。
进程:是动态的,是程序的一 次执行过程。
在这里插入图片描述

区分不同的进程 使用不同的pid 第一个qq 11300 第二个qq 16476
windows对进程的管理 任务管理器
在这里插入图片描述

管理的信息存放在PCB中

PCB:是进程存在唯一标志,进程结束会回收PCB
进程组成:PCB (进程描述信息,控制管理信息,资源分配清单,处理机相关信息)程序段(程序代码) 数据段(运行过程中各种数据)

进程的特征

在这里插入图片描述

进程的状态

进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进 程分配资源、初始化PCB

当进程创建完成后,便进入“就绪态”, 处于就绪态的进程已经具备运行条件, 但由于没有空闲CPU,就暂时不能运行

如果一个进程此时在CPU上运行,那么这个进程 处于“运行态”。 CPU会执行该进程对应的程序(执行指令序列)

程运行的过程中,可能会请求等待某个事件的发生,,进程无法继续往下执行,此时操作系统会 让这个进程下CPU,并让它进入**“阻塞态”**(等待态)

一个进程可以执行 exit 系统调用,请求操作系统终止该进程。 此时该进程会进入**“终止态”,操作系统会让该进程下CPU, 并回收内存空间等资源,最后还要回收该进程的PCB**。

运行态也可能直接进入就绪态 (时间片用完,或者厨垃圾被抢占)

三种基本状态:运行态 就绪态 阻塞态

进程PCB中会有一个STATE表示进程状态

进程组织方式 链接方式(执行队列,就绪队列指针等等)

​ 索引方式(建立索引表存储)

进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现 进程状态转换等功能。

原语实现进程控制

原语执行具有原子性 关中断和开中断实现

进程的创建

在这里插入图片描述

进程的终止

在这里插入图片描述

唤醒原语和阻塞原语 切换原语(运行态到就绪态,就绪态到运行态)

psw寄存器:内核态还是用户态 pc寄存器:存放下一条指令 IR寄存器:存放当前执行指令

进程通信

各进程拥有的内存地址空间相互独立。,一个进程不能直接访问另 一个进程的地址空间。

因此操作系统提供了三种方式(共享存储,消息传递,管道通信)

两个进程对共享空间的访问必须是互斥的,操作系统只负责提供共享空间 和同步互斥工具(如P、V操作)

基于数据结构的共享:比如共享空间里只能放 一个长度为10的数组。这种共享方式速度慢、 限制多,是一种低级通信方式。

基于存储区的共享:在内存中画出一块共享存 储区,数据的形式、存放位置都由进程控制, 而不是操作系统。相比之下,这种共享方式速 度更快,是一种高级通信方式。

  1. 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置 两个管道。

  2. 各进程要互斥地访问管道。

  3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。

  4. 如果没写满,就不允许读。如果没读空,就不允许写。

  5. 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情 况。

    进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收 消息”两个原语进行数据交换。直接通信方式和间接通信方式(计网邮件系统)

    线程

    程序执行流的最小单位(轻量级的进程)提高系统的并发性

!在这里插入图片描述

在这里插入图片描述

###多线程模型

用户级线程:线程有线程库实现,多个线程循环执行。
优点:用户级线程的切换在用户空间即可完 成,不需要切换到核心态,线程管理的系统 开销小,效率高
缺点:当一个用户级线程被阻塞后,整个进 程都会被阻塞,并发度不高。多个线程不可 在多核处理机上并行运行。

内核级线程
优点:当一个线程被阻塞后,别的线程还可 以继续执行,并发能力强。多线程可在多核 处理机上并行执行。
缺点:一个用户进程会占用多个内核级线程, 线程切换由操作系统内核完成,需要切换到 核心态,因此线程管理的成本高,开销大。

一对一模型:一个用户级线程映射到一个内 核级线程。每个用户进程有与用户级线程同 数量的内核级线程。

多对一模型:多个用户级线程映射到一个内 核级线程。且一个进程只被分配一个内核级 线程。

多对多模型:n 用户及线程映射到 m 个内核级 线程(n >= m)。每个用户进程对应 m 个内核 级线程。克服了多对一模型并发度不高的缺点(一个阻 塞全体阻塞),又克服了一对一模型中一个用 线程库 户进程占用太多内核级线程,开销太大的缺点。

调度的概念

确定某种规则来决定处理 这些任务的顺序

高级调度(作业调度):按一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进 程。每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时才撤销PCB。

低级调度(进程调度/处理机调度)—— 按照某种策略从就绪队列中选取一个进程,将处理机分配 给它。

中级调度(内存调度)——按照某种策略决定将哪个处于挂起状态的进程重新调入内存。 一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。

7种状态模型

在这里插入图片描述

进程调度

非剥夺调度方式(非抢占方式):只允许进程主动放弃处理机。
剥夺调度方式(抢占方式)有更重要更紧迫的进程需要使用处理机立即暂停正在进行的进程。
进程切换:上一个进程让出处理机另一个进程占用处理机。
狭义进程调度:就绪队列中选中一个要运行的进程。
广义的进程调度包含选择一个进程和进程切换两个步骤。
进程切换完成了:对原来各种数据的保存和对新进程各种数据的恢复。

调度算法评价指标:
cpu利用率:cpu处于忙碌时间占总时间的比例(甘特图)
系统吞吐量: 单位时间完成的作业量
周转时间:提交作业到作业完成的时间(高级调度时间,低级调度时间CPU上面执行时间,等待io执行时间)
平均周转时间:各作业周转时间之和/作业数。
​ 带权周转时间=作业周转时间/作业实际运行时间。
​ 平均带权周转时间:带权周转时间之和/作业数。

等待时间:作业等待处理机处理的时间 。
响应时间:用户提交请求到首次响应所用时间。

调度算法

  1. 先来先服务(fcfs)

    考虑作业谁先到后备队 进程先到就绪队列
    非抢占式算法

    优点:公平、算法实现简单
    

    缺点:排在长作业(进程)后面的短作业需要等待很长时 间,带权周转时间很大,对短作业来说用户体验不好。即, FCFS算法对长作业有利,对短作业不利

    不会导致饥饿

  2. 短作业优先(sjf)

    追求最少的平均等待时间,最少的平均周转时间、最少的 平均平均带权周转时间
    

    即可用于作业调度,也可用于进程调度。用于进程调度时 称为“短进程优先(SPF, Shortest Process First)算法”

    sjf 和spf 非抢占式算法, 最短剩余时间优先算法(srtn)抢占式

    最短剩余时间优先算法:每当有进程加入就绪队列改变时就需 要调度,如果新到达的进程剩余时间比当前运行的进程剩余时 间更短,则由新进程抢占处理机,当前运行进程重新回到就绪 队列。另外,当一个进程完成时也需要调度

    采用SJF调度算法的平均等待时间、平均周转时间最 少”; 或者说“在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少”;

    优点:“最短的”平均等待时间、平均周转时间
    缺点:不公平。对短作业有利,对长作业不利。可能产生 饥饿现象。另外,作业/进程的运行时间是由用户提供的, 并不一定真实,不一定能做到真正的短作业优先
    会导致饥饿。

  3. 高响应比优先(hrrn)
    在每次调度时先计算各个作 业/进程的响应比,选择响应 比最高的作业/进程为其服务
    响应比 (等待时间+

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

力争做大牛的小王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值