OS_操作系统的运行环境

news2024/11/23 21:10:21

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恢复之前保存的程序状态,继续执行被中断的程序

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

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

相关文章

【mars3d】创建一个全黑的地球,太空背景色随意

关键参数: 1.backgroundColor 2.baseColor 3.basemaps 在basemaps没有底图的时候,可以直接设置地球的背景色baseColor 与此同时需要注意,不要showSkyBox等天空盒效果,不然容易看不见球在哪里,不好操作 链接&…

一种用于用于图像超分辨率的高效退化模型

一种用于用于图像超分辨率的高效退化模型 摘要引言退化模型设计图像降质模型简化版3.1. 模糊3.2. 下采样3.3. 噪声3.4. 随机排序 实验结果结论参考文献 摘要 为了增加数原始图像的退化丰富度,提高超分辨率网络的泛化能力,本文介绍了一种更加复杂但实用的…

秒懂C++之vector(下)

目录 前言 一.vector容器的模拟实现 1.1 基本配置 1.2 reserve 扩容 1.3 push_back 尾插 1.4 insert 插入 1.5 【】运算符 1.6 拷贝构造 1.7 运算符 1.8 resize 扩容初始化 1.9 erase 删除 1.10 迭代器构造 二.例题练习 17. 电话号码的字母组合 题目解析&#x…

pytorch学习笔记3 tensor索引和切片

dim 0 占先 切片 (前N或者后N个) :2 表示 0到2(不包含2), 1:表示 1到末尾, -1表示最后一个元素,-2表示倒数第二个 0:28:2 表示从0到27隔点采样 :&#xff…

【反序列化漏洞】serial靶机详解

一、安装靶机 首先创建新的虚拟机。 然后选择客户机版本为Ubuntu 64位。 然后选择使用现有磁盘,选择下载的vmdk磁盘文件即可。剩下的都是默认 二、信息收集 发现主机192.168.204.143 访问 扫描端口nmap -A 192.168.204.143 -p-,发现只有ssh:22和http:8…

科普文:微服务之分布式链路追踪SkyWalking单点服务搭建

1. 概述 1.1 概念 SkyWalking 是什么? SkyWalking 极简入门 | Apache SkyWalking FROM Apache SkyWalking 分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。 提供分布式追…

【Bugku】Web系列第二更~

1.你必须让他停下 查看源代码,一直刷新,直到看见flag 2.矛盾 构造一个?num1[字母,随便写到最后都会被PHP转化成0] 这里利用的是PHP对数字和字符串比较的时候的一个特性,他会试图把字符串转化为数字,所以1XXX转化到最后…

学习笔记 - 二极管的参数与选型

二极管 普通二极管: 1N4148(高频开关二极管) 整流二极管: 1N4007 1A 1000V1N5408 3A 1000V 肖特基二极管 (白线边为阴极) SS14 SS34 SS54 常见肖特基二极管参数 快恢复二极管 FR107 FR207 FR307 UF4007 可以用快恢复二…

Golang | Leetcode Golang题解之第315题计算右侧小于当前元素的个数

题目: 题解: var a, c []intfunc countSmaller(nums []int) []int {resultList : []int{}discretization(nums)c make([]int, len(nums) 5)for i : len(nums) - 1; i > 0; i-- {id : getId(nums[i])resultList append(resultList, query(id - 1))…

前端开源插件

Luckysheet:类似Excel,在线电子表格工具 源码地址 https://github.com/dream-num/Luckysheet Luckysheet 已不再维护,推荐使用 Univer 替代 | Luckysheet文档Luckysheet ,一款纯前端类似excel的在线表格,功能强大、…

Java重修笔记 第二十七天 匿名内部类

匿名内部类 1. 定义:无类名(底层自动分配类名“外部类名$1”),既是类也是对象,定义在外部类的局部位置,例如方法体和代码块中,通过new类或接口并在大括号里重写方法来实现。 2. 使用场景&…

自定义监控

代码说明: 导入必要的库 import time import psutil import GPUtil from prometheus_client import start_http_server, Summary, Counter, Gaugepsutil:用于获取系统的CPU、内存、磁盘和网络信息。GPUtil:用于获取GPU信息。prometheus_cli…

git拉完代码总是自动创建一个新的节点

git拉完代码,总是自动生成弹出这个信息 然后还会在git上面留下一个节点,这个节点没啥用,显示着感觉有点碍事。 而且后续的git push 之后,会覆盖掉自己的git commit 的提示,其他人cr代码的时候看到的是 解决方法&#…

【深度学习】【语音TTS】OpenVoice v2,测评,中英文语料,Docker镜像,对比GPT-SoVITS、FishAudio、BertVITS2

https://github.com/myshell-ai/OpenVoice/blob/main/docs/USAGE.md 实际体验OpenVoice v2的TTS效果。 文章目录 环境启动 jupyter代码代码分析主要模块和功能测试一些别的中文和中英文混合总结优点缺点对比GPT-SoVITS、FishAudio、BertVITS2使用我的Docker镜像快速体验OpenVo…

uni-app封装组件实现下方滑动弹出模态框

子组件 <template><div class"bottom-modal" :class"{show: showModal}"><div class"modal-content" :class"{show: showModal}"><!-- 内容区域 --><slot></slot></div></div></…

收银系统源码-分销商城视频介绍

系统介绍 专门为零售行业的连锁店量身打造的收银系统&#xff0c;适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通&#xff0c;线下收银的数据与小程序私域商城中的数据完全同步&#xff0c;如商品…

欧科云链7月安全月报 | 私钥泄露损失约占总损失88%,超2.6亿美元

7 月全网累计造成损失约 2.9 亿美元&#xff0c;因私钥泄露所造成损失占总损失的 88.31%&#xff0c;其中 WazirX 因多签钱包私钥泄露&#xff0c;造成约 2.35 亿美元的损失&#xff0c;为 7 月最大安全事件。 最大安全事件-私钥泄漏 7 月 18 日&#xff0c;WazirX 多签钱包私…

Spring Boot集成Resilience4J实现断路器功能

1.什么是Resilience4J&#xff1f; Netflix Hystrix 断路器是 Spring Cloud 中最早就开始支持的一种服务调用容错解决方案&#xff0c;但是目前的 Hystrix 已经处于维护模式了&#xff0c;虽然这并不影响已经上线的项目&#xff0c;并且在短期内&#xff0c;你甚至也可以继续在…

【AD域】搭建AD域服务器

环境 服务器&#xff1a;Windows Server 2016 Standard&#xff0c;版本1607 准备 1、设置主机名 2、配置静态IP地址 3、以本地管理员权限登录服务器 步骤 1、在服务器添加【Active Directory】域服务功能 2、AD域服务器配置

ERP系统提高生产企业库存周转率的抓手

引言 生产企业库存积压&#xff0c;有市场波动的原因&#xff0c;也有内部管理的原因。常见的内部管理原因有&#xff1a; 物料买多了&#xff0c;长期积压在仓库 缺料&#xff0c;生产不能及时完工&#xff0c;在制品积压 物料买早了&#xff0c;在仓库呆滞时间过长 在ERP…