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

操作系统(一)

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

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

操作系统的类型和结构

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

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

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

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

操作系统在计算机和用户之间起接口的作用。操作系统为用户提供的接口表现形式一般为:命令、菜单、窗口之类的而操作系统为应用程序提供的接口为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.mfbz.cn/a/797302.html

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

相关文章

MySQL-ubuntu环境下安装配置mysql

文章目录 什么是数据库?一、ubuntu环境下安装mysql二、配置mysql配置文件1.先登上root账号2.配置文件的修改show engines \G; mysql和mysqld数据库的基础操作登录mysql创建数据库显示当前数据库使用数据库创建表插入students表数据打印students表数据select * from …

Python应用爬虫下载QQ音乐歌曲!

目录: 1.简介怎样实现下载QQ音乐的过程; 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网: https://y.qq.com/,在搜索栏上输入一首歌曲的名称; 如我在上输入最美的期待,按回车来到这个画面 我们首…

在家上网IP地址是固定的吗?

在数字化时代,互联网已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,我们都离不开网络的支持。然而,当我们在家中接入互联网时,可能会产生这样一个疑问:在家上网IP地址是固定的吗?下面一…

[python]基于yolov10+gradio目标检测演示系统设计

【设计介绍】 YOLOv10结合Gradio实现目标检测系统设计是一个结合了最新目标检测技术和快速部署框架的项目。下面将详细介绍这一系统的设计和实现过程。 一、YOLOv10介绍 YOLOv10是YOLO(You Only Look Once)系列的最新版本,由清华大学的研究…

2024年上半年信息系统项目管理师——综合知识真题题目及答案(第1批次)(3)

2024年上半年信息系统项目管理师 ——综合知识真题题目及答案(第1批次)(3) 第41题:在应用集成中,有多个组件帮助协调连接各种应用。其中()利用特定的数据结构,帮助开发人…

案例研究|风电载荷测试通信方案

客户介绍 北京鉴衡认证中心有限公司(China General Certification Center,简称“鉴衡”或“CGC”)是国内领先的第三方技术服务机构,专注于标准研制、检测、检验、认证、技术咨询以及行业研究等服务领域。 目前,鉴衡的…

Linux内核编译安装 - Deepin,Debian系

为什么要自己编译内核 优点 定制化:你可以根据自己的硬件和需求配置内核,去掉不必要的模块,优化性能。性能优化:移除不需要的驱动程序和特性,减小内核体积,提高系统性能。最新特性和修复:获取…

单相整流-TI视频课笔记

目录 1、单相半波整流 1.1、单相半波----电容滤波---超轻负载 1.2、单相半波----电容滤波---轻负载 1.3、单相半波----电容滤波---重负载 2、全波整流 2.1、全波整流的仿真 2.2、半波与全波滤波的对比 3、全桥整流电路 3.1、全波和全桥整流对比 3.2、半波全波和全桥…

数学建模入门

目录 文章目录 前言 一、数学建模是什么? 1、官方概念: 2、具体过程 3、适合哪一类人参加? 4、需要有哪些学科基础呢? 二、怎样准备数学建模(必备‘硬件’) 1.组队 2.资料搜索 3.常用算法总结 4.论文撰写的…

jenkins系列-06.harbor

https://github.com/goharbor/harbor/releases?page2 https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz harbor官网:https://goharbor.io/ 点击 Download now 链接,会自动跳转到上述github页面&am…

底软驱动 | Linux字符设备驱动开发基础

文章目录 知识整理--Linux字符设备驱动开发基础字符设备基础1从一个最简单的模块源码说起字符设备驱动工作原理字符设备驱动代码实践--给空模块添加驱动壳子应用程序如何调用驱动 字符设备基础2添加读写接口(应用和驱动之间的数据交换)驱动中如何操控硬件…

基于微信小程序的音乐播放平台

基于微信小程序的音乐播放平台 音乐播放小程序项目简介技术栈功能模块项目流程系统E-R图项目页面 音乐播放小程序 项目简介 微信音乐小程序旨在提供一个简洁高效的音乐播放平台,用户可以方便地搜索、播放和收藏自己喜欢的音乐。整个项目采用前后端分离的架构&…

基于XC7VX690T FPGA+ZU15EG SOC的6U VPX总线实时信号处理平台(支持4路光纤)

6U VPX架构,符合VITA46规范板载高性能FPGA处理器:XC7VX690T-2FFG1927I板载1片高性能MPSOC:XCZU15EG-2FFVB1156I板载1片MCU,进行健康管理、时钟配置等V7 FPGA外挂2个FMC接口两片FPGA之间通过高速GTH进行互联 基于6U VPX总线架构的通…

模型剪枝中的预训练权重真的有用么?重新思考模型剪枝的价值二

在https://hpg123.blog.csdn.net/article/details/137705869中,根据论文提供的数据初步整理出了模型剪枝的信息,但不够精练,故而在此深入分析。 主要解决以下问题: 1、模型剪枝真的有用么? 2、什么样的方案模型剪枝效果…

Java中常用线程安全的集合

文章目录 常用线程安全的集合CopyWriteArrayListCopyOnWriteArraySetHashTableConcurrentHashMapJDK1.7JDK1.8 常用线程安全的集合 在多线程环境中,数据的一致性和线程的安全性是至关重要的。传统的集合类,如ArrayList、HashMap和HashSet,在…

Wikijs 部署教程

以下是一个 Wikijs 部署的简单教程,涵盖了使用 Docker 和直接安装两种方式: 方法一: 使用 Docker (推荐) Docker 是一个方便快捷的方式来部署 Wikijs,它可以避免许多手动配置步骤。 安装 Docker: 按照 https://docs.docker.com/…

使用Gitee仓库镜像管理功能实现Gitee与Github 双向同步

进入你所需要同步的仓库,点击「管理」->「镜像仓库管理」,点击「添加镜像」选项; 如果你的Gitee账号还没有绑定过 GitHub 帐号,先根据弹窗的提示绑定 GitHub 帐号; 添加镜像时候,在「镜像方向」中选择…

拥抱UniHttp,规范Http接口对接之旅

前言 如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口, 那么你项目一定充斥着大量的对接逻辑和代码, 并且针对不同的对接渠道方需要每次封装一次调用的简化, 一旦封装不好系统将会变得难以维护&am…

【Wamp】局域网设备访问WampServer | 使用域名访问Wamp | Wamp配置HTTPS

局域网设备访问WampServer 参考&#xff1a;https://www.jianshu.com/p/d431a845e5cb 修改Apache的httpd.conf文件 D:\Academic\Wamp\program\bin\apache\apache2.4.54.2\conf\httpd.conf 搜索 Require local 和Require all denied&#xff0c;改为Require all granted <…

【Caffeine】⭐️SpringBoot 项目整合 Caffeine 实现本地缓存

目录 &#x1f378;前言 &#x1f37b;一、Caffeine &#x1f37a;二、项目实践 2.1 环境准备 2.2 项目搭建 2.3 接口测试 ​&#x1f49e;️三、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;缓存是提升系统性能的一个不可或缺的工具&#xff0c;通过缓存可以避免大…