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

OS_操作系统的运行环境

2024.06.11:操作系统的运行环境学习笔记

第3节 操作系统的运行环境

  • 3.1 操作系统引导
  • 3.2 操作系统内核
    • 3.2.1 内核资源管理
    • 3.2.2 内核基本功能
  • 3.3 CPU的双重工作模式
    • 3.3.1 CPU处于用户态(目态)
    • 3.3.2 CPU处于内核态(管态)
  • 3.4 特权指令&非特权指令
    • 3.4.1 非特权指令
    • 3.4.2 特权指令
  • 3.5 系统调用
    • 3.5.1 用户态到内核态
    • 3.5.2 内核态到用户态
    • 3.5.3 系统调用的过程(CPU变态的过程)
  • 3.6 中断和异常的处理(现代OS是由中断驱动的)
    • 3.6.1 异常处理过程
    • 3.6.2 中断处理过程


3.1 操作系统引导

从开机到操作系统加载到主存中,过程是怎么样的

电脑主板
在这里插入图片描述

  • 计算机启动时,首先进行电源自我检查,确保所有的硬件设备都正常,并且准备就绪
    在这里插入图片描述
  • 准备就绪后,计算机就会从主板的ROM区去激活一个BIOS程序,这个程序会负责初始化硬件,进一步进行硬件自检

大家做题的时候,题目问你主存是由什么样的存储器组成的?见招拆招,看情况

  • RAM (大部分)
  • RAM+ROM:题干把存放BIOS这个程序的这个ROM去给它并到主存里面了
  • 硬件自检没有问题之后,这个BIOS就会从硬盘,也就是磁盘,它的主引导记录MBR中去读取引导程序
    在这里插入图片描述

BIOS程序读取硬盘0号扇区的主引导记录MBR,MBR包括(磁盘引导程序)和(分区表信息

  • 磁盘会被分成好几个区,(分区表信息)就是用来记录这个区的,我们的电脑里面系统分区最常见的这个C盘,C盘里面不仅有我们下载的这些数据,更多的是一些系统的文件,这个东西我们会把它叫做(系统分区

在这里插入图片描述

  • 假设我们要去启动windows的话,我们会根据MBR里面的磁盘引导程序去读取系统盘的第一个扇区(0号扇区),也就是分区表里面告诉我们windows所在的这个系统分区,它的盘是C盘。
  • 我们就会根据这个起始地址找到C盘,然后通过MBR里面的磁盘引导程序去启动这个盘的第一个扇区。
  • 这个盘的第一个扇区,又叫做(分区引导记录PBR),它里面会存储windows这个操作系统它的引导程序,这个引导程序会帮助你找到操作系统的内核,从而你就可以把内核调到内存了

在这里插入图片描述

  • 我们最终的结果就是将一个操作系统它的内核部分调入到了主存中,并且让它常驻主存。这样就可以让以后的用户直接使用这样的操作系统。
  • 注意操作系统并不是一整个全部调入到了内存引导的过程中,我们只是把内核部分调入到了内存。
  • 这个过程中,也请大家去注意区别MBR和PBR,MBR是磁盘的0号扇区,也就是第一个扇区里面的内容,它叫做主引导记录,它里面有磁盘引导程序和分区表信息。根据分区表,你可以找到一个系统分区,这个系统分区里面的第一个扇区就是0号扇区,它会存放分区引导记录,这个里面存放的是这个操作系统的引导程序,其实也就是几段代码,把它调入到主存里面,它就会告诉你这个内核它的位置在哪里

3.2 操作系统内核

定义:操作系统中与硬件紧密相关的模块,负责管理系统的各种资源
在这里插入图片描述
注意:只有内核从引导开始,就一直在内存的某一个空间常驻,这个空间我们把它叫做(内核空间),而主存的其他部分我们把它叫做(用户空间
在这里插入图片描述

3.2.1 内核资源管理

进程管理、存储器管理、设备管理都是由操作系统的内核代码去执行的

  • 进程管理:确保操作系统可以高效、公平、安全地同时运行多个应用程序
  • 存储器管理:确保有效、安全地分配管理计算机系统中的内存资源
  • 设备管理:确保所有外围设备和硬件都能有效且安全地与计算机系统交互

3.2.2 内核基本功能

  • 原语:在单个步骤中完成操作系统的基本构件;原语处于操作系统最底层,运行时不可以被打断;原语运行时长较短,调用频繁
  • 中断处理:系统调用、键盘命令输入、进程调度、设备驱动等很多重要的活动都依赖于中断

操作系统是靠中断去驱动的。每一次去处理中断的时候呢,都是由操作系统的内核先对中断进行一个有限处理,然后转入相关的进程,这些进程会完成后续的一个处理工作

  • 时钟管理:操作系统用来处理和控制时间和时间相关函数的机制

3.3 CPU的双重工作模式

在引导操作系统的时候,这个内核部分会被加载到内存的内核空间,然后常驻到(操作系统内核)。内核空间以外的这些内存空间就是(用户空间)。

在访问用户空间和访问内核空间的时候,CPU其实是处于两种不同的工作模式的,那么由谁来代表当前的工作模式呢,计组里面学过,CPU内部有这样的一个寄存器PSW(状态字寄存器),它里面会有一个模式位,这个模式位会用来记录当前CPU的工作模式是怎么样的


3.3.1 CPU处于用户态(目态)

CPU在用户态可以访问内存的用户空间
在这里插入图片描述


3.3.2 CPU处于内核态(管态)

CPU只有在内核态可以访问内存的内核空间(内核空间其实放的就是操作系统的内核)
在这里插入图片描述


3.4 特权指令&非特权指令

3.4.1 非特权指令

在这里插入图片描述
此时,应用程序里的所有指令都是非特权指令,非特权指令(不能直接访问)系统硬件和软件,非特权指令对内存的访问也只限于(用户空间

所有应用程序里面的所有指令,它都是非特权指令


3.4.2 特权指令

在这里插入图片描述
如果应用程序中出现特权指令,则硬件不会执行该指令,而是发出错误信号,操作系统捕捉到信号后会停止该进程的运行并转入(错误处理程序

特权指令是在CPU内核态下才可以运行的一种指令,它对内存的访问是不受限制的


3.5 系统调用

系统调用(system call)形如一组打包号的库函数,这些函数的功能需要由操作系统内核来实现,系统调用提供了(用户程序)和(操作系统内核)之间的(接口)。应用程序通过系统调用来获得操作系统的服务。
在这里插入图片描述
在这里插入图片描述

3.5.1 用户态到内核态

  • 用户程序发起系统调用
  • 发生中断,必须陷入内核态由OS内核处理中断
  • 发生异常,必须陷入内核态由OS内核处理中断
  • 用户程序试图执行特权指令

3.5.2 内核态到用户态

  • 设置程序状态字寄存器PSW中的CPU模式位,将其置为1

3.5.3 系统调用的过程(CPU变态的过程)

在这里插入图片描述


3.6 中断和异常的处理(现代OS是由中断驱动的)

在这里插入图片描述


3.6.1 异常处理过程

  • 异常触发

当程序执行中发生异常,CPU会自动检测并触发异常

  • 保存上下文

与中断处理相似,CPU会保存当前的执行状态,包括程序计数器和寄存器值

  • 执行异常处理程序

CPU查找异常向量表,根据异常类型跳转到相应异常处理程序处理

  • 处理结果

根据异常的性质,处理程序可能会修正错误并允许程序继续执行,或终止程序返回错误信息

  • 恢复或终止

如果异常可恢复,CPU将恢复之前的程序状态并继续执行;若不可恢复,终止程序并进行错误处理


3.6.2 中断处理过程

  • 触发中断

中断指由外部设备(键盘、鼠标等)发起,通常是设备完成任务或需要注意时触发

  • 中断信号接收

CPU会在当前执行的指令完成后检测中断,暂停当前进程的执行

  • 保存上下文

CPU会保存当前任务的状态,包括程序计数器和其他寄存器值(现场信息),以便中断处理完成后能恢复运行

  • 执行中断服务程序

CPU根据中断向量表找到相应中断处理程序并执行

  • 恢复上下文并返回

中断服务程序完成后,CPU恢复之前保存的程序状态,继续执行被中断的程序

相关文章:

OS_操作系统的运行环境

2024.06.11:操作系统的运行环境学习笔记 第3节 操作系统的运行环境 3.1 操作系统引导3.2 操作系统内核3.2.1 内核资源管理3.2.2 内核基本功能 3.3 CPU的双重工作模式3.3.1 CPU处于用户态(目态)3.3.2 CPU处于内核态(管态) 3.4 特权…...

Maven下载和安装(详细版)

前言 Maven 的含义 Maven 是一个 java 项目管理 和构建工具,他可以定义项目结构,项目依托,并使用统一的方式进行自动化构建,是 java项目不可或缺的工具。 Maven 的 优点 1 提供 标准化的项目结构(具体规定了文件的…...

【优秀python大屏案例】基于python flask的前程无忧大数据岗位分析可视化大屏设计与实现

随着大数据和人工智能技术的迅猛发展,数据分析和可视化在各个行业中的应用越来越广泛。特别是在招聘领域,大数据分析不仅能够帮助企业更好地了解市场需求,还能为求职者提供科学的职业规划建议。本文探讨了基于Python Flask框架的前程无忧大数…...

简单的docker学习 第3章docker镜像

第3章 Docker 镜像 3.1镜像基础 3.1.1 镜像简介 ​ 镜像是一种轻量级、可执行的独立软件包,也可以说是一个精简的操作系统。镜像中包含应用软件及应用软件的运行环境。具体来说镜像包含运行某个软件所需的所有内容,包括代码、库、环境变量和配置文件等…...

jquery.ajax + antd.Upload.customRequest文件上传进度

前情提要:大文件分片上传,需要利用Upload的customRequest属性自定义上传方法。也就是无法通过给Upload的action属性赋值上传地址进行上传,所以Upload组件自带的上传进度条,也没法直接用了,需要在customRequest中加工一…...

一层5x1神经网络绘制训练100轮后权重变化的图像

要完成这个任务,我们可以使用Python中的PyTorch库来建立一个简单的神经网络,网络结构只有一个输入层和一个输出层,输入层有5个节点,输出层有1个节点。训练过程中,我们将记录权重的变化,并在训练100轮后绘制…...

Project #0 - C++ Primer

知识点 1.pragma once C和C中的一个非标准但广泛支持的预处理指令,用于使当前源文件在单次编译中只被包含一次。 #pragma once class F {}; // 不管被导入多少次,只处理他一次2.explicit C中的一个关键字,它用来修饰只有一个参数的类构造函…...

git提交commit信息规范,fix,feat

可以确保团体合作中,从你的提交记录可以识别出你的动作 feat:新功能(featuer)fix: 修补bugdocs: 文档(documentation)style:格式(修改样式,不影响代码运行的…...

服务器 Linux 的文件系统初探

好久没更新文章了,最近心血来潮,重新开始知识的累计,做出知识的沉淀~ 万事万物皆文件 文件系统:操作系统如何管理文件,内部定义了一些规则或者定义所以在 Linux 中所有的东西都是以文件的方式进行操作在 Linux 中&am…...

关于Unity转微信小程序的流程记录

1.准备工作 1.unity微信小程序转换工具,minigame插件,导入后工具栏出现“微信小游戏" 2.微信开发者工具稳定版 3.MP微信公众平台申请微信小游戏,获得游戏appid 4.unity转webgl开发平台,Player Setting->Other Setting…...

AI入门指南:什么是人工智能、机器学习、神经网络、深度学习?

文章目录 一、前言二、人工智能(AI)是什么?起源概念人工智能分类人工智能应用 三、机器学习是什么?概念机器学习常见算法机器学习分类机器学习与人工智能的关系 四、神经网络是什么?概念神经网络组成部分神经网络模型神经网络和机器学习的关系…...

网络安全中的IOC是指的什么?

网络安全中的IOC(Indicators of Compromise)指的是威胁指标,是网络安全领域中的一个重要概念。它指的是可以用来识别计算机系统、网络或应用程序中已经受到攻击或遭受威胁的特定特征。这些特征可以是恶意文件、恶意域名、已知攻击工具等&…...

掌握AJAX技术:从基础到实战

文章目录 **引言****1. 什么是AJAX?****2. AJAX的工作原理**AJAX 示例使用 Fetch API 实现 AJAX **3. 如何在项目中使用AJAX****4. 处理AJAX请求的常见问题****5. AJAX与JSON的结合****6. 使用AJAX框架和库****7. 实战:创建一个动态表单****8. AJAX中的事…...

Unity UGUI 实战学习笔记(6)

仅作学习,不做任何商业用途 不是源码,不是源码! 是我通过"照虎画猫"写的,可能有些小修改 不提供素材,所以应该不算是盗版资源,侵权删 因为注册和登录面板的逻辑与数据存储方面已经相对完善 服务器面板逻辑…...

iOS面试之属性关键字(二):常见面试题

Q:ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些? 对应基本数据类型默认关键字是:atomic,readwrite,assign 对于普通的 Objective-C 对象:atomic,readwrite,strong Q:atomic 修饰的属性是怎么样保存线程安全的&#x…...

java开发设计模式详解

目录 一、概述 1. 创建型模式(5种) 2. 结构型模式(7种) 3. 行为型模式(11种) 二、代码示例说明 1.单例模式(Singleton) 2.工厂方法模式(Factory Method) 3.抽象工厂模式(Abstract Factory) 4.建造者模式(Builder) 5.原型模式 (Prototype) 6.适…...

windows中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换(保姆级教程,值得收藏)

前言 在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为…...

测试面试宝典(四十四)—— APP测试和web测试有什么区别?

一、系统架构和运行环境 APP 测试需要考虑不同的操作系统(如 iOS、Android 等)、设备型号和屏幕尺寸,以及各种网络连接状态(如 2G、3G、4G、WiFi 等)。而 Web 测试主要针对不同的浏览器(如 Chrome、Firefo…...

力扣高频SQL 50题(基础版)第三十七题

文章目录 力扣高频SQL 50题(基础版)第三十七题176.第二高的薪水题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题(基础版)第三十七题 176.第二高的薪水 题目说明 Employee 表: ----------------- …...

web基础之CSS

web基础之CSS 文章目录 web基础之CSS一、CSS简介二、基本用法2、CSS应用方式2.1 行内样式2.2内部样式2.3外部样式 三、选择器1、标签选择器2、类选择器3、ID选择器4、选择器的优先级 四、常见的CSS属性1、字体属性2、文本属性3、背景属性4、表格属性5、盒子模型的属性6、定位 总…...

全球轻型卡车胎市场规划预测:2030年市场规模将接近1153亿元,未来六年CAGR为2.0%

一、引言 随着全球物流行业的持续发展,轻型卡车胎作为物流运输的关键消耗品,其市场重要性日益凸显。本文旨在探索轻型卡车胎行业的发展趋势、潜在商机及其未来展望。 二、市场趋势 全球轻型卡车胎市场的增长主要受全球物流行业增加、消费者对轮胎性能要…...

8.2 数据结构王道复习 2.3.3 2.3.7选择题错题review

王道中这章主讲了线性表的定义、基本操作、顺序表示、链式表示。下方内容主分了文字部分和代码部分,便于记忆和整理。 在901中这章的要求集中在链表的基础操作中,应用题大概会出问答题。 【当前每一小节的应用题待做,先把选择题过完&#xff…...

【DL】神经网络与机器学习基础知识介绍(二)【附程序】

原文:https://mengwoods.github.io/post/dl/009-dl-fundamental-2/ 文章目录 激活函数卷积神经网络超参数其他程序 激活函数 激活函数的目的是在模型中引入非线性,使网络能够学习和表示数据中的复杂模式。列出常见的激活函数。 线性函数: y…...

6万字嵌入式最全八股文面试题大全及参考答案(持续更新)

目录 冒泡排序算法的平均时间复杂度和最坏时间复杂度分别是多少?在什么情况下使用冒泡排序较为合适? 选择排序算法是稳定的排序算法吗?为什么? 插入排序在近乎有序的数组中表现如何?为什么? 快速排序的基本思想是什么?它在最坏情况下的时间复杂度是多少? 归并排序…...

iceberg 用户文档(持续更新)

iceberg 用户文档 表 Schema 变更查看表的元数据信息表参数变更 表 Schema 变更 Iceberg 支持使用 Alter table … alter column 语法对 Schema 进行变更,示例如下 -- spark sql -- 更改字段类型 ALTER TABLE prod.db.sample ALTER COLUMN measurement TYPE doubl…...

基于YOLOv8的船舶检测系统

基于YOLOv8的船舶检测系统 (价格85) 包含 【散货船,集装箱船,渔船,杂货船,矿砂船,客船】 6个类 通过PYQT构建UI界面,包含图片检测,视频检测,摄像头实时检测。 (该…...

使用腾讯云域名解析实现网站重定向

前言 最近,在CSDN平台上我写了一系列博客,希望能与同学分享一些技术心得。然而,每当需要向他人推荐我的博客时,那串复杂且缺乏规律的CSDN博客首页域名总让我感到不便。这让我开始思考,如果能将这一域名替换为一个既个…...

为什么相比直接使用new和std::shared_ptr构造函数,make_shared在内存分配和管理方面更为高效。

使用std::make_shared相比于直接使用new和std::shared_ptr构造函数在内存分配和管理方面更为高效,主要原因如下: 内存分配效率 std::make_shared通过一次内存分配来同时分配控制块(用于引用计数等)和对象的内存。这种方式减少了…...

7-Python数据类型——列表和元组的详解(增删改查、索引、切片、步长、循环)

一、列表 1.1 列表 list 有序且可变的容器,可以存放多个不同类型的元素 列表就是专门用来记录多个同种属性的值 列表:存储同一个类别的数据,方便操作 字符串,不可变:即:创建好之后内部就无法修改【内置…...

大数据-61 Kafka 高级特性 消息消费02-主题与分区 自定义反序列化 拦截器 位移提交 位移管理 重平衡

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

网站建设一个月做十单/网站入口百度

1 ,启动 zookeeper 命令 :( ) 2 ,查看 zookeeper 启动状态命令 :( ) 3 ,停止 zookeeper 命令 :( ) 4 ,动手题 :请编写老师在课上写的 3 个 shell 脚本,一键启动集群&…...

武汉专业网站建设推广/百度电脑版官网

在客户选定ERP软件,签定商务合同后,ERP项目即进入施行阶段,施行的意图也很清晰,即在满意客户需求的前提下尽快上线使用。 无论怎样施行,所面临的仍是两个问题,即软件和数据。 假设软件没有问题,…...

番禺网站建设知乎/日本产品和韩国产品哪个好

网上解决办法都是用淘宝镜像,但我先切换了镜像,安装还是慢,最后发现了一个比较快的方案。 打开cmd 先装一个cnpm,指向淘宝npm仓库 npm install -g cnpm --registryhttps://registry.npm.taobao.org再安装vue cli npm install -g…...

wordpress文章关联/网盘搜索神器

4个类就可体验HADOOP-RPC的简单、实用。 一,writable-rpc 一,协议 所谓协议,实际是一个接口,用来定义该RPC提供的功能 package rpc.writeable;public interface MyProtocol {void mkdir(String path);String getName(String na…...

做推广的网站带宽需要多少钱/关键词优化精灵

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效…...

plc编程培训机构/搜索引擎优化培训

PS: 1.form2是主窗体,form1是子窗体,我当时安装的是XE8,新建第一个窗体就是叫form2。 2.事件处理用到了控件(ApplicationEvents1)。 3.源代码下载地址:“https://download.csdn.net/download/zhujianqiangq…...