操作系统基础 (二)

news2025/1/15 6:26:45

目录

  • 六. 运行机制
    • 两种指令
    • 两种CPU状态
    • 两种程序
  • 七. 中断和异常
    • 中断的作用
    • 中断类型
    • 中断机制基本原理
  • 八. 系统调用
    • 定义
    • 系统调用与库函数
    • 系统调用实现的功能
    • 系统调用过程
  • 九. OS体系结构
    • 内核
    • 分层结构
    • 模块化
    • 外核
  • 十. 系统引导
    • 相关的数据
      • 磁盘数据
      • 主存数据
    • 系统引导过程总述
  • 十一. 虚拟机
    • 背景
    • 两类虚拟机

六. 运行机制

两种指令

  • 指令:处理器(CPU)能够识别,执行的最基本命令。【即二进制机器指令】

Linux,Windows,MacOS的cmd命令框中的”指令“实质上是交互式命令接口。

  • 特权指令:一些可以影响其他程序的指令。只能由”管理者“即操作系统内核使用
  • 非特权指令应用程序使用的指令,如加法指令,减法指令等。

CPU设计出来时候就划分了两种指令,因此执行的之前可以判断出指令类型。

两种CPU状态

  • 内核态(核心态,管态):此时运行的是内核程序,可以执行特权指令。
  • 用户态(目态):此时运行的是应用程序,只能执行非特权指令。

CPU中存在标志CPU状态的寄存器:程序状态字寄存器(PSW),使用一个二进制位来表示CPU处于用户态还是内核态。

两种程序

  • 应用程序:普通程序员写的程序。
  • 内核程序多个内核程序组成”操作系统内核“,简称”内核Kernel)

内核操作系统的核心部分(eg. Docker—>仅需要Linux内核),最接近硬件。操作系统最核心的功都在内核中,其他功能如图形化用户界面GUI则不在内核中。

  • 状态切换:内核态—>用户态执行特权指令—修改PSW位,操作系统让出CPU使用权。

    用户态---->内核态由”中断“信号引发,硬件自动完成变态过程。操作系统强行夺回CPU使用权。

凡是需要操作系统介入的地方,都会触发中断信号

七. 中断和异常

中断的作用

“中断”:操作系统内核夺回CPU控制权的唯一途径。

如果没有"中断"机制,一旦应用程序上CPU运行,就会一直占用CPU。

中断类型

  • 内中断:与当前执行的指令有关,中断信号来自CPU内部。【也称为”异常“,包括陷入(trap),故障(fault),终止(abort)】
  • 例子一:试图在用户态执行特权指令
  • 例子二:除法运算发现除数为零
  • 例子三:应用程序请求内核服务,会执行特殊指令–陷入指令【不是特权指令】,引发内部中断。
  • 外中断:与当前执行的指令无关,中断信号来自CPU外部。【狭义的"中断"】
  • 时钟中断:时钟部件发来的中断信号
  • I/O中断

中断机制基本原理

联想截图_20240717173150.png

八. 系统调用

定义

系统调用是操作系统提供给程序(程序员/编程人员)使用的接口【可供应用程序调用的特殊函数】;应用程序通过系统调用请求获得操作系统内核服务
联想截图_20240717185501.png

系统调用与库函数

联想截图_20240717185645.png

系统调用实现的功能

联想截图_20240717185924.png
联想截图_20240717185835.png

系统调用过程

  • Step 1 传递寄存器参数

首先,向寄存器传递参数(≥1个),首个参数指明系统调用类型,如”fork“调用

联想截图_20240717190416.png

  • Step 2 执行陷入指令 引发内中断信号。接着转入中断处理程序【内核程序】—即 系统调用入口程序。

联想截图_20240717190951.png

  • Step 3 系统调用入口程序 【假设使用了fork系统调用】

联想截图_20240717191053.png

  • **Step 4 **系统调用完成后,返回用户态继续执行原程序后续指令

联想截图_20240717191350.png

  • 总结

联想截图_20240717191556.png

九. OS体系结构

  • 原语一种特殊程序,具有原子性。(即程序的运行不可被”中断“

联想截图_20240717193750.png

内核

联想截图_20240717192441.png

  • 大内核(宏内核/单内核):将操作系统主要功能模块都作为系统内核,运行在核心态。

应用程序请求内核服务需要2次CPU状态转换。Tip:CPU状态转换需要消耗时间,频繁转换会降低系统性能

  • 优点:高性能
  • 缺点:内核代码庞大,结构混乱,难以维护某个功能模块出错,可能导致整个系统崩溃
  • 常见系统:Linux,Unix。

联想截图_20240717192737.png

  • 微内核内核只保留最基本功能。

应用程序请求内核服务需要6次CPU状态转换
利用进程管理,存储管理 :通过消息传递,指明想要调用的功能模块。

  • 优点:内核功能少,结构清晰,便于维护可靠性高。内核外的功能模块出错不会导致整个系统崩溃。
  • 缺点:需要CPU频繁切换状态,性能低
  • 常见系统:Windows NT

联想截图_20240717192744.png

分层结构

  • 操作系统内核被分为多层,最底层是硬件,最高层是用户接口。每层只能调用更低一层提供的接口。

  • 优点:1.便于调试,自底向上逐层调试验证。【本层只会使用低一层的功能

    1. 利于扩充维护,各层接口清晰固定。【只需要层间接口固定不变即可扩充层次】
  • 缺点:1. 仅仅可以调用相邻低层,难以定义各层的边界。【不同层的功能都需要被使用】

    1. 效率低,不可跨层调用,系统调用时间长。

模块化

  • 内核被分为多个模块,各模块相互协作。

内核 = 主模块(由进程管理,内存管理等模块组成) + 可加载内核模块(如驱动模块)

可加载模块动态加载新模块到内核,无需重新编译整个内核。【使内核具有可拓展性】

  • 优点:模块间逻辑清晰易于维护,可以多模块同时开发。

    支持动态加载新的内核模块,增强OS适应性。
    ** 各模块之间可以相互直接调用**,无需通信,效率高

  • 缺点:模块间接口定义不一定合理,实用。

    模块间相互依赖,难以调试

外核

  • 内核:负责进程调度,进程通信等功能。

  • 外核:负责为用户进程分配,回收未经抽象的硬件资源保证资源使用安全

                外核**分配连续的地址空间**,便于用户随机访问【磁盘的磁头不需要来回跳转】,**提升了性能**。
    

未经抽象的硬件资源:即未经过虚拟化的硬件资源(内存空间,磁盘空间等)。
用户进程视角下连续的地址空间,实际上可能是分散存储的。

  • 优点:
    • 使得用户进程可以灵活使用硬件资源
    • 减少了虚拟硬件资源的”映射层“,提升效率。【不需要查页表,进行物理地址转换
  • 缺点:
    • 降低了系统一致性。【可能存在一块物理地址被用于虚拟地址映射,同时又被外核使用分配给用户进程。需要实际分析使用情况】
    • 使得操作系统更加复杂

十. 系统引导

BIOS(Basic Inout / Output System):基本输入/输出系统。

相关的数据

磁盘数据

联想截图_20240717204314.png

  • 分区表:一个数据结构,指明了磁盘各个分区的空间大小和地址范围
  • C盘:作为磁盘的活动分区,安装操作系统。

C盘细分如图:联想截图_20240717204611.png

主存数据

联想截图_20240717204744.pngRAM芯片区:易失性(断电丢失数据);ROM芯片区:不易失性。

  • ROM引导程序:指示CPU将磁盘的主引导记录读入CPU(RAM区)。

接着CPU会执行主存中的磁盘引导程序 ----> 磁盘引导程序确定C盘位置,将C盘的引导记录PBR读入主存 ------->执行PBR程序----->查找启动管理器【通常存储在根目录】
---------> 读取启动管理程序进入主存------------> 执行启动管理程序--------->完成操作性系统初始化操作

系统引导过程总述

联想截图_20240717205844.png

eg. Windows操作系统万丈的开机初始化程序在”根目录/Windows/Boot“路径下。

十一. 虚拟机

联想截图_20240717211235.png

背景

  • 传统计算机在一个物理机上只能运行一个操作系统,在其上运行多个应用程序。

  • 不足:1. 若物理机器硬件资源强大,则会出现计算机资源利用不充分

    1. 多个进程同时运行在一台物理机上,可能会出现资源冲突而相互影响造成安全隐患

两类虚拟机

  • 第一类VMM,直接运行在硬件之上
    • CPU按时间片划分,然后分配给各个虚拟机。磁盘,内存空间划分出来分配。
    • 直接管理、分配硬件资源
    • 只有虚拟机管理程序运行在内核态,可以使用特权指令。【如果上层操作系统使用特权指令,会被虚拟机管理程序捕获,然后进行转换,模拟出特权指令执行成功的现象】
  • 第二类VMM,运行在宿主操作系统
    • 参考上图
    • 虚拟机管理程序将获得的虚拟资源再次划分,然后分配给各个虚拟机,比第一类虚拟机多了一层套接,因此性能更差
  • 两种虚拟机的比较

联想截图_20240717213108.png

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

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

相关文章

域泛化(Domain Generalization)

仓库:https://github.com/jindongwang/transferlearning 综述:https://arxiv.org/pdf/2103.03097、https://arxiv.org/pdf/2103.02503 1.问题及解决方案 出发点:需要解决domain shift、out-of-distribution (OOD)问题 解决方案:绕…

常用优秀内网穿透工具(实测详细版)

文章目录 1、前言2、安装Nginx3、配置Nginx4、启动Nginx服务4.1、配置登录页面 5、内网穿透5.1、cpolar5.1.1、cpolar软件安装5.1.2、cpolar穿透 5.2、Ngrok5.2.1、Ngrok安装5.2.2、随机域名5.2.3、固定域名5.2.4、前后端服务端口 5.3、NatApp5.4、Frp5.4.1、下载Frp5.4.2、暴露…

SpringMVC注解全解析:构建高效Web应用的终极指南 (下)

一. 引言 在上篇文章中,我们介绍了几个重要的SpringMVC注解: SpringBootApplication:Spring Boot项目的启动类注解。RequestMapping:用于映射URL到控制器类或方法,支持多种请求方式。RequestParam:用于绑…

长难句打卡7.15

The trend was naturally most obvious in those areas of science based especially on a mathematical or laboratory training, and can be illustrated in terms of the development of geology in the United Kingdom 这一趋势自然在以数学或实验室训练为基础的科学领域里…

新版本cesium编译1.103之后的版本

cesium1.1之后的版本文件结构域1.1之前的版本有了很大的差别,源码也全部移到了packages目录中。有很多依赖包没有写在根目录的package.json文件中。npm i 后直接编译会保持。 cesium源码git https://github.com/CesiumGS/cesium 1、添加缺少的包,缺少的…

Java 8的变革:函数式编程和Lambda表达式探索

文章目录 一、函数接口二、Lambda表达式简介三、Lambda表达式外部参数四、Lambda范例五、Runnable Lambda表达式 一、函数接口 函数接口是一个具有单个抽象方法的接口,接口设计主要是为了支持 Lambda 表达式和方法引用,使得 Java 能更方便地实现函数式编…

【论文速读】| TCSR-SQL:面向表内容感知的自检索文本到SQL方法

本次分享论文:TCSR-SQL: Towards Table Content-aware Text-to-SQL with Self-retrieval 基本信息 原文作者:Wenbo Xu, Liang Yan, Peiyi Han, Haifeng Zhu, Chuanyi Liu, Shaoming Duan, Cuiyun Gao, Yingwei Liang 作者单位:哈尔滨工业大…

如何使用 Containerfile/Dockerfile 构建 .net 镜像?

Podman 简介 Podman 是 Red Hat 开发的一款容器管理工具,它允许用户在没有守护进程的情况下运行、构建、管理和推送容器。Podman 是一个无守护进程的容器引擎,这意味着它不需要一个持续运行的后台进程来管理容器,这与 Docker 的守护进程模式…

科普文:详解23种设计模式

概叙 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four(GoF)的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式…

Anything in Any Scene:无缝融入任何场景,实现逼真视频对象插入技术

人工智能咨询培训老师叶梓 转载标明出处 现实世界的视频捕获虽然因其真实性而宝贵,但常常受限于长尾分布的问题,即常见场景过度呈现,而关键的罕见场景却鲜有记录。这导致了所谓的"分布外问题",在模拟复杂环境光线、几何…

在Centos上安装MySQL

目录 在Centos上安装MySQL1.确认当前的系统版本2.添加 MySQL Yum 源2.1访问MySQL开发者专区2.2根据当前系统选择对应的发布包2.3补充 3.MySQL的历史发行版本4.安装发布包5.安装MySQL5.1启动MySQL服务器5.2查看服务器状态5.3开机自启动5.4 登入MySQL5.5修改密码 在Centos上安装M…

今日总结,没啥特别学习到的,还是省市县三级,和一些开发的规范和git的冲突解决。(maven clean)

20240718 一、对于省市县三级联动告一段落二、修改开发好的接口三、对于git(每天都有他的问题)的推送和拉取问题 一、对于省市县三级联动告一段落 省市县三级联动,直接前端连接一个组件就可以直接实现,好家伙,白费我时…

【深度学习】inpaint图像中的alpha混合图的边缘处理

比如原图是: 红圈内就是文字水印,经过inpaint后得到图和原图混合,如何处理边界呢,这个代码可以干这事: 越是中心就直接用inpaint图,否则就用原图,这样进行alpha混合。 import numpy as np i…

计算机网络技术期末复习

一. 填空 在采用电信号表达数据的系统中,数据有 数字数据 和 模拟数据 两种。域名系统DNS是一个 分布式数据库 系统。TCP/IP的网络层最重要的协议是 IP互连网协议,它可将多个网络连成一个互连网。 4. 在TCP/IP层次模型的网络层中包括的协议主要有ARP 、…

计算机毕业设计-基于Springboot的养老院管理系统-源码程序文档

项目源码,请关注❥点赞收藏并私信博主,谢谢~ 本系统开发采用技术为JSP、Bootstrap、Ajax、SSM、Java、Tomcat、Maven 此文章为本人亲自指导加编写,禁止任何人抄袭以及各类盈利性传播, 相关的代码部署论文ppt代码讲解答辩指导文件…

【C++】类的默认成员函数--构造,析构,拷贝,重载

文章目录 前言一、类的默认成员函数是什么?二、构造函数1.构造函数概述2.构造函数特点3.构造函数代码示例 三.析构函数1.析构函数概述2.析构函数特点3.析构函数代码示例 四.拷贝构造函数1.拷贝构造函数概述2.拷贝构造函数特点拷贝构造函数代码示例 五. 赋值运算符重…

学习008-01-03 Customize the Application UI and Behavior(自定义应用程序UI和行为)

Customize the Application UI and Behavior(自定义应用程序UI和行为) In XAF, the data model defines the database structure and UI. Changes to your entity classes affect the UI. For example, if you add a new property to an entity class, …

解决PDF文件无法打印的困扰:快速排查与修复指南

在日常工作和学习中,PDF文件因其跨平台兼容性和良好的格式保持特性而广受欢迎。然而,当我们急需打印一份重要的PDF文件时,却遇到了“PDF无法打印”的尴尬情况,这无疑会让人感到焦急。别担心,本文将为你提供一系列快速排…

摄像馆唯美结婚摄影团队网站模版源码 自适应网站源码系统 前后端分离 带完整的安装代码包以及搭建教程

系统概述 摄像馆唯美结婚摄影团队网站模版源码,是一款集美观性、功能性与易用性于一体的网站解决方案。该系统采用最新的前端技术栈,如HTML5、CSS3、JavaScript等,结合响应式设计理念,确保网站能够在不同尺寸的设备上&#xff08…

在 Apifox 中如何高效批量添加接口请求 Body 参数?

在使用 Apifox 进行 API 设计时,你可能会遇到需要添加大量请求参数的情况。想象一下,如果一个接口需要几十甚至上百个参数,若要在接口的「修改文档」里一个个手动添加这些参数,那未免也太麻烦了,耗时且易出错。这时候&…