22 年 408 新大纲操作系统新增考点

22 408 新大纲操作系统新增考点
一、操作系统引导
操作系统引导指的是将操作系统内核装入内存并启动系统的过程,系统引导通常是由一段被称为启动
引导程序的特殊代码完成的,它位于系统 ROM 中,用来完成定位内核代码在外存的具体位置,按照要求
正确装入内核至内存并最终使内核运行起来的整个系统启动过程。在该过程中,启动引导程序要完成多个 初始化过程,当这些过程顺利完成后才能使用系统的各种服务。这些过程包括初始引导,内核初始化、全
系统初始化。
初始引导过程主要由计算机的 BIOS 完成。 BIOS 是固化在 ROM 中的基本输入输出系统,其内容存储在
主板 ROM 芯片中,主要功能是为内核运作环境进行预先检测,主要包括中断服务程序、系统设置程序、
上电自检和系统启动自举程序等。中断服务程序是系统软硬件间的一个可编程接口,用于完成硬件初始
化;系统设置程序用来设置 CMOS RAM 的各项参数,这些参数通常表示系统基本情况、 CPU 特性、磁盘驱
动器等部件的信息等,开机时一般按 Delete 键即可进入该程序界面;上电自检 POST 所做的工作是在计算
机通电后自动对系统中各关键和主要外设进行检查,一旦在自检中发现问题,将会通过鸣笛或提示信息警
告用户;系统启动自举程序是在 POST 完成工作后执行的,它首先按照系统 CMOS 设置中保存的启动顺序
搜索磁盘驱动器、 CD-ROM 、网络服务器等有效的驱动器,读入操作系统引导程序,接着将系统控制权交
给引导程序,并由引导程序装入内核代码,以便完成系统的顺序启动。
操作系统内核装入内存后,引导程序将 CPU 控制权交给内核,此时内核才可以开始运行。内核将首先
完成初始化功能,包括对硬件、电路逻辑等的初始化,以及对内核数据结构的初始化,如页表(段表)
等。
上述两个步骤完成后,最后要做的就是启动用户接口,使系统处于等待命令输入状态即可,这个阶段
操作系统做的主要工作是为用户创建基本工作环境,接收、解释和执行用户程序与指令。不同系统、不同
设置,全系统初始化完成后的接口表观是不同的。如果选择了图形界面,此时会显示用户账号和密码输入
界面,如 windows 的用户经典登录界面;若使用的是命令接口、则会显示命令行形式的用户登录界面,无
论是图形接口还是命令接口,要全系统初始化完成,即可使用用户名和相应密码进入操作系统环境。
二、虚拟机
虚拟机是通过软件模拟的具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统。
在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机需要将实体机的部分硬盘
和内存容量作为虚拟机的硬盘和内存容量,每一个虚拟机都有独立的 CMOS 、硬盘和操作系统。可以像使
用实体机一样,对虚拟机进行操作,虚拟机技术是虚拟化技术的一种。
Linux 虚拟机:一种安装在 Windows 上的虚拟 Linus 操作环境,就被称为 Linux 虚拟机。它实际上是一
个或一组文件,是虚拟的 Linux 环境,但是它们的实际效果是一样的。
Java 虚拟机 (JVM) :是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,是通过在实际的计算
机上仿真模拟各种计算机功能来实现的。 Java 虚拟机有自己完善的硬件架构, 如处理器、堆线、寄存器
等,还具有相应的指令系统。 Java 语言的一个非常重要的特点就是与平台的无关性。
而使用 Java 虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编
译成不同的目标代码。而引入 Java 虚拟机后, Java 语言在不同平台上运行时不需要重新编译。 Java 语言使
Java 虚拟机屏蔽了与具体平台相关的信息,使得 Java 语言编译程序只需生成在 Java 虚拟机上运行的目
标代码(字节码),就可以在多种平台上不加修改地运行。 Java 虚拟机在执行字节码时,把字节码解释成
具体平台上的机器指令执行。 另外,现在企业内部或互联网上公有云服务商提供的云主机、 VPC 等大多都是虚拟机,易于动态地创
建、回收;集群中所有虚拟机的运行情况都能及时掌握和按需调配。虚拟化可以说是云计算的基础技术支
撑。
三、锁
1 )锁的概念
在操作系统中,可以保证互斥的同步机制称为锁。通过锁机制,能够保证临界区中操作数据的一致
性,锁可以理解为一个共享变量,拥有两种状态:空闲状态和上锁状态。
2 )锁的基本操作
锁有两个基本操作:闭锁和开锁。闭锁就是将锁锁上,其他进程 / 线程不能进入,开锁就是相关工作完
成后,将锁打开,其他进程 / 线程可以进入了。
闭锁操作有两个步骤:
①等待锁达到打开状态 ;
②获得锁并锁上。
注意,闭锁的两个操作应该是原子操作,不能分开,否则就会留下穿插的空档,造成锁的功效丧失。
可行的方法是采用原子级汇编指令 test and set swap 等。
开锁操作只需一步 : 打开锁,即把锁状态修改为空闲状态。
3 )锁应该具备的特性
①锁的初始状态需为打开状态;
②进临界区前必须获得锁;
③出临界区时必须打开锁;
④如果其他进程 / 线程持有锁则必须等待。
四、条件变量
1 )管程的引入
信号量同步存在以下缺点:
同步操作分散:同步操作分散在各个进程中,使用不当就可能导致各进程死锁(如 P V 操作的次序
错误、重复或遗漏)
易读性差:要了解对于一组共享变量及信号量的操作是否正确,必须通读整个系统或者并发的。
由于信号量同步存在上述缺点,科学家提出了管程,其基本思想是:
把信号量操作原语封装在一个对象内部,即将共享变量以及对共享变量能够进行的所有操作集中在一
个模块中
2 )管程的基本概念
定义:管程是关于共享资源的数据结构及一组针对该资源的操作所构成的软件模块。 进程可在任何需要的时候调用管程中的过程。管程有一个很重要的特性,即任一时刻管程中只能有一
个活跃进程,这一特性使管程能有效地完成互斥。
3 )条件变量及其操作
进入管程时的互斥由编译器负责。另外,还需要一种办法使得进程在无法继续运行时被阻塞,解决的
的方法是引入条件变量以及相关的两个操作: wait signal
当一个管程过程发现它无法继续运行时(例如,生产者发现缓冲区满),它会在某个条件变量上(如
full )执行 wait 操作。该操作导致调用进程自身阻塞,并且还将另一个以前等在管程之外的进程调入管
程。
另一个进程,比如消费者,可以唤醒正在睡眠的伙伴进程,这可以通过对其伙伴正在等待的一个条件
变量执行 signal 完成。为了避免管程中同时有多个活跃进程,需要一条规则来通知在 signal 之后该怎么
办,不同学者提出了不同的处理方法。
五、进程的调度时机和调度方式
1 )调度的时机
调度的时机即何时进行调度。调度处理常见情形包括:
在创建一个新进程之后。需要决定是运行父进程还是运行子进程,由于二者都处于就绪状态,调度程
序可以选择其中的任何一个。
在一个进程退出时必须进行调度。必须从就绪进程集中洗择某个进程,如果没有就绪的进程,通常会
运行一个系统提供的空闲进程(闲逛进程)。
当一个进程阻塞在 I/O 和信号量上或由于其他原因阻塞时,必须选祥另外一个进程运行。
在一个 I/O 中断发生时,必须进行调度。
另外,分给进程的时间片用完、有更紧急的事情需要处理(如 I/O 中断),有更高优先级的进程进入
就绪队列等情况下,当前进程被动放弃 CPU ,将进行调度。
有些情况下不能进行调度。例如,在处理中断的过程中,进程在操作系统内核程序临界区中。执行原
子操作过程中(原语)等。
2 )调度方式
非抢占方式:一旦把处理机分配给某进程后,便让该进程一直执行,直至该进程完成或发生某事件而
被阻塞时,才把处理机分配给其他进程,决不允许进程抢占已分配出去的处理机。
评价:实现简单、系统开销小;适用于大多数的批处理 OS ,但在要求比较严格的实时系统中,不宜采
用这种调度方式。
抢占方式:允许调度程序根据某种原则,去暂停某个正在执行的进程,将处理机重新分配给另一进
程。
抢占的原则:
优先级原则:为紧迫的作业赋予较高的优先级,这种作业到达系统或由阻塞状态被唤醒后,若其优先
级高于当前运行的进程的优先级,可以剥夺其 CPU 短作业(进程)优先原则:若一个作业(进程)到达系统,其运行长度比当前运行的进程的剩余运行
时间短,则剥夺当前运行进程的 CPU
时间片原则:在轮转算法中, CPU 轮流为诸多进程服务,每个进程运行完自己的时间片后,系统就将
它的 CPU 剥夺过来,交给下一个进程使用。
六、上下文切换机制
上下文指的是一种环境,对于进程而言,上下文实际上是进程执行活动全过程的静态描述。
进程上下文是可以按照层次规则组合起来的。例如在 UNIX System V 中,进程上下文由用户级、寄存
器上下文以及系统级上下文组成。
上下文切换机制:当对处理机进行切换时,将发生两对上下文切换操作。对于第一对,将保存当前进
程的上下文,而装入分派程序的上下文,以便分派程序运行;对于第二对,将移出分派程序而把新选进程
CPU 现场信息装入到处理机的相应寄存器中。
七、固态硬盘
固态硬盘是用固态电子存储芯片阵列制成的硬盘,由控制单元和在储单元组成。
固态硬盘在接口的规范和定义、功能及使用方法上与传统硬盘完全相同。但 I/O 性能相对于传统硬盘
大大提升,被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航
设备等领域。
固态硬盘具有如下优点 :
1 )读写速度快。采用闪存作为存储介质,读取速度相对机械硬盘更快。固态硬盘不用磁头,寻道时
间几乎为 0 。持续写入的速度非常惊人,最常见的 7200 转机械硬盘的寻道时间一般为 12-14ms ,而固态硬
盘可以轻易达到 0.1 ms 甚至更低。
2 )磨损均衡。也是一种基于固态硬盘主控芯片的内置平衡机制,用于均衡固态硬盘内部各个区块闪
存颗粒的使用程度,从而延长整体颗粒的使用寿命。在主控制器的固件中添入新的控制命令。让主控制器
在固态硬盘的读写过程中,尽可能均衡地使用各个 block ,防止部分闪存区块因过度频繁地擦除和写入命令
而导致整块闪存颗粒提前报废。
八、虚拟文件系统
虚拟文件系统( VFS )是一种用于网络环境的分布式文件系统,它允许在同一个目录结构中可以挂载
若干种不同的文件系统。
虚拟文件系统是物理文件系统与服务之间的一个接口层。它对每个文件系统的所有细节进行抽象。隐
藏了它们的实现细节,为使用者提供统一的接口。严格来说, VFS 并不是一种实际的文件系统,它只是存
在于内存中,不存在于任何外存空间, VFS 在系统启动时建立,在系统关闭时消亡。
对于用户来说,不需要关心不同文件系统的具体操作过程。而只是对一个虚拟的文件操作界面来进行
操作,每一个文件系统之间互不干扰,而只是调用相应的程序来实现其功能, VFS 作为内核中的一个软件 层,用于给用户空间的程序提供文件系统接口,同时也提供了内核中的一个抽象功能,允许不同的文件系
统很好地共存。
九、文件系统挂载
文件系统挂载,是指将新的文件系统关联至当前根文件系统。可以使用 mount 命令在目录树中的指定
目录(挂载点)附加文件系统。挂载点作为要挂载文件系统的访问入口,必须已经存在。一般是不会被进
程使用到的目录。挂载后,挂载点下原有文件将会被临时隐藏。
卸载,是指将某文件系统与当前根文件系统的关联关系移除。

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

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

相关文章

【动态规划算法】-回文串问题题型(34-40题)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

2.3转移线程的所有权

转移线程的所有权 假设你想要编写一个函数,它创建一个在后台运行的线程,但是向调用函数回传新线程的所有权,而非等待其完成,又或者你想要反过来做,创建一个线程,并将所有权传递给要等待它完成的函数。在任…

一个 git 仓库下拥有多个项目的 git hooks 配置方案

前言 通常情况下,一个 git 仓库就是一个项目,只需要配置一套 git hooks 脚本就可以执行各种校验任务。对于 monorepo 项目也是如此,monorepo 项目下的多个 packages 之间,它们是有关联的,可以互相引用,所以…

CRM系统如何进行公海池线索分配自动化?

在销售过程中,线索分配是一个非常重要的环节。传统的线索分配方式往往是由销售主管手动进行,不仅效率低下,还存在着不公平、不灵活的问题。因此,许多企业通过CRM来实现公海池线索分配自动化。 1、基于规则的分配 CRM可以让用户设…

C语言易错知识点总结2

函数 第 1 题(单选题) 题目名称: 能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( ) 题目内容: A .return 这二个数 B .形参用数组 C .形参用二个指针 D .用…

express学习笔记6 - 用户模块

新建router/user.js const express require(express) const routerexpress.Router() router.get(/login, function(req, res, next) {console.log(/user/login, req.body)res.json({code: 0,msg: 登录成功})})module.exportsrouter 在router/user.js引入并使用 const us…

Vue进阶(幺叁陆): transition标签实现页面跳转动画

文章目录 一、前言二、方案实现三、延伸阅读 transition标签四、拓展阅读 一、前言 在Vue项目开发过程中,应用全家桶vue-router实现路由跳转,且页面前进、后退跳转过程中,分别对应不同的切换动画。vue-router 切换页面时怎么设置过渡动画&am…

ansible-kubeadm在线安装单masterk8s v1.19-v1.20版本

ansible可以安装的KS8版本如下: 请按照此博客中的内容操作后,才可以通过下面的命令查询到版本。 [rootk8s-master01 ~]# yum list kubectl --showduplicates | sort -r kubectl.x86_64 1.20.0-0 kubern…

MySQL日志——错误日志、二进制日志

错误日志二进制日志查询日志慢查询日志 1.错误日志 查看日志位置: show variables like %log_error%查看错误日志: tail -f /var/log/mysql.log2.二进制日志 show variables like %log_bin%;cd /var/lib/mysql ll2.1 日志格式 查看日志格式指令&…

计算机视觉与图形学-神经渲染专题-ConsistentNeRF

摘要 Neural Radiance Fields (NeRF) 已通过密集视图图像展示了卓越的 3D 重建能力。然而,在稀疏视图设置下,其性能显着恶化。我们观察到,在这种情况下,学习不同视图之间像素的 3D 一致性对于提高重建质量至关重要。在本文中&…

Nvidia Triton 使用入门教程

1 相关预备知识 模型:包含了大量参数的一个网络(参数结构),体积10MB-10GB不等。模型格式:相同的模型可以有不同的存储格式(可类比音视频文件),目前主流有torch、tf、onnx和trt&…

vscode 无法导入自己写的模块文件(.py)问题

问题主要是在 vscode中 python 的读入模块路径存在问题,下面先介绍下python的模块读入路径: 什么是PYTHONPATH? PYTHONPATH是一个环境变量,用于指定Python解释器在导入模块时搜索模块的路径。当我们导入一个模块时,Python解释器…

Leetcode 268. Missing Number

Problem Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array. Algorithm Sum all the numbers as x x x and use n ( n 1 ) 2 − x \frac{n(n1)}{2} - x 2n(n1)​−x. Code …

k8s概念-secret

回到目录 k8s secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 的容器里挂载 Volume 的方式或者环境变量的方式访问到这些 Secret 里保存的信息了…

npm,yarn,pnpm

原理 npm、yarn和pnpm都是用于管理Node.js项目依赖的包管理工具,下面对它们进行详细讲解: npm(Node Package Manager): npm是Node.js的默认包管理工具,也是最早被广泛使用的。npm使用package.json文件来管…

【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力(CVPR2021)

文章目录 一、背景二、方法2.1 主要过程2.2 Forming Bag of Regions2.3 Representing Bag of Regions2.4 Aligning bag of regions 三、效果 论文:Aligning Bag of Regions for Open-Vocabulary Object Detection 代码:https://github.com/wusize/ovdet…

pytorch(续周报(1))

文章目录 2.1 张量2.1.1 简介2.1.2 创建tensor2.1.3 张量的操作2.1.4 广播机制 2.2 自动求导Autograd简介2.2.1 梯度 2.3 并行计算简介2.3.1 为什么要做并行计算2.3.2 为什么需要CUDA2.3.3 常见的并行的方法:网络结构分布到不同的设备中(Network partitioning)同一层…

微服务系列<3>---微服务的调用组件 rpc 远程调用

什么是rpc调用,让我们调用远程方法就像调用本地方法一样 这就属于rpc调用 rpc是针对于本地来说的 调用远程方法根调用本地方法一样 如果能达到这种效果 就是rpc调用如果达到一种效果 调用远程和调用本地一样 他就是一种rpc框架2个微服务 之间发的调用 我们之前通过ribbon的方式…

springboot访问请求404的原因

是记录,可能出现错误 可能出现的原因 1.你请求的URL路径不对,比如说你请求的路径是/usr/list,GET方法,但是你UserController上面的RequestMapping是这个样子:RequestMapping(“user”),有可能哈 2.前端的请求时GET方法,后端对应的处理函数的方…

【Linux命令200例】whereis用于搜索以及定位二进制文件

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜…