当前位置: 首页 > news >正文

【计算机操作系统:二、操作系统的结构和硬件支持】

第2章 操作系统的结构和硬件支持

2.1 操作系统虚拟机

操作系统虚拟机是一种通过软件技术对硬件资源进行抽象和虚拟化的机制,使用户能够以逻辑方式访问和使用计算机资源。

  1. 定义与概念

    • 虚拟机是操作系统虚拟化技术的核心产物,通过模拟硬件资源为多个操作系统提供运行环境。

    • 提供应用程序与硬件之间的隔离,提高系统的安全性和稳定性。

  2. 虚拟机的实现方式

    • 全虚拟化:模拟硬件环境,使操作系统完全不感知底层虚拟化的存在。

    • 半虚拟化:部分硬件资源由虚拟化平台直接管理,例如通过支持虚拟化的CPU指令优化性能。

    • 容器虚拟化:通过共享操作系统内核实现轻量化虚拟化,每个容器独立运行应用程序。

  3. 应用场景

    • 资源整合:将多个虚拟机部署在单一硬件上,提升资源利用率。

    • 隔离环境:为开发、测试提供独立的运行环境,避免相互干扰。

    • 灾备与迁移:支持虚拟机快照、动态迁移等功能。

2.2 操作系统的组织结构
2.2.1 操作系统的结构

操作系统的结构是其功能模块的组织方式,不同结构直接影响系统的运行效率、扩展性和可维护性。

  1. 单体结构

    • 所有功能模块运行在内核空间,包括进程管理、内存管理、文件系统等。

    • 优点:性能高,模块间通信效率快。

    • 缺点:模块间高度耦合,任何修改可能影响整个系统。

  2. 微内核结构

    • 仅保留最基本的功能模块,如进程管理、内存管理。

    • 其他功能模块运行在用户空间。

    • 优点:模块独立,易于扩展和调试。

    • 缺点:模块间通信开销大。

  3. 模块化结构

    • 内核划分为多个相对独立的模块,如文件系统模块、网络模块等。

    • 优点:扩展性强,易于维护和调试。

    • 缺点:需要良好的模块接口设计。

2.2.2 运行时的组织结构
  1. 任务调度机制

    • 调度器根据调度算法分配CPU资源。

    • 常见算法包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转等。

  2. 内存管理

    • 包括虚拟内存的动态分配与回收,涉及页表、段表等。

    • 提供按需调页机制,减少内存浪费。

2.2.3 操作系统与计算机系统各层次的接口
  1. 用户接口

    • 提供用户与操作系统交互的工具,例如命令行接口(CLI)和图形用户界面(GUI)。
  2. 系统调用接口

    • 提供一组标准化的函数,用户程序通过系统调用接口请求操作系统服务。
  3. 硬件接口

    • 操作系统通过设备驱动程序与底层硬件交互,例如磁盘驱动、网络驱动等。
2.3 处理机的特权级
2.3.1 处理机的态及分类

处理机运行态定义了系统的访问权限级别,用于确保系统安全和稳定性。

  1. 用户态

    • 用于运行普通应用程序。

    • 权限受限,禁止直接操作硬件。

  2. 内核态

    • 用于运行操作系统核心代码。

    • 拥有最高权限,可以直接操作硬件资源。

  3. 态切换机制

    • 当用户程序请求系统资源或触发异常时,处理器从用户态切换到内核态。
2.3.2 特权指令

特权指令用于执行对硬件有直接影响的操作,仅能在内核态运行。

  1. 定义与分类

    • 包括I/O操作指令、内存管理指令、处理器控制指令等。
  2. 安全机制

    • 当用户态程序尝试执行特权指令时,处理器会触发异常并进入内核态处理。
2.4 中断及其处理
2.4.1 中断概念及类型

中断是计算机系统中处理异步事件的重要机制,用于确保系统对突发事件的及时响应。

  1. 类型

    • 硬件中断:由外设触发,例如键盘输入、网络包到达等。

    • 软件中断:由程序显式触发,例如系统调用。

    • 异常:由处理器检测到的错误触发,例如除零错误。

2.4.2 向量中断和探询中断
  1. 向量中断

    • 每种中断类型分配一个唯一编号,通过编号找到对应的中断处理程序。
  2. 探询中断

    • 按优先级逐一检查中断源,找到激活的中断。
2.4.3 中断进入

描述中断请求信号到中断处理程序开始执行的全过程,涉及保存现场、加载中断向量等。

2.4.4 软件中断处理过程

软件中断由程序触发,常用于系统调用或内核功能测试,处理过程包括参数传递和结果返回。

2.5 UNIX、Linux系统结构
2.5.1 UNIX系统的体系结构
  1. 分层结构

    • 硬件层、内核层、系统调用接口层、用户层。

    • 每一层次独立,便于维护和扩展。

  2. 模块划分

    • 包括文件系统模块、进程管理模块、设备管理模块等。
2.5.2 UNIX系统的核心结构
  1. 核心模块

    • 负责内存管理、进程调度、设备驱动等基本功能。
  2. 内核功能

    • 提供进程间通信机制。

    • 管理文件系统,支持多种文件系统格式。

2.5.3 Linux系统的内核结构

Linux内核采用模块化设计,支持动态加载模块和内核更新。

  1. 模块划分

    • 文件系统模块、网络协议栈、设备驱动模块。
  2. 特性

    • 高度可移植性,支持从嵌入式设备到超级计算机的多种硬件架构。
2.6 Linux系统的特权级与中断处理
2.6.1 Linux系统的特权级

Linux系统采用两级特权机制:用户态和内核态。

  1. 切换机制

    • 用户程序通过系统调用进入内核态。

    • 内核态完成任务后返回用户态。

2.6.2 中断处理的上半部和下半部
  1. 上半部

    • 处理紧急的中断请求,例如硬件状态检查。
  2. 下半部

    • 延迟执行非紧急任务,例如网络包处理。
2.6.3 中断处理下半部的实现机制
  1. 实现机制

    • 使用软中断、任务队列等延迟执行框架。
  2. 实际案例

    • 网络数据包的接收和协议解析分布于上半部和下半部。

相关文章:

【计算机操作系统:二、操作系统的结构和硬件支持】

第2章 操作系统的结构和硬件支持 2.1 操作系统虚拟机 操作系统虚拟机是一种通过软件技术对硬件资源进行抽象和虚拟化的机制,使用户能够以逻辑方式访问和使用计算机资源。 定义与概念: 虚拟机是操作系统虚拟化技术的核心产物,通过模拟硬件资…...

51单片机——步进电机模块

直流电机没有正负之分,在两端加上直流电就能工作 P1.0-P1.3都可以控制电机,例如:使用P1.0,则需要把线接在J47的1(VCC)和2(OUT1)上 1、直流电机实验 要实现的功能是:直…...

当算法遇到线性代数(四):奇异值分解(SVD)

SVD分解的理论与应用 线性代数系列相关文章(置顶) 1.当算法遇到线性代数(一):二次型和矩阵正定的意义 2.当算法遇到线性代数(二):矩阵特征值的意义 3.当算法遇到线性代数&#xff0…...

SASS 简化代码开发的基本方法

概要 本文以一个按钮开发的实例,介绍如何使用SASS来简化CSS代码开发的。 代码和实现 我们希望通过CSS开发下面的代码样式,从样式来看,每个按钮的基本样式相同,就是颜色不同。 如果按照传统的方式开发,需要开发btn &…...

40.TryParse尝试转化为int类型 C#例子

也许这个时候学有点晚,但是不管怎样都学了 尝试转化,不能转化就返回bool类型的假 它会直接给括号里面的int类型赋值 代码: using System; using System.Timers; public class Program {static void Main(){int a;bool i;while (true){Get…...

【微服务】2、网关

Spring Cloud微服务网关技术介绍 单体项目拆分微服务后的问题 服务地址问题:单体项目端口固定(如黑马商城为8080),拆分微服务后端口各异(如购物车808、商品8081、支付8086等)且可能变化,前端难…...

红队-shell编程篇(上)

声明 通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一、建立Shell文件 1. Shell简介 Shell是一种命令行界面&am…...

电子价签会是零售界的下一个主流?【新立电子】

电子价签,作为一种能够替代传统纸质标签的数字显示屏,已经在零售行业中展现出其巨大的潜力。它具有实时更新、集中管理、高效节能的特点,实现价格的实时更新,大大减少更新价格的工作量和时间。为消费者带来更加便捷、准确的购物体…...

5 分布式ID

这里讲一个比较常用的分布式防重复的ID生成策略,雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库,分机房部署,单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看…...

SpringBoot | @Autowired 和 @Resource 的区别及原理分析

关注:CodingTechWork 引言 在Spring框架中,Autowired 和 Resource 是两种常用的依赖注入注解,它们都用于自动装配Bean,简化了开发者手动创建和管理Bean的繁琐工作。然而,它们的实现机制和使用方式有所不同。理解这两者…...

『SQLite』解释执行(Explain)

摘要:本节主要讲解SQL的解释执行:Explain。 在 sqlite 语句之前,可以使用 “EXPLAIN” 关键字或 “EXPLAIN QUERY PLAN” 短语,用于描述表查询的细节。 基本语法 EXPLAIN 语法: EXPLAIN [SQLite Query]EXPLAIN QUER…...

0基础学前端-----CSS DAY12

视频参考:B站Pink老师 今天是CSS学习的第十二天,今天开始的笔记对应Pink老师课程中的CSS第七天的内容。 本节重点:CSS高级技巧 本章目录 本节目标1. 精灵图1.1 为什么需要精灵图1.2 精灵图使用案例:拼出自己的名字 2. 字体图标2.…...

(概率论)无偏估计

参考文章:(15 封私信 / 51 条消息) 什么是无偏估计? - 知乎 (zhihu.com) 首先,第一个回答中,马同学图解数学讲解得很形象, 我的概括是:“注意,有一个总体的均值u。然后,如果抽样n个&…...

Minio-Linux-安装

文章目录 1.Linux安装1.下载源码包2.上传到/usr/local/minio1.进入目录2.上传 3.开放执行权限4.创建minio文件存储目录及日志目录5.编写启动的shell脚本1.脚本编写2.赋予执行权限 6.启动!1.执行run脚本2.查看日志3.开放9001和9000端口1.服务器2.安全组3.访问&#x…...

利用Java爬取1688商品详情API接口:技术与应用指南

引言 1688作为中国领先的B2B电子商务平台,拥有海量的商品信息。对于商家和市场研究人员来说,能够从1688获取商品详情信息,对于市场分析、竞品研究等具有重要价值。本文将详细介绍如何使用Java编写爬虫程序,以合法、高效的方式获取…...

基于MATLAB的汽车热管理模型构建

一、引言 汽车热管理系统对汽车性能、部件寿命及驾乘体验至关重要。它能确保发动机、电池等关键部件在适宜温度工作。MATLAB 功能强大,为构建高精度热管理模型提供有效途径,助力优化系统设计与控制策略。 二、汽车热管理系统构成 2.1 发动机冷却系统&…...

LRU(1)

LRU是"Least Recently Used"(最近最少使用)的缩写,它是一种常用的页面置换算法和缓存淘汰策略。当计算机系统的内存或缓存资源有限时,LRU算法根据的历史访问记录来决定哪些数据应该被保留在内存或缓存中,哪些被淘汰。其核心思想是“…...

VSCode 使用鼠标滚轮控制字体

一、 文件 | 首选项 | 设置 二、单击在 settings.json中编辑 "editor.mouseWheelZoom": true 注注注意:保存哦!ctrlS 三、测试 按住ctrl鼠标滚轮,控制字体大小...

数据库(3)--针对列的CRUD操作

1.Create 新增 语法: insert into 表名 (列名)values (列)... 创建一个学生表用于演示: create table if not exists student( id bigint comment 编号, name varchar(20) comment 姓名 ); 1.1直接增加…...

【Linux】记录一下考RHCE的学习过程(七)

年底了,公司接的北京地铁轨道交通的项目做不完了,一百多列地铁的设备都得调,派我出差了几周,这几天才回来,出差累死了实在是没办法更新。(YOASOBI的二开票还没抢到ToT,哭死,看看回滚…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...