<Linux>(极简关键、省时省力)《Linux操作系统原理分析之进程管理1》(3)

《Linux操作系统原理分析《Linux操作系统原理分析之进程管理1》》(3)

  • 3 进程管理
    • 3.1 基础
      • 3.1.1 进程执行
      • 3.1.2 进程定义
      • 3.1.3 进程特征
      • 3.1.4 利弊
    • 3.2 进程状态和进程控制
      • 3.2.1 进程的状态和转换
      • 3.2.2 进程的实体
    • 3.2.3 进程控制
  • 3.3 进程状态和进程控制
    • 3.3.1 进程调度的功能
    • 3.3.2 进程调度性能标准
    • 3.3.3 进程调度方式
    • 3.3.4 进程调度算法
    • 3.4 进程的同步和互斥
      • 3.4.1 几个概念
      • 3.4.2 进程同步和互斥的区别
      • 3.4.3 进程同步遵循原则

3 进程管理

3.1 基础

3.1.1 进程执行

单道程序

  • 按照某种先后顺序逐步进行。
  • 顺序性、封闭性、可再现性。

多道程序

  • 交替执行。
  • 失去程序封闭性
  • 不可再现性

3.1.2 进程定义

角度定义
概念上进程是执行程序的示例,是正在执行的程序。
内核角度进程承担系统资源(CPU时间、内存)的实体。

3.1.3 进程特征

特征说明
动态性基本特征程序的一个执行过程,运动中的程序。
并发性基本特征建立进程的程序是可并发执行的。
异步性基本特征并发程序相互制约。
独立性在一个数据集上,作为一个基本单位,具有独立性。
结构性每个进程都由其相对应的数据结构及某独立表项。进程(程序、数据、PCB)

3.1.4 利弊

利:多道程序并行执行,改善了系统资源的利用率,提高了系统的吞吐量
弊:空间和时间开销增大

3.2 进程状态和进程控制

3.2.1 进程的状态和转换

进程生命周期五种种状态:新建态、就绪、阻塞、运行、终止态

在这里插入图片描述

3.2.2 进程的实体

进程控制块(Process Control Block - PCB)包含

结构说明
程序进程运行时对应的执行代码
数据集合运行时必须的数据资源
进程数据结构记录进程存在,保持进程所需的数据集合,完成进程控制的重要结构。

3.2.3 进程控制

进程控制任务: 控制进程的状态的变化, 使进程执行有序进行,实现对系统中全部进程的有效管理。进程控制是由进程使用操作系统提供的一组系统调用来实现的,且这些系统调用都具有原语的性质,故也称为进程控制原语。

原语: 是执行一定功能的程序段,它的执行不可中断,好像执行一条指令一样。原语具有原子操作性,即一个操作的所有动作,要么全做,要么全不做。这种原子性通过屏蔽中断来实现。

原语类型功能
创建原语(create)为被创建的进程建立一个 PCB,并填入相应的初始项。
撤销原语(destroy)收回被撤销的进程占用的所有资源,并撤销它的 PCB。
阻塞原语(block)将进程有执行状态或其他状态转为阻塞状态。
唤醒原语(wakeup)由“发现者”进程将处于阻塞状态的进程有阻塞状态变为就绪状态。(发现者进程与被唤醒的进程之间存在制约关系,或者是监视事件发生地系统进程)

3.3 进程状态和进程控制

进程调度:又称处理机调度。操作系统进程管理的核心任务是为了多个进程合理地分配处理机资源。

3.3.1 进程调度的功能

进程调度的主要功能是:
(1) 记录当前进程的情况,如进程名、指令计数器、状态寄存器及所有通用寄存器等现场信息,将这些信息记录在它的进程控制块中。
(2) 根据一定的调度算法,确定就绪队列中哪一个进程能获得处理机,以及占有多长时间
(3) 回收和分配处理机。当前进程转入适当的状态后,系统回收处理机,然后把处理机分配给调度算法选中的下一个进程。

3.3.2 进程调度性能标准

面向用户的指标:周转时间短、响应时间快、截止时间的保证、优先权准则。
1. 响应时间:从用户提出请求,到系统首次产生响应所经历的时间。(常用于分时 OS)
2. 周转时间:(批处理系统)从用作业提交给系统开始,到作业完成为止。

作业周转时间:外存+内存+处理器+I/O
进程周转时间:内存+处理器+I/O,进程从第一次进入就绪队列开始,到进程运行完毕所经历的时间。
带权周转时间:作业的周转时间与系统为他提供的实际服务时间之比。

3. 截止时间:(实时系统):某任务必须开始执行的最迟时间。
4. 运行时间:处理器+I/O,指进程获得处理器,处于 CPU-I/O 的执行期

例:P1P2P3 单独运行时间 2163
当运行方向为:P1P2P3。周转时间分别为:212730。平均周转时间为 26;
当运行方向为:P3P2P1。周转时间分别为:3930。 平均周转时间为 14

面向系统的指标:系统的吞吐量高、处理机的利用率好、各类资源的平衡利用

3.3.3 进程调度方式

1. 非剥夺方式:不能从正在运行的进程夺走处理器控制权,除非它运行完毕或因某种原因
阻塞。
2. 剥夺方式:按某种原则,将正在运行的进程强撤销,并将处理器分配给其他就绪进程。
剥夺原则:1)优先级原则;2)短进程优先原则;3)时间片原则;4)强制性剥夺

3.3.4 进程调度算法

解决的两个问题:
a. 选择方式:选择哪个进程(随算法不同而不同);
b. 调度方式:选中它以后,如何给它分配 CPU,及其占用 CPU 的时间(剥夺、非剥夺);

调度算法详细
先进先出(FIFO)a. 按照进程进入就绪队列的先后次序来分配处理机
b. 非剥夺方式调度方法
c. 优缺点
2. 短执行进程优先(SCBF)a. 按照就绪队列中的进程预期执行时间的长短来分配处理机
b. 剥夺方式调度方法
c. 优缺点
3. 优先级调度(最常用)a. 按照就绪队列中的进程的优先级的高低来分配处理机(优先权:静态、动态)
b. 剥夺/非剥夺方式调度方法c. 优缺点
4. 时间片轮转法系统将所有就绪进程按到达时间的先后顺序排成一个队列,依次轮流调度各个进程,调度算法从队列头选择一个进程执行,且仅执行一个时间片,当时用完一个时间片后,释放 CPU,并加入到就绪队列尾部,等待继续调度。
难点和关键:时间片的长短的选择。
5. 多级队列反馈调度算法

3.4 进程的同步和互斥

进程间存在两种形式的制约关系:
a. 直接相互制约:进程合作——同步关系(进程的推进速度之间的制约;进程间通信)
b. 间接相互制约:资源共享——互斥关系

3.4.1 几个概念

概念含义
临界资源一次仅允许一个进程使用的资源(硬件、软件)。
临界区访问这段临界资源的那段程序。
进程互斥多个进程在共享临界资源时的相互制约关系。
进程同步系统中有多个进程共同完成一项任务,这些进程之间存在着直接制约关系,每一个进程要依赖于其他进程所产生的结果才能继续运行。共同完成一个任务的若干进程称为合作进程。

3.4.2 进程同步和互斥的区别

进程同步进程互斥
互斥进程在单独运行时都可以得到正确结果同步进程不能单独运行。
互斥进程不规定执行先后顺序同步进程必须按照严格的顺序执行。
互斥进程不知道对方的存在同步进程不仅知道其他进程的存在,而且还要通过与其它进程的通信来达到相互的协调。

3.4.3 进程同步遵循原则

1) 空闲让进
2) 忙则等待
3) 有限等待:避免‘死等’(死锁)
4) 让权等待:退出临界区,立即释放处理机,让位给等待进程。避免‘忙等’。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/149838.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【电路笔记】-快速了解无源器件

快速了解无源器件 文章目录 快速了解无源器件1、概述2、电阻器作为无源器件3、电感器作为无源器件4、电容器作为无源器件5、总结 无源器件是电子电路的主要构建模块,没有它们,这些电路要么根本无法工作,要么变得不稳定。 1、概述 那么什么是…

从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景

文章目录 BIO优缺点示例代码 NIO优缺点示例代码 AIO优缺点示例代码 总结 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 BIO、NIO和AIO是Java编程语言中用于处理输入输出(IO…

M系列 Mac安装配置Homebrew

目录 首先,验证电脑是否安装了Homebrew 1、打开终端输入以下指令: 2、如图所示,该电脑没有安装Homebrew ,下面我们安装Homebrew 一、官网下载 (不建议) 1、我们打开官网:https://brew.sh/ …

微信群BUG大揭秘!开启身份切换神器

前言 最近微信群里出现了一个神秘的BUG,普通群成员竟然可以艾特全体成员。今天,就让我们一起揭秘这个令人震惊的微信群普通成员可全体成员的BUG 复现步骤 复现步骤也很简单,前提条件就是要在PC客户端操作!首先得有个属于自己的群…

天马行空的超级炫酷旋转图片-前端

一、实现代码&#xff08;html部分&#xff09; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>3D旋转</title><style type"text/css">*{padding: 0;margin: 0;}body,html{he…

【轨道机器人】实现Windows与下位机串口通信(未完成)

方案一&#xff1a;QT&#xff0c;编写类似串口调试助手的APP&#xff0c;连接上硬件&#xff0c;qt有个好像是串口缓存函数&#xff0c;可以防止占用CPU。&#xff08;缺点qt估计要时间学&#xff09; 方案二&#xff1a;利用vscode、C&#xff0c;编写一个可执行exe文件&…

网站高性能架构设计——高性能数据库集群

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、高性能数据库简介 1.高性能数据库方式 读写分离&#xff1a;将访问压力分散到集群中的多个节点&#xff0c;没有分散存储压力 分库分表&…

SpringBoot3新特性

本篇文章参考尚硅谷springboot3课程: https://www.bilibili.com/video/BV1Es4y1q7Bf?p94&vd_sourced6deb2b69988de2ae72087817e5143d7 原版笔记: https://www.yuque.com/leifengyang/springboot3/xy9gqc2ezocvz4wn 1.自动配置包位置变化 现在指定自动配置类放在了下面这…

Unity中Shader矩阵的乘法

文章目录 前言一、矩阵乘以标量二、矩阵和矩阵相乘1、第一个矩阵的列数必须 与 第二个矩阵的行数相等&#xff0c;否则无法相乘&#xff01;2、相乘的结果矩阵&#xff0c;行数由第一个矩阵的行数决定&#xff0c;列数由第二个矩阵的列数决定&#xff01; 三、单位矩阵四、矩阵…

计算机毕业设计 基于Vue的米家商城系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

身份认证系统迁移至浪潮信息KOS5.8过程记录

身份认证系统迁移至浪潮信息KOS5.8过程记录 目录 身份认证系统迁移至浪潮信息KOS5.8过程记录项目背景简介环境介绍 实施01.迁移前准备02.迁移登录浪潮信息KeyarchOS迁移平台 03.操作总结本次操作过程使用X2Keyarch时发现的技术亮点&#xff1a; 项目背景 CentOS 停更危机 2020 …

SQLite3 数据库学习(三):SQLite C API 接口详解

参考引用 SQLite 权威指南&#xff08;第二版&#xff09;SQLite3 入门 1. 接口基本使用 SQLite C API 接口在线文档 1.1 打开数据库文件 返回值 成功返回 0 &#xff08;SQLITE_OK&#xff09;&#xff0c;失败返回 1 &#xff08;SQLITE_ERROR&#xff09; 参数 const cha…

前端js,reduce归并操作图解

// 数组reduce方法// arr.reduce(function(上一次值, 当前值){}, 初始值)const arr [1, 5, 8]// 1. 没有初始值 // const total arr.reduce(function (prev, current) {// return prev current// })// console.log(total)// 2. 有初始值// const total arr.reduce(functi…

15:00进去,15:08就出来了,问的问题太变态了。

前不久刚从一家小自研出来&#xff0c;祸不单行&#xff0c;没想到的是在另一家公司也凉了。 到这家公司上班&#xff0c;每天加班是常态&#xff0c;但看在钱的面子上倒是还能忍受&#xff0c;毕竟给加班费&#xff0c;没想到前段时间突然出了通知&#xff0c;不仅加班费没了…

JVM虚拟机——类加载器(JDK8及以前,打破双亲委派机制)(JDK9之后的类加载器)

目录 1.自定义类加载器2.线程上下文类加载器3.OSGi模块化4.JDK9之后的类加载器5.类加载器总结 1.自定义类加载器 ⚫ 一个Tomcat程序中是可以运行多个Web应用的&#xff0c;如果这两个应用中出现了相同限定名的类&#xff0c;比如Servlet类&#xff0c;Tomcat要保证这两个类都能…

msvcp120.dll下载_msvcp120.dll文件丢失解决[dll系统文件修复]

msvcp120.dll是Microsoft Visual C库中的一个重要组件&#xff0c;属于Microsoft Visual C 2005 Redistributable Package。它提供了许多用于执行C程序所需的函数。Visual C是一款流行的集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛应用于游戏、视频和图形处理等领…

【计算机组成原理】绘制出纯整数(1字节)和纯小数的数轴

绘制出用原码、反码、补码表示纯整数(字节) 的数轴&#xff1a; 对于一字节的大小&#xff0c;原码和反码都只能表示255个数字&#xff0c;因为0占了2个符号数。而补码能表示256个数字&#xff0c;因为0和-0的补码是一样的。所以多出来一个符号数1000 0000能够表示-128所以&…

Android 摇一摇功能实现,重力加速度大于15

最近接到需求实现摇一摇需求&#xff0c;不过这个法律限制的很严格&#xff0c;属于敏感地带&#xff0c;实现后又被叫停了。 法律要求&#xff1a; 如果按照规定&#xff0c;操作时间不少于3s就基本没什么跳转了。 实现的话&#xff0c;只考虑了第一条&#xff0c;即&#…

JCJC错别字检测系统安装部署手册

本手册是针对 Ubuntu 服务器环境的安装使用说明。CentOS安装手册&#xff0c;请参考连接&#xff1a; JCJC错别字系统部署-腾讯云开发者社区-腾讯云 。 安装步骤&#xff1a; 第一步&#xff1a;安装 docker 离线方式在Ubuntu 18.04 上安装Docker &#xff0c;参考连接&am…

UniApp中的数据存储与获取指南

目录 介绍 数据存储方案 1. 本地存储 2. 数据库存储 3. 网络存储 实战演练 1. 本地存储实例 2. 数据库存储实例 3. 网络存储实例 注意事项与最佳实践 结语 介绍 在移动应用开发中&#xff0c;数据的存储和获取是至关重要的一部分。UniApp作为一款跨平台应用开发框架…