操作系统(第四周 第一堂)

目录

回顾

进程调度(process schedule)

进程角度

计算机整体——调度队列

队列图

调度程序

总结


回顾

上一篇文章的重点只有一个————进程

对进程的了解包含以下几个方面:1、程序如何变为进程  2、进程在内存中的存储形式  3、进程控制块在内核中的存储形式  4、进程状态

总的来说:

1、进程是程序在计算机中运行的实例

2、进程本身也是一个程序,特殊的程序

3、进程的管理依赖于进程控制块(PCB)

4、进程本身存储在内存中,有特定的存储形式

进程有五个状态,设计进程有状态的原因就在于方便计算机并行运行多个进程,并行运行多个进程就涉及到进程的调度,这个调度是由内核实现

进程调度(process schedule)

进程调度有两个思考角度:一、从一个进程角度看进程调度;二、从计算机整体角度看进程调度

进程角度

从进程自身角度看进程是如何被调度的

上图关键点:

1、进程P0与进程P1是两个并行的进程。所谓并行实际上是指对程序员(计算机使用者)并行,其实际的运行方式并不是同时进行的(多处理器情况除外)

2、进程从执行到空闲需要经过中断或系统调用。 中断:I/O设备等硬件。系统调用:可以认为就是陷入内核。分为进程程序主动要求陷入内核,或程序错误陷入内核

3、图中的省略号是值:内核在PCB(进程控制块)保存要进入空闲状态的进程的现场信息,此时是kernal mode。进程执行时是user mode

4、保存完现场后才可以切换下一个要执行的进程的状态信息,同时内核这个”大眼睛“将内存映射给新进程

5、每次进程的调度都是由操作系统来执行的,操作系统就是计算机的心脏

计算机整体——调度队列

计算机整体看计算机是如何整理调度内部所有的进程

上图关键点:

1、所有的进程都会放在队列中,这个队列称为作业队列

2、驻留在内存中就绪的等到运行的进程保存在就绪队列中,内核为CPU选择下一个进程就是从就绪队列中获取

3、等待特定I/O设备的进程列表称为设备队列,每个设备都有自己的设备队列,因为一个设备能同时给多个进程提供服务

4、一个进程只可能出现在一个队列里面(就绪队列、设备队列等各个队列都体现一种状态),但是所有的进程都在任务队列

队列图

队列图是表示进程调度一个常用的方法,在理解这个图之前需要补充一个知识

I/O请求和中断请求的关系:

1、I/O请求是由I/O设备需要输入输出导致的请求,中断请求是外围设备完成操作或紧急事件需要处理而向CPU发送的请求

2、I/O请求是由程序发起的,中断是由硬件设备发起

3、I/O设备准备号数据或者需要服务时会向CPU发送中断信号,这个中断信号也会让CPU暂停工作

4、虽然I/O操作可能导致中断产生,但是它们本身不是中断请求

 (进程状态变化关系表)

1、每个矩形块表示一个队列,右边四个矩形块都是处于等待状态

2、圆圈表示服务队列的资源(I/O、CPU),或导致进程发生队列变化原因(子进程执行、中断发生)

3、图中共有5个队列:I/O等待队列、时间片过期队列、分叉子进程队列、中断等待队列、就绪队列

调度程序

当计算机提交的进程多于可以立即执行的进程时,进程会被保存到大容量的存储设备(缓冲池),后续需要执行进程就要把进程从缓冲池中拿出来,而有一些进程本身就在就绪队列中,可以直接拿出来使用。为了调度这些进程,我们就需要在操作系统中存储一些调度程序

调度程序分为:

1、长期调度程序:从缓冲池中选择进程加到内存

2、短期调度程序:从准备执行(粗略可以认为是已经加载到内存中的进程)的进程中选择进程分配给CPU

为了让性能达到最佳,系统需要合理组合I/O密集型和CPU密集型

总结

本文到这里就结束啦~~这堂课的内容较为杂乱、复杂,但是学一学拓展一下知识是非常好的呀~~
如果觉得对你有帮助,辛苦友友点个赞哦~

知识来源:操作系统概念(黑宝书)、山东大学高晓程老师PPT及课上讲解。不要私下外传

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

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

相关文章

Centos7配置秘钥实现集群免密登录

设备:MacBook Pro、多台Centos7.4服务器(已开启sshd服务) 大体流程:本机生成秘钥,将秘钥上传至服务器即可实现免密登录 1、本地电脑生成秘钥: ssh-keygen -t rsa -C "邮箱地址 例:*****.163.com"一路回车…

Bezier曲线的绘制 matlab

式中: 称为基函数。 。 因为n表示次数,点数为n1,显然i表示第i个控制点。 显然在Matlab中可以同矩阵的形式来计算C(u)。 关键代码为: clc clear % 假设控制点P取值为: P [4,7;13,12;19,4;25,12;30,3]; % 因此&a…

Vue2创建过程记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、搭建node二、安装Vue CLI三、搭建新项目四、Elemet安装(参照官网步骤[Element官网](https://element.eleme.cn/#/zh-CN/component/installation)&am…

Hibernate多事务同时调用update(T t) ,字段被覆盖问题

前言 今天现网有个订单卡单了,经过排查发现没有任何异常日志,根据日志定位发现本应该更新的一个状态,也sql肯定执行了(使用了Hibernate的ORM框架),但是数据库里面的状态没有更新。大概逻辑如下 String hql from orderInfo where…

Could not resolve all files for configuration

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、 推荐阅读 一、导…

《前端防坑》- JS基础 - 你觉得typeof nullValue === null 么?

问题 JS原始类型有6种Undefined, Null, Number, String, Boolean, Symbol共6种。 在对原始类型使用typeof进行判断时, typeof stringValue string typeof numberValue number 如果一个变量(nullValue)的值为null,那么typeof nullValue "?" const u …

C++的并发世界(十一)——线程池

0.线程池的概念 1.线程池使用步骤 ①初始化线程池:确定线程数量,并做好互斥访问; ②启动所有线程 ③准备好任务处理基类; ④获取任务接口:通过条件变量阻塞等待任务 2.atomic原子操作 std:atomic是C11标准库中的一个…

QT学习day4

widget.h #define WIDGET_H #include <QWidget> #include <QTime>//时间类 #include <QTimerEvent>//定时器类 #include <QPushButton>//按钮类 #include <QTextToSpeech>//语音播报 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_E…

After Effects 2024 中文激活版 高效工作流程与创新的视觉特效 mac/win

After Effects 2024是Adobe公司推出的一款专业视频特效制作软件&#xff0c;广泛应用于电影、电视、动画等媒体制作领域。它凭借强大的功能和灵活的操作&#xff0c;帮助用户轻松创建电影级影片字幕、片头和过渡效果&#xff0c;以及实现立体效果和动态场景的切换。 同时&#…

机器学习中的激活函数

激活函数存在的意义&#xff1a; 激活函数决定了某个神经元是否被激活&#xff0c;当这个神经元接收到的信息是有用或无用的时候&#xff0c;激活函数决定了对这个神经元接收到的信息是留下还是抛弃。如果不加激活函数&#xff0c;神经元仅仅做线性变换&#xff0c;那么该神经网…

【电路笔记】-逻辑或非门

逻辑或非门 文章目录 逻辑或非门1、概述2、晶体管逻辑或非门3、数字逻辑或非门类型4、通用或非门逻辑或非门是数字逻辑或门与反相器或非门串联的组合。 1、概述 或非(Not-OR)门的输出通常为逻辑电平“1”,并且仅当其任何输入处于逻辑电平“1”时才变为“低”至逻辑电平“0”…

蓝桥杯 每日2题 day4

碎碎念&#xff1a;好难好难&#xff0c;&#xff0c;发呆两小时什么也写不出来&#xff0c;&#xff0c;&#xff0c;周六大寄了 10.阶乘约数 - 蓝桥云课 (lanqiao.cn) 暴力跑了两个小时没出来结果&#xff0c;&#xff0c;去看题解要用数学&#xff1a;约数定理&#xff0c…

谈谈什么是 Redis

&#x1f525;博客主页&#xff1a;fly in the sky - CSDN博客 &#x1f680;欢迎各位&#xff1a;点赞&#x1f44d;收藏⭐️留言✍️&#x1f680; &#x1f386;慢品人间烟火色,闲观万事岁月长&#x1f386; &#x1f4d6;希望我写的博客对你有所帮助,如有不足,请指正&#…

Docker功能简单学习及使用

Docker是什么 Docker是一个快速构建&#xff0c;运行&#xff0c;管理应用的工具 传统基于linux安装程序较为复杂繁琐&#xff0c;使用docker可以快速的进行项目部署和管理 镜像与容器 Docker进行安装应用时&#xff0c;会自动搜索并下载应用镜像(image)。镜像不仅包含应用本…

GitLab教程(一):安装Git、配置SSH公钥

文章目录 序一、Git安装与基本配置&#xff08;Windows&#xff09;下载卸载安装基本配置 二、SSH密钥配置 序 为什么要使用代码版本管理工具&#xff1a; 最近笔者确实因为未使用代码版本管理工具遇到了一些愚蠢的问题&#xff0c;笔者因此认为代码版本管理工具对于提高团队…

魔法阵-蓝桥每日真题

0魔法阵 - 蓝桥云课 (lanqiao.cn) #include <iostream> #include <queue> #include <vector> #include <cstring> #include <algorithm>using namespace std;#define x first #define y second const int N 1010; const int inf 1e4; vector&…

【汇编语言实战】求两组给定数组最大值

C语言描述该程序流程&#xff1a; #include <stdio.h> int main() {int arr1[]{11,33,23,542,12233,5443,267,456,234,453};int arr2[]{21,123,432,45,234,534,6517,678,879,1};int maxarr1[0];for(int i1;i<10;i){if(arr1[i]>max){maxarr1[i];}}printf("%d\…

蓝桥杯练习系统(算法训练)ALGO-956 P0702 strcmp 函数

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 在C语言中&#xff0c;有一个strcmp函数&#xff0c;其功能是比较两个字符串s1和s2。请编写一个你自己的字符串比较函数my_strcmp&…

设计模式——装饰器模式09

装饰器模式&#xff1a;是在原有基础上进行装饰&#xff08;无修改原来代码&#xff09;&#xff0c;来添加新的功能。 例如下面对普通耳机进行装饰。 设计模式&#xff0c;一定要敲代码理解 修饰对象&#xff08;抽象&#xff09; /*** author ggbond* date 2024年04月07日…

ShardingSphere-ShardingSphere读写分离和数据脱敏

文章目录 一、读写分离1.1 读写分离1.2 读写分离应用方案1.3 分表+读写分离1.4 分库分表+读写分离二、ShardingSphere-JDBC读写分离2.1 创建SpringBoot并添加依赖2.2 创建实体类2.3 创建mapper2.4 配置读写分离2.5 测试测试插入数据测试读测试事务一致性测试负载均衡一、读写分…