操作系统——解决了我的一些困惑

目录

1、电脑开机做了什么事情

2、真正实现并行的计算机

3、计算机中的淘汰算法 & 分配算法 & 调度算法 & 空间管理

4、什么是虚拟内存?为什么需要虚拟内存?最多可分配多少?

5、TLB(快表)、分页存储(慢表)【二级、多级、分段、分页、段页】、虚拟内存

6、高级语言程序——转换为可执行目标程序


1、电脑开机做了什么事情

爆肝一晚上,希望用动画带你理解操作系统的启动_哔哩哔哩_bilibili

首先,我们已经通过BIOS引导,安装了一个操作系统,并且划分了分区,还安装了软件

现在开始开机:   (自检-BIOS-MBR-PBR-初始化)

  1. CPU读取磁盘信息(执行BIOS引导程序——硬件自检)
  2. 通过主引导记录MBR——找到磁盘分区 & 操作系统的分区
  3. 通过分区引导记录PBR——根据根目录找到启动管理程序
  4. 执行操作系统的初始化程序——完成操作系统的初始化

补一下:(408小白,刚刚才开始复习操作系统,还搞不定那些分区什么的,虽然王道有讲,但是忘记了差不多了)

  1. 电源开启后,计算机进行电源自检,确保各硬件设备正常
  2. 主板上的BIOS芯片被访问,执行Basic Input/Output System (BIOS)程序。BIOS负责初始化各硬件设备,并进行一系列自检,包括检查RAM、显示适配器等。
  3. BIOS通过读取硬盘驱动器的引导区Master Boot RecordMBR)来加载引导程序。MBR位于分区表的第一个扇区,其中存储了引导程序的位置和大小信息。主要分为:【磁盘引导程序 分区表】(扫描分区表:分区表记录了D盘的位置,还有系统分区C盘等等,【普通盘】就是记录的数据,【系统盘】就是操作系统的程序)
  4. 通过【MBR的引导程序】找到【系统分区】,读取【分区引导记录 - Partition Boot Record - PBR】,然后根据【根目录】找到【启动管理程序】,加载【操作系统的引导加载程序】(如果是Linux,就加载Linux,如果是Windows,就加载Windows)。完成后把【控制权】转交给【操作系统】。
  5. 【操作系统内核】被加载入内存,并开始执行【初始化程序】。【初始化程序负责配置系统环境、加载设备驱动程序和初始化各种子系统。
  6. 【初始化过程】通常涉及加载一些核心组件、建立内存管理和进程管理结构,以及准备其他必要的系统资源。
  7. 一旦初始化完成,操作系统进入【可用状态】,用户可以进行交互,并且其他应用程序可以在操作系

需要注意的是,不同的操作系统和计算机架构可能会有所不同,但基本过程大致相似。此外,硬盘分区和软件安装的细节通常在操作系统初始化之后完成。

大佬补充:

目前大多BIOS 都是FLASH存储,可烧写擦除,ROM只是针对用户使用而言的,防止固件程序被随意改动,按下开机键后首先执行上电,上电后权限移交给CPU和BIOS,而后bios再调用mbr表,同样S5-S0根据ACPI会同步执行掉电以达到低功耗。值得一提的是在计算机设计中固件不一定只有BIOS code,有部分挂载需要借助UEFI系统进行升级,同样针对用户来说也是ROM。同样BIOS FLASH内部不一定只有BIOS code,这部分是ODM针对需求定制来决定的。针对硬件层来说,第一层是上电,也就是会执行上电复位/使能/软复位的操作,第二层则是BIOS,第三层是mbr,第四层是fs(eg:NTFS,mbr需要根据fs的类型再进行find os boot),第五层是OS kernel(这之前可能也还有个OS boot),而后才是OS以及OS GUI。当然实际上都是由设计决定的。例如fs其实可以不止一层,kernel可以有kernel的fs,mbr可以有mbr的fs,OS由OS的fs,而磁盘也可能有自己的文件系统(即为固件管路或者存储矩阵管理)。过程还挺复杂的,我这边接触的也只是一个角度的(ACPI上的)

注意:【uefi启动】

现在已经是uefi启动了(原理都是差不多的,不过是uefi统一了框架)

【针对UEFI启动+单系统】在开机的10s内,你的电脑都干了什么?_哔哩哔哩_bilibili

2、真正实现并行的计算机

并行处理计算机系统(parallel computer system)是指同时执行多个任务或多条指令或同时对多个数据项进行处理的计算机系统。

早期的计算机是串行逐位处理的,称为串行计算机。

并行处理计算机主要指以下两种类型的计算机:

1、能同时执行多条指令或同时处理多个数据项的单中央处理器计算机;(超流水技术)

2、多核处理机(可以有一个CPU多个核心)

3、计算机中的淘汰算法 & 分配算法 & 调度算法 & 空间管理

淘汰算法:

1、进程调度(进程五状态的切换)

2、页面调度(内存页面的置换)

3、高速缓存(Cache与TLB的内存块置换)

分配算法:

1、内存分配算法——离散分配、连续分配

2、进程资源分配——银行家算法

调度算法:

1、进程调度排队——6个(FIFO)

2、磁盘调度算法——6个

空间管理:

1、文件管理方法——4个(位示图)

4、什么是虚拟内存?为什么需要虚拟内存?最多可分配多少?

0、操作系统——会默认给虚拟内存

微软官方文档——程序都需要虚拟内存的,不管你剩余内存有多少

『面试问答』:什么是虚拟内存?为什么要有虚拟内存? - 哔哩哔哩

1、为什么进程使用的是虚拟内存,而不是真实的物理内存?

虚拟内存使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,

它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

2、如果内存不够,我们可以手动设置虚拟内存的大小

对于系统上运行的进程来说:(虚拟内存的最大容量由计算机的地址结构决定的)

在32位系统上,最多可以拥有4GB(2的32次方)虚拟内存空间,

在64位系统上,则最多可以拥有256T(2的64次方)虚拟内存空间。

由于每个进程都有一个这么大的地址空间,导致所有进程的虚拟内存加起来,自然要比实际物理内存大得多。所以,并不是所有的虚拟内存都会分配物理内存,只有那些实际使用的虚拟内存才会分配物理内存。

当进程对某块虚拟内存进行读写时,CPU 就会去访问这块内存, 这时如果发现这块虚拟内存没有映射到物理内存, CPU 就会产生缺页中断,进程会从用户态切换到内核态,并将缺页中断交给内核的缺页中断函数处理,这时才会真正地为它分配物理内存。

3、总结

虚拟内存技术——扩充内存逻辑空间的技术

简单说——给程序加了一个映射,方便从离散的硬盘块中,快去取出并且替换

主要通过将部分程序的内存映射到磁盘上,然后在需要时再将其读入内存中来扩展可用地址空间。

优点——它提供了更大的地址空间,使程序能够访问比实际物理内存更多的内存。

缺点——由于需要从磁盘读取和写入数据,虚拟内存访问速度相对较慢,从而导致系统性能受到影响。

4、举一个例子

对于虚拟内存——就是老板(操作系统)给员工(程序)画的饼

画饼:操作系统给程序说有100个房间(连续的内存空间)供他使用【这就是他虚拟的内存】

实际:

员工(程序)在真正使用那些房间里面的东西时【虚拟地址】,老板会进一步处理转换为内存上对应的【物理地址】

其实老板(操作系统)只会给分他10个房间【内存空间】,

并且总会及时的把没有在【内存空间】的地址,放到那【内存空间中】——页面置换

这样就让程序没有感知,感觉良好(实际上就是被坑了~)

Swap分区

5、TLB(快表)、分页存储(慢表)【二级、多级、分段、分页、段页】、虚拟内存

CPU到Cache中——有TLB(快表)做地址转换(提高运行速度)

内存块到硬盘——有(慢表)做物理地址到虚拟地址的转换(方便程序运行)

内存块到硬盘——有(虚拟内存)做地址转换(方便程序更好运行)

6、高级语言程序——转换为可执行目标程序

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TechSmith Camtasia2024中文版简单好用的视频处理软件

TechSmith Camtasia 2024中文版是由techsmith公司推出的一款简单好用的视频处理软件,它集视频录制与视频后期处理为一体,用户可以使用软件来进行屏幕录制,其中包括了影像、音效、鼠标移动的轨迹、解说声音等任何模式下的电脑屏幕状态&#xf…

【LeetCode:907. 子数组的最小值之和 | 贡献法 乘法原理 单调栈】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

王者荣耀小游戏

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt; package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.…

uni-app:心跳机制基础逻辑(定时器方法解决)

思路 1、在登录的时候,定义一个存储当前时间的全局变量,并且开始心跳请求 2、在全局中定义一个定时器,该定时器每秒都会执行一次,并获取当前的时间 3、将定时器每秒的获取的当前时间和全局变量获取的时间进行比较 4、指定一个…

ShardingSphere-JDBC 入门教程(v4.1.1)

框架介绍 ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 OR…

SSRF漏洞防御:黑白名单的编写

SSRF漏洞防御:黑白名单的编写 以pikachu靶场中SSRF(crul)为例 我们可以看到未做任何防御 我们查看源代码 黑名单的制作 思路: 什么内容不能访问 构造代码 $xyarray("file" > "","http" > "","https" > …

国产1433D/E/F/H手持式信号发生器,可覆盖到50GHz

1433D/E/F/H信号发生器 1433系列信号发生器是中电科思仪科技股份有限公司专为外场测试设计的一款手持式仪器,具有连续波信号输出、频率/幅度/脉冲多种调制、大动态范围幅度调节、步进/列表扫描等功能,采用8.4寸大屏幕液晶及电容触摸屏一体化设计&#xf…

简单订单和支付业务的相关流程

1、订单创建、支付及订单处理流程图 2、创建HTTP客户端工具类 Slf4j public class HttpclientUtil {//类中定义了一个私有静态成员变量instance,并且将其初始化为HttpclientUtil类的一个实例,用于实现单例模式。private static HttpclientUtil instance…

NOIP2007提高组第二轮T3:矩阵取数游戏

题目链接 [NOIP2007 提高组] 矩阵取数游戏 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n m n \times m nm 的矩阵,矩阵中的每个元素 a i , j a_{i,j} ai,j​ 均为非负整数。游戏规则如下: 每次取数时须从每行各取走一…

销售心理学 如何了解客户的购买心理激发客户购买兴趣

销售心理学 如何了解客户的购买心理激发客户购买兴趣 在销售的世界里,掌握客户的购买心理,如同一把神奇的钥匙,能够解锁客户内心的需求和兴趣。如何巧妙地运用销售心理学,激发客户的购买欲望呢?以下是一些建议&#x…

实战|信息泄露

0x01系统初探 通过fofa对大学进行搜索 fofa:host"edu.cn" && status_code"200"在随意的翻阅查看时,发现访问xxx.edu.cn登录页面会优先访问登录后的页面,再跳转至登录页面。盲猜应该是前端校验,可以通过…

DEM分析

一、实验名称: DEM分析 二、实验目的: 通过本实验练习,掌握DEM的建立与应用基本方法。 三、实验内容和要求: 实验内容: 利用ARCGIS软件相关分析工具及实验数据,创建DEM,并计算相应坡度的区…

FlashDuty Changelog 2023-10-30 | 告警路由与 Slack 应用

FlashDuty:一站式告警响应平台,前往此地址免费体验! 告警路由 什么是告警路由? FlashDuty已经与Zabbix、Prometheus等监控系统实现无缝集成,通过一个简单的webhook就可以把告警系统产生的所有告警事件推送到FlashDut…

Simulink 模型简单加密

本文介绍的Simulink模型的简单加密方法,即简单禁止用户查看和修改模块内部结构,不对模型生成的源代码进行控制。如果想采用编译加密(用户采用模型生成的代码也能进行加密控制),参见:Simulink模型编译加密共…

位图(bitset)和布隆过滤器

位图将数字映射到比特位上&#xff0c;用0&#xff0c;1来表示数据存在与否。 适用场景&#xff1a;大量数据(2^32次方约为40亿数据&#xff0c;0.5GB)&#xff0c;判断存在与否。 template<size_t N> class Bitset { public:Bitset(){// 在x86下size_t表示四个字节&am…

EM32DX-C1【分布式io】

1设备类型&#xff1a; 电压&#xff1a;DC24V 输入16点 输出16点雷赛 EM32DX-C1 模块是一款基于 ASIC 技术的高性能、高可靠性的 CANopen 总线数字 量输入输出扩展模块&#xff0c;具有 16 路通用输入接口和 16 路通用输出接口。输入输出接口均采用光 电隔离和…

规则引擎Drools使用,0基础入门规则引擎Drools(四)WorkBench控制台

文章目录 系列文章索引八、WorkBench简介与安装1、WorkBench简介2、安装 九、WorkBench使用方式1、创建空间2、创建项目3、创建数据对象4、创建DRL规则文件5、创建测试场景6、设置KieBase和KieSession7、编译、构建、部署8、在项目中使用部署的规则 系列文章索引 规则引擎Droo…

Spring Security 6.1.x 系列(6)—— 显式设置和修改登录态

一、前言 此篇是对上篇 Spring Security 6.1.x 系列&#xff08;5&#xff09;—— Servlet 认证体系结构介绍 中4.9章节显式调用SecurityContextRepository#saveContext进行详解分析。 二、设置和修改登录态 2.1 登录态存储形式 使用Spring Security框架&#xff0c;认证成…

创建可以离线打包开发的uniapp H5项目

安装node环境 略 安装vue脚手架&#xff0c;在线 npm install -g vue/cli PS&#xff1a;vue-cli已进入维护模式&#xff0c;vue3最新脚手架使用npm init vuelatest安装&#xff0c;安装后使用create-vue替换vue指令&#xff0c;create-vue底层使用vite提升前端开发效率&…

计算机视觉算法——基于Transformer的目标检测(DN DETR / DINO / Sparser DETR / Lite DETR)

计算机视觉算法——基于Transformer的目标检测&#xff08;DN DETR / DINO&#xff09; 计算机视觉算法——基于Transformer的目标检测&#xff08;DN DETR / DINO&#xff09;1. DN DETR1.1 Stablize Hungarian Matching1.2 Denoising1.3 Attention Mask 2. DINO2.1 Contrasti…