【系统架构设计】操作系统(一)

操作系统(一)

  • 操作系统的类型和结构
  • 操作系统基本原理
    • 进程管理
      • 进程三态模型
      • 挂起状态
      • 进程互斥 / 进程同步
      • 前趋图
      • 进程调度
      • 死锁
    • 存储管理
    • 设备管理
    • 文件管理
    • 作业管理

操作系统原理的关键在于“一个观点、两条线索”:一个观点是以资源管理的观点来定义操作系统;两条线索是指操作系统如何管理计算机各类资源和控制程序的执行

操作系统的类型和结构

按照操作系统的功能划分,操作系统的基本类型有:

  • 批处理操作系统
  • 分时操作系统
  • 实时操作系统
  • 网络操作系统
  • 分布式操作系统
  • 嵌入式操作系统
  • 微内核操作系统

从资源管理的角度看,操作系统主要是对以下部分进行管理:

  • 处理器
  • 存储器
  • 文件
  • 设备
  • 作业

操作系统在计算机和用户之间起接口的作用。操作系统为用户提供的接口表现形式一般为:命令、菜单、窗口之类的而操作系统为应用程序提供的接口为API 。操作系统与硬件/软件的关系如图2-1所示。
在这里插入图片描述

操作系统基本原理

操作系统的功能主要是进行以下工作:

  • 处理机管理(进程管理)
  • 存储管理
  • 设备管理
  • 文件管理
  • 作业管理

进程管理

处理机是计算机系统的核心资源,由于计算机速度越来越快,处理机的充分利用有利于系统效率的大大提高;处理机管理是整个操作系统的重心所在,其管理的好坏直接影响整个系统的运行效率;而且操作系统中并发活动的管理和控制是处理机管理下实现的,处理机管理集中了操作系统中最复杂的部分,它的设计好坏关系到整个系统的成败。

为了动态看待操作系统,以进程作为独立运行的基本单位,以进程作为分配资源的基本单位。因此,处理机管理也被称为进程管理。其功能主要是组织和协调用户对处理机的争夺使用,把处理机分配给进程,对进程进行管理和控制,最大限度发挥处理机的作用

进程三态模型

由进程运行的间断性,决定进程至少具有以下三种状态:

  • 就绪状态:当进程已分配了除CPU以外所有必要的资源后,只要能再获得处理机,便能立即执行;
  • 执行状态:进程已获得处理机,其程序正在执行;
  • 阻塞状态:进程因发生某事件(如请求、I/O、申请缓冲空间等)而暂时执行时的状态,也就是进程执行时受到阻塞。有时也称为“等待”状态、“睡眠”状态。

在这里插入图片描述

挂起状态

在不少系统中,进程只有如图2-2 的三种状态,但在另一些系统中,又增加了一些新的状态,其中最重要的就是挂起状态。引入挂起状态的原因是:

  • 对换需要。为了缓和内存紧张的情况,而将内存中处于阻塞状态的进程换至外存上,使进程又处于一种有别于阻塞状态的新状态。因为即使该进程所期待的事件发生了,该进程仍不具备执行条件而不能进入就绪队列,称这种状态为挂起状态。
  • 终端用户的请求。当终端用户在自己的程序运行期间,发现有可疑问题时,往往希望使自己的进程暂停下来。也就是说,使正在执行的进程暂停执行,若是就绪进程,则不接受调度以便研究其执行情况或对程序进行修改。把这种静止状态也称为挂起状态。
  • 父进程请求。父进程常希望挂起自己的子进程,以便考查和修改子进程,或者协调各子进程间的活动。
  • 负荷调节的需要。当实时系统中工作负荷较重,有可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统正常运行。
  • 操作系统的需要。操作系统希望挂起某些进程,以便检查运行中资源的使用情况及进行记账。

在这里插入图片描述

ps: 里面静止阻塞->静止就绪 要注意,此时阻塞条件与挂起条件无关,即使满足了阻塞条件,但依旧无法运行,状态不会变成活跃阻塞,而会变成 静止就绪。

进程互斥 / 进程同步

  • 临界资源 : 一次仅允许一个进程使用的资源;

  • 临界区:一个进程访问临界资源的那段程序代码,也就是互斥锁作用域得那段代码

  • 进程互斥:一组并发进程中,临界资源在某一时刻只被一个进程访问

  • 进程同步:进程之间是异步执行的,但是各进程按照一定的制约顺序和速度执行

ps: 互斥是资源的竞争关系,同步是进程间的协作关系

因此,必须有专门的同步机构来协调这2组关系。在操作系统中,信号量是一个整数,当信号量大于等于0时,表示可供并发进程使用的资源实体数;当信号量小于0时,表示正在等待使用临界区的进程数

对信号量只能施加特殊的操作:P操作 和V操作。两者都是不可分割的原子操作,也称为原语。因此,P原语和V原语执行期间不允许中断发生。P操作的过程是将信号量-1,而V操作的过程是将信号量+1
在这里插入图片描述

  • 针对进程互斥,设信号量mutex 用于互斥的信号量,初值为1,该信号量为公用信号量,表示没有并发进程使用该临界区,于是各并发进程的临界区可改写成下列形式的代码段:
    在这里插入图片描述

  • 针对进程同步,需要引入私用信号量私用信号量只与制约进程和被制约进程有关,而不是与整组并发进程相关。经典同步问题的例子“生产者-消费者”问题,这要求存后再取,取后再存,即有两个制约关系,为此,需要2个信号量,表示缓冲区中的空单元数和非空单元数,记为Bufempty 和 Buffull ,它们的初始值分别为 1 和 0 ,相应的程序段形式如下:
    -

前趋图

前趋图 是一个由结点和有向边构成的有向无循环图,用于表现事务间先后顺序的制约关系。

在这里插入图片描述
假设一条指令由Ai 、Bi 、 Ci 三步组成,则图中A1 没有前趋结点,称为开始结点,它不受任何制约,可以直接执行;而B1 和A2 只有在A1 执行完成后才可以开始,而B2必须在B1 和A2完成后才可以开始;C3没有后继结点,称为终止结点

在前趋图中,执行先后顺序的制约关系可分为2种:直接制约 和间接制约

  • 直接制约: 指一个操作中,多个步骤之间的制约关系,也可以说是“同步的进程之间的制约关系”。如图2-4 中,A1 、B1、C1 直接制约。
  • 间接制约:指多个操作之间相同步骤之间的制约关系,也可以说是“互斥的进程之间的制约关系”,如图2-4中,A1、A2、A3 间接制约。

进程调度

进程调度即处理器调度(又称为上下文转换),主要功能是让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出,投入执行

进程调度的方式有2类:剥夺方式和非剥夺方式

  • 剥夺方式:当就绪队列中有进程的优先级高于当前执行进程的优先级,便立即发生进程调度,转让处理机;
  • 非剥夺方式:一旦某个作业或进程占用了处理器,别的进程就不能把处理器从这个进程手中夺走,直到该进程自己因调用原语操作而进入阻塞操作,或时间片用完而让出处理。

调度算法有:

  • 先来先服务(First Come and First Served ,FCFS)调度算法,又称先进先出(First In and First Out ,FIFO);
  • 优先数调度。确定优先级的方法有静态优先级动态优先级,静态优先级是指进程的优先级在进程开始执行前确定,执行过程中不变;动态优先级则可以在进程执行过程中改变
  • 轮转法。每个进程执行一次,占有处理器时间都不超过规定的时间单元(时间片),若超过,则自行释放所占有CPU而拍到就绪队列末尾,等待下次调用。

死锁

死锁产生主要原因是供共享的系统资源不足,资源分配策略和进程的推进顺序不当。系统资源既可能是可重复使用的永久性资源,也可能是消耗性的临时资源。产生死锁的必要条件是:互斥条件、保持和等待条件、不剥夺条件、环路等待条件

如,P1进程占有资源R1,P2进程占有资源R2,这时,P1需要资源R2,P2需要资源R1,它们在等待对方占有的资源时,又不会释放自己占有的资源,因而使双方都进入无限等待状态,即死锁。

解决死锁有2种策略:在死锁发生前采用的预防和避免策略在死锁发生后采用的检测和恢复策略

  • 死锁的预防主要是通过打破死锁产生的4个必要条件之一来保证不会产生死锁。采用的死锁预防策略通常有资源的静态分配法有序分配法,它们分别打破了资源动态分配条件和循环等待条件,因此不会发生死锁,但大大降低系统资源的利用率和进程之间的并行程度
  • 死锁避免策略,是在系统进行资源分配时,先执行一个死锁避免算法以保证本次分配不会导致死锁发生。但由于资源分配很频繁,因此死锁避免策略要消耗大量的CPU和时间。

ps:死锁发生概率较小,采用死锁发生后的检测和恢复策略 比 采用死锁发生前的预防与避免策略代价小些

存储管理

设备管理

文件管理

作业管理

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法笔记自学】第 9 章 提高篇(3)——数据结构专题(2)

9.1树与二叉树 #include <cstdio>int main() {int n, m;scanf("%d%d", &n, &m);printf(n m 1 ? "Yes" : "No");return 0; } 9.2二叉树的遍历 #include <cstdio> #include <vector> using namespace std;const int…

Java毕业设计 基于SSM vue电影订票系统小程序 微信小程序

Java毕业设计 基于SSM vue电影订票系统小程序 微信小程序 SSM 电影订票系统小程序 功能介绍 用户 登录 注册 忘记密码 首页 图片轮播 电影信息 电影详情 评论 收藏 预订 电影资讯 资讯详情 用户信息修改 电影评价 我的收藏管理 用户充值 在线客服 我的订单 管理员 登录 个人…

SpringCloud集成kafka集群

目录 1.引入kafka依赖 2.在yml文件配置配置kafka连接 3.注入KafkaTemplate模版 4.创建kafka消息监听和消费端 5.搭建kafka集群 5.1 下载 kafka Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/downloads.html 5.2 在config目录下做…

全渠道AI智能商品管理软件平台 助力零售品牌占领技术高地

关于7thonline第七在线 1999年创立于纽约&#xff0c;7thonline第七在线全渠道AI智能商品管理平台&#xff0c;以先进的数学算法模型、人工智能和机器学习技术为核心驱动力&#xff0c;融合了众多零售商品管理的卓越实践经验&#xff0c;精心打造出一套深度适配零售业务场景的自…

[每周一更]-(第105期):SSL证书过期后引发的DNS缓存问题

问题回顾&#xff1a; ​ 上班路上收到ZeroSSL邮件通知我们清点项目的SSL证书到期了&#xff0c;到公司还是登录网址查看信息&#xff0c;一看果然是7.10也就是今天到期&#xff0c;开始看下acme.sh的定制任务为何没生效&#xff0c;一看crontab脚本&#xff0c;日志任务丢垃圾…

tomcat和nginx实现动静分离

访问nginx就是静态页面&#xff0c;nginx代理index.jsp可以访问tomcat的动态页面。 实验 1、设备以及IP地址 nginx1 192.168.10.41 tomcat1 192.168.10.51 tomcat2 192.168.10.52 2、tomcat1 的配置 创建动态页面 cd /usr/local/tomcat/webapps 创建一个目录作为一个ser…

复现ORB3-YOLO8项目记录

文章目录 1.编译错误1.1 错误11.2 错误21.3 错误31.4 错误4 1.编译错误 首先ORB-SLAM相关项目已经写过很多篇博客了&#xff0c;从ORB-SLAM2怎么运行&#xff0c;再到现在的项目。关于环境已经不想多说了 1.1 错误1 – DEPENDENCY_LIBS : /home/lvslam/ORB3-YOLO8/Thirdparty…

Feature Alignment and Uniformity for Test Time Adaptation--论文笔记

论文笔记 资料 1.代码地址 https://github.com/SakurajimaMaiii/TSD 2.论文地址 https://arxiv.org/abs/2303.10902 3.数据集地址 论文摘要的翻译 TTA在接收训练分布外的测试域样本时对深度神经网络进行自适应。在这样设置下&#xff0c;模型只能访问在线未标记的测试样…

昇思MindSpore学习总结十五 ——基于Mindspore 实现BERT对话情绪识别

1、环境配置 根据实际情况&#xff0c;选择合适版本。 %%capture captured_output # 实验环境已经预装了mindspore2.2.14&#xff0c;如需更换mindspore版本&#xff0c;可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc…

MYSQL--第七次作业

MYSQL–第七次作业 在product表上创建三个触发器。每次激活触发器后&#xff0c;都会更新operate表。product表和表的内容如下 Product表内容 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 产品编号 Int(10) 是 否 是 是 否 Name …

torch之从.datasets.CIFAR10解压出训练与测试图片 (附带网盘链接)

前言 从官网上下载的是长这个样子的 想看图片&#xff0c;咋办咧&#xff0c;看下面代码 import torch import torchvision import numpy as np import os import cv2 batch_size 50transform_predict torchvision.transforms.Compose([torchvision.transforms.ToTensor(),…

echarts解决数据差异过大的问题

问题描述 使用echarts折线图和柱状图展示数据时&#xff0c;如果数据差异值较大&#xff0c;会导致显示图形差异过大&#xff0c;图表不美观。 如这一组数据[2000000, 200, 0.1, 20, 0, -10, -3000]&#xff0c;渲染出来的效果如下图&#xff1a; 可以看到由于最大值和最小值差…

几何距离与函数距离:解锁数据空间中的奥秘

几何距离&#xff1a;直观的空间度量 几何距离&#xff0c;顾名思义&#xff0c;是我们在几何学中熟悉的距离概念&#xff0c;如欧几里得距离、曼哈顿距离和切比雪夫距离等。这些距离度量直接反映了数据点在多维空间中的位置关系。 欧几里得距离&#xff1a;最为人熟知的几何距…

(四)stm32之通信协议

一.串口通信 1、全双工、半双工、单工 单工:只能一个人传输,只能向一个方向传输 半双工:只能一个人传输,可以多个方向传输 全双工:多方传输,多个方向传输 2、同步通信、一步通信 异步通信:双方时钟可以不同步,发送的信息封装(加上起始位、停止位)实现同步,效率低,…

【全网最全】2024年辽宁省大学生数学建模竞赛完整思路解析+代码+论文

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

Vue和Element UI 路由跳转,侧边导航的路由跳转,侧边栏拖拽

首先看布局&#xff0c;因为我的用于页面显示的 <router-view> 是通过重定向定位到登陆页的&#xff0c;然后通过登陆页跳转到主页。项目中用到了点击侧边栏的跳转&#xff0c;所以记录下来&#xff0c;方便有需要的人用到~ 阐述 &#xff08;1&#xff09;.content{ di…

26.7 Django单表操作

1. 模型管理器 1.1 Manager管理器 Django ORM中, 每个Django模型(Model)至少有一个管理器, 默认的管理器名称为objects. objects是一个非常重要的管理器(Manager)实例, 它提供了与数据库进行交互的接口.通过管理器, 可以执行数据库查询, 保存对象到数据库等操作.objects管理器…

【Unity学习笔记】第十九 · 物理引擎约束求解解惑(LCP,最优,拉格朗日乘数法,SI,PGS,基于冲量法)

转载请注明出处: https://blog.csdn.net/weixin_44013533/article/details/140309494 作者&#xff1a;CSDN|Ringleader| 在学习物理引擎过程中&#xff0c;有几大问题一直困扰着我&#xff1a; 约束求解到底是LCP还是带约束最优问题&#xff1f;约束求解过程中拉格朗日乘数法…

SpringBoot整合JWT示例教程

1. JWT简介 JSON Web Token (JWT) 是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间作为 JSON 对象安全地传输信息。由于这些信息是经过数字签名的&#xff0c;因此可以被验证和信任。JWT 通常用于身份验…

openharmony上传图片,并获取返回路径

适用条件&#xff1a; openharmony开发 4.0 release版本&#xff0c;对应能力API10 一直不断尝试&#xff0c;一会用官方提供的上传文件&#xff0c;一会用第三方库的axios都不行&#xff0c; 一会报错‘没权限&#xff0c;一会报错’路径错误&#xff0c;还有报错‘401参数错…