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、定位 总…...
HMC5883L磁力计驱动开发与航向解算实战
1. HMC5883L电子罗盘芯片技术解析与嵌入式驱动开发实践HMC5883L是由Honeywell公司推出的三轴磁力计(Magnetometer),专为高精度地磁方向检测而设计。尽管其已逐步被更新型号(如QMC5883L、AK09916等)替代,但在…...
NCP5623 RGB LED驱动库深度解析与低功耗实践
1. RAKwireless NCP5623 RGB LED库技术解析1.1 芯片级硬件架构与驱动原理NCP5623是安森美(ON Semiconductor)推出的专用IC接口RGB LED驱动芯片,采用紧凑型TSOT-23-6封装,集成三路独立PWM通道、内置电流源及IC从机控制器。其核心设…...
Modbus ADU库:嵌入式中RTU/TCP帧结构化建模与CRC处理
1. 项目概述ModbusADU 是一个轻量级、零依赖的嵌入式 Modbus 协议数据单元(ADU)管理库,专为资源受限的 MCU 环境设计。它不实现完整的 Modbus 主站或从站逻辑,而是聚焦于协议帧的结构化建模、字节级精确操控与校验计算——这是所有…...
Qwen3.5-35B-AWQ-4bit多场景实战:社交配图分析、PPT图表解读、截图问答助手
Qwen3.5-35B-AWQ-4bit多场景实战:社交配图分析、PPT图表解读、截图问答助手 你是不是经常遇到这样的场景:看到一张有趣的社交图片,想知道它背后的故事;拿到一份满是图表的PPT,需要快速提炼关键信息;或者&a…...
救命!我的文献综述被导师夸“有深度”,其实我只用了10分钟?!
姐妹们,坦白局时间�� 上周我的开题报告一次性通过, 导师甚至在组会上说:“这篇文献综述逻辑很清晰,能看出你对领域有整体把握。” 我表面淡定点头,心里疯狂OS: “其实我根本没读完…...
二叉树深度的介绍
二叉树深度的定义: 二叉树的深度(高度)是指从根节点到最远叶子节点的最长路径上的节点数。例如,一个只有根节点的二叉树,其深度为1;如果根节点有两个子节点,且每个子节点又分别有两个子节点,那么这个二叉树的深度为3。 计算二叉树深度的方法: 递归方法: 递归是解决二…...
git rebase、备份分支、git diff (Git操作)
git rebase 进行drop时,很容易丢失文件。即使git reflog也很难找到commit id。 因此要做备份。 分支备份: 在当前分支上操作,进行备份: git branch backup-dev-full 备份完成后,在当前开发分支上进行drop操作。 如果想…...
Redis学习笔记(实战篇3)
一、分布式锁-redission 1. 存在的问题 (1) 不可重入: // 方法A加了分布式锁 public void methodA() {lock(); // 线程拿到锁methodB(); // 方法B也加了同一个分布式锁unlock(); }// 方法B也加了同一个分布式锁 public void methodB() {lock(); // 同一个线程再次…...
ZigBee开发环境实战 -- IAR for 8051 10.30.1 安装与避坑指南
1. 为什么选择IAR for 8051开发ZigBee? 说到ZigBee开发环境搭建,很多新手都会纠结工具链的选择。我当年从STM32转向ZigBee开发时,花了整整两周时间对比各种方案,最终发现IAR for 8051 10.30.1这个版本在稳定性和兼容性上表现最好。…...
Realistic Vision V5.1 模型剪枝与量化教程:在低显存GPU上的部署优化
Realistic Vision V5.1 模型剪枝与量化教程:在低显存GPU上的部署优化 你是不是也遇到过这种情况:好不容易找到一个效果惊艳的AI绘画模型,比如Realistic Vision V5.1,结果发现自己的显卡显存不够,根本跑不起来…...
