操作系统(一)基础知识及操作系统启动

news2025/3/13 16:48:51

文章目录

    • 前言
    • 前置基础知识
      • 计算机组成
      • CPU
      • 磁盘
      • 内核
      • 中断、异常、系统调用
      • 局部性原理
    • 启动操作系统
      • 计算机加电是如何正常执行服务的?
      • 开机自检
      • BIOS(Basic Input/Output System)
      • BootLoader
    • 小结

前言

本文主要涉及操作系统的简介、硬件结构、内存管理、进程管理、文件系统、设备管理等内容,可以作为学习操作系统的辅助文本记录。撰写本文的目的主要是针对操作系统整体做一个相对完整的梳理,以便后续回顾之用。
本文是第一篇,讲述操作系统的基础知识和操作系统启动。

Q: 操作系统是什么?

A: 操作系统是计算机系统中最基本的部分之一,它管理和控制计算机硬件资源,并为应用软件提供服务。常见的操作系统包括Windows、macOS、Linux等。操作系统的主要功能包括管理计算机的内存和处理器、文件管理、设备管理、用户界面、网络通信等。不同的操作系统在用户界面、文件系统、软件兼容性等方面表现出各自特点,满足不同用户群体的需求。

前置基础知识

计算机组成

计算机组成是指计算机硬件系统中各个部件的结构、功能和相互之间的关系。一般来说,计算机组成包括以下几个方面:

  1. 中央处理器(CPU):负责执行程序指令和控制计算机的操作。CPU由运算器、控制器和寄存器等部件组成。
  2. 存储器:用于存储程序指令和数据。根据读写速度和容量大小,可以分为内存和外存(如硬盘、固态硬盘等)。
  3. 输入设备:用于将外部数据输入到计算机中,如键盘、鼠标、扫描仪等。
  4. 输出设备:用于将计算机处理后的结果输出到外部,如显示器、打印机、音箱等。
  5. 总线:用于传输数据和信号,是计算机中各部件之间的通信桥梁。
  6. 控制器:负责从存储器中读取指令,并将指令传输给CPU中的运算器进行相应的计算操作。
  7. 运算器:执行计算操作,包括算术、逻辑运算和移位等。
  8. 寄存器:用于暂时存储CPU中的数据和指令,如程序计数器、指令寄存器、通用寄存器等。
  9. 缓存:用于提高CPU访问存储器的速度,减少存取延迟和提高系统效率

冯诺依曼模型:运算器、控制器、存储器、输入设备、输出设备

CPU

64位CPU和32位CPU的位数指的是CPU的位宽

64位的CPU的地址总线一般是48位,而32位CPU的地址总线一般是32位;之所以64位的地址总线目前是48位的原因是,用不到这么多地址总线暂时,多了也会增加开销。

硬件的 64 位和 32 位指的是 CPU 的位宽,软件(包含操作系统,操作系统也算是软件)的 64 位和 32 位指的是指令的位宽。

CPU位宽是指一次可以计算数据的bit数。 有CPU在计算时,数据需要先保存在寄存器中,因此CPU位宽一般就是指寄存器的位数。 如32CPU一次可以计算32bit的数据,64位CPU一次可以计算64bit的数据。

  • 32位操作系统的内存寻址上限是4GB(即2^32个地址),这也意味着最大可寻址的内存空间为4GB。然而,实际可用的内存会小于4GB,因为其中一部分地址空间会被保留用于硬件映射,比如显卡内存、系统 BIOS 等。

  • 在实际应用中,32位操作系统能够有效管理的内存通常在3GB到3.5GB之间,具体取决于硬件和操作系统的配置。为了充分利用更多内存,现代计算机系统通常会采用 64 位操作系统。 64 位操作系统可以支持非常大的内存空间,通常上限是几TB甚至更高。

  • 1 k B = 2 10 B i t 1kB = 2^{10}Bit 1kB=210Bit, 4 G B = 2 32 B i t 4GB = 2^{32}Bit 4GB=232Bit

磁盘

CPU Cache用的是SRAM(Static Random-Acess Memory, 静态随机存储器)的芯片,一旦断电数据丢失。

内存使用的是DRAM(Dynamic Random-Acess Memory,动态随机存取存储器)的芯片。之所以叫做动态是因为是使用电容存储数据,电容会随时间不断漏电,因此要定时刷新电容,从而称之为动态存储。

寄存器、CPU Cache、内存在断电后数据都会丢失。而SSD/HDD则不会。

SSD(Soild-state Disk)固态硬盘,结构和内存类似,但是内存读写速度大概是SSD的10~1000倍;

HDD(Hard Disk Drive)机械硬盘,物理读写,比内存慢10w倍左右;

内核

**内核(Kernel)**是操作系统最核心的部分,它是操作系统的核心模块,负责管理计算机系统的硬件和软件资源,并提供给其他应用程序访问硬件的接口。内核可以看作是操作系统与硬件之间的桥梁,它处理中断、调度任务、内存管理、设备驱动等底层操作,为上层应用程序提供稳定、高效的运行环境。

内核产生的原因主要有以下几点:

  1. 硬件资源管理:计算机系统的硬件资源(例如处理器、内存、磁盘、网络等)需要统一管理和分配。内核负责协调和管理这些资源,确保每个应用程序能够合理、安全地使用硬件资源。
  2. 提供抽象接口:不同的硬件设备有不同的工作方式和指令集,为了让应用程序开发者更加方便地编写程序,内核提供了抽象接口,屏蔽了底层硬件的细节,使得应用程序不需要关注具体的硬件实现细节,只需要调用内核提供的接口就可以完成相应的操作。
  3. 多任务处理:现代操作系统支持多任务处理,即在同一时间片内可以并行运行多个程序。内核负责任务的调度和切换,确保每个任务都能在适当的时间获得执行,从而实现了多任务的效果。
  4. 安全和稳定性:内核具备对系统资源进行保护和隔离的能力,可以防止不同应用程序之间的相互干扰,同时也能够保护系统免受恶意软件的攻击。内核还负责处理和恢复一些系统错误和异常,提高系统的稳定性和可靠性。

内核更像是一个中间人来对接应用和硬件设备,是应用连接硬件设备的桥梁。

Q: 内核是怎么工作的?

A: 内核具有很高的权限,可以控制 cpu、内存、硬盘等硬件,而应用程序具有的权限很小,因此大多数操作系统,把内存分成了两个区域:

  • 内核空间,这个内存空间只有内核程序可以访问;
  • 用户空间,这个内存空间专门给应用程序使用;

用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有内存空间。因此,当程序使用用户空间时,我们常说该程序在用户态执行,而当程序使内核空间时,程序则在内核态执行。

应用程序如果需要进入内核空间,就需要通过系统调用

中断、异常、系统调用

  1. 中断可以分为多种类型,包括外部中断(来自外设)、**内部中断(由处理器内部发出)**以及软件中断。外部中断是指来自计算机外部设备的信号,如键盘、鼠标、硬盘控制器等设备发出的请求,需要处理器立即暂停当前的工作,转而处理来自外部设备的任务。内部中断是指处理器内部的事件引起的中断,例如除法错误、地址错误等。而软件中断是由执行指令产生的中断,通常用于系统调用或异常处理。

  2. 异常也来源于应用程序,但来源于不良的应用程序,是由于非法指令或者其他坏的处理状态(如:内存出错等);

  3. 系统调用来源于应用程序,是应用程序主动向操作系统发出服务请求,系统调用是操作系统与应用程序的接口

  • 响应:

    • 中断:操作系统会持续运行,对用户程序是透明的,我们感受不到,就像在打字的时候不断发生着中断;
    • 异常:操作系统会杀死进程或重新执行
    • 系统调用:操作系统会等待或持续进行各种操作。
  • 处理时间

    • 中断:异步
    • 异常:同步
    • 系统调用:异步或同步

    **什么意思啊?**我看别人的解释是“处理时间是否同步,要看应用程序是否需要等待即时反馈,如果需要就是同步,不需要就是异步”

Q:系统调用与函数调用的区别?

A: 系统调用涉及到切换用户态和内核态,因为操作系统内核运行在特权模式下,而应用程序通常运行在用户态。

为了内核和用户态的区别,系统调用会有堆栈的切换和特权级的转换;

函数调用时没有堆栈切换;

因此,系统调用比一般常规函数调用的执行开销大。

局部性原理

局部性原理: 程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址分别局限在一定区域。

  1. 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短时期内;

  2. 空间局部性:当前指令和邻近的几条指令,当前访问的数据和临近的几个数据都集中在一个较小区域内;

  3. 分支局部性:一条跳转指令的两次执行,很有可能跳转到相同的内存位置;

启动操作系统

计算机加电是如何正常执行服务的?

  1. 加电自检(Power-On Self-Test, POST):当你打开电脑电源后,计算机会进行自检程序。这个过程检查计算机硬件设备是否正常运作,包括内存、CPU、硬盘、显卡等。
  2. 启动BIOS:自检完成后,计算机将启动基本输入输出系统(Basic Input Output System, BIOS)。BIOS是存储在计算机主板上的固件,它负责初始化和配置硬件设备,并提供基本的操作系统启动功能。
  3. POST显示和系统配置界面:BIOS会将特定信息显示在屏幕上,比如计算机型号、硬件信息等。同时,你还可以通过按下指定键(通常是Del、F2或F10)进入BIOS设置界面,对计算机进行配置,如设置启动顺序、调整时钟频率等。
  4. 启动引导加载程序(Boot Loader):在BIOS完成系统硬件初始化和配置后,它会从硬盘中读取引导加载程序。引导加载程序是一个小型程序,负责加载磁盘中的操作系统的核心文件到内存中。
  5. 操作系统启动:引导加载程序会读取操作系统的核心文件,如Windows的NTLDR或GRUB(GNU GRand Unified Bootloader)等。这些核心文件负责初始化操作系统的各个模块,并将控制权交给操作系统。
  6. 操作系统初始化:操作系统开始启动并加载系统服务、设备驱动程序等。在这个阶段,计算机会完成一系列初始化和配置工作,为用户提供操作系统的功能和界面。
  7. 用户登录:一旦操作系统初始化完成,系统会显示用户登录界面。用户可以输入用户名和密码来登录操作系统,并开始使用计算机的各种功能。

开机自检

开机自检(Power-On Self-Test,POST)是计算机启动过程中的一个重要步骤,用于检测和初始化计算机的硬件设备。下面是大致的开机自检流程:

  1. 电源供电:当计算机通电时,电源会向主板和其他硬件设备提供电力。
  2. 初始化CPU:主板会对CPU进行初始化,包括设置工作频率、缓存等参数,并验证CPU的正常运行状态。
  3. 检查系统内存:主板会检查安装的内存模块,确保它们的类型、容量和速度等参数正确,并执行一些内存控制器的测试。
  4. 初始化基本硬件:主板将逐个检测和初始化连接到主板上的各种硬件设备,例如硬盘、光驱、显卡、网卡等。它会验证设备是否存在、设置设备的初始状态,并确保与设备的通信正常。
  5. 显示引导信息和错误:在开机自检期间,如果发现任何硬件问题或错误,主板会尝试通过报警声音、在显示屏上显示错误信息或使用指示灯等方式来提示用户。
  6. 执行BIOS和POST扩展:BIOS(Basic Input/Output System)会被加载到内存中执行,并执行更高级别的自检操作,例如检测和初始化其他外部设备。

BIOS(Basic Input/Output System)

BIOS(Basic Input/Output System)是一种固件,通常存放在计算机的主板上的闪存芯片中,并且在计算机启动时被加载到内存中执行。

具体来说,计算机启动时会首先运行BIOS程序。BIOS会完成硬件自检和初始化,然后查找可引导设备(如硬盘、光驱、USB存储等)的引导记录(boot record),并将控制权传递给引导记录中的引导加载程序。引导加载程序进一步的操作系统加载过程,并最终将控制权交给操作系统。

在计算机启动过程中,BIOS程序是在计算机内存中运行的,而不是从磁盘中运行的。一旦BIOS程序完成了它的初始化工作和引导控制权的交接,它就会从内存中退出。

需要注意的是,由于BIOS程序是固化在ROM中的,因此在正常情况下是不会改变的。但是,可以通过刷新(Flash)BIOS来更新或更改BIOS程序。在这种情况下,BIOS程序会从磁盘中读取一个镜像文件到内存中,并用此文件覆盖原始的BIOS程序。

BootLoader

Q: 引导加载程序BootLoader一般存放在哪里?

A: 引导加载程序(Boot Loader)的存放位置取决于操作系统和计算机的配置。以下是常见的几种存放位置:

  1. 主启动记录(Master Boot Record, MBR):在大多数传统的BIOS系统中,MBR位于硬盘的第一个物理扇区(磁道0、扇区1)。MBR中包含引导加载程序的代码,以及分区表和硬盘签名等信息。
  2. UEFI系统分区(Unified Extensible Firmware Interface System Partition, ESP):在使用UEFI固件的计算机上,引导加载程序通常存储在ESP分区中。ESP分区是一个FAT文件系统分区,包含了引导加载程序、操作系统文件以及其他相关配置文件。
  3. 分区引导扇区(Partition Boot Sector):在某些情况下,引导加载程序可能会存储在每个分区的引导扇区中。这种情况下,每个分区都有自己的引导加载程序。

引导加载程序(Boot Loader)在正常情况下是存放在计算机的硬盘中。

具体来说,在传统的BIOS系统中,引导加载程序通常存储在硬盘的主启动记录(Master Boot Record, MBR)中,也就是硬盘的第一个物理扇区。该扇区的容量很小,通常为512字节,足够存放引导加载程序的代码和必要的信息。

当计算机上电启动时,BIOS会读取硬盘的MBR,并将控制权交给MBR中的引导加载程序。引导加载程序进程进一步的操作系统加载过程,负责加载操作系统核心文件并将控制权交给操作系统。

然而,在某些情况下,为了实现更灵活的引导方式,可以使用其他方式将引导加载程序存放在其他位置,例如UEFI系统分区(ESP)或者各个分区的引导扇区。这种情况下,引导加载程序可能不仅仅存放在硬盘中,还可能存储在固件芯片中或其他可写入存储设备中。

需要注意的是,引导加载程序在启动时会被加载到计算机的内存中执行,而不是直接从硬盘中运行。一旦引导加载程序将控制权交给操作系统,操作系统将会继续从硬盘或其他存储设备中加载更多的文件和程序到内存中。

小结

本节主要操作系统的基础知识以及启动操作系统的一些问题。文中部分图片来自“小林coding”。

如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。

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

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

相关文章

从Hadoop到对象存储,抛弃Hadoop,数据湖才能重获新生?

Hadoop与数据湖的关系 1、Hadoop时代的落幕2、Databricks和Snowflake做对了什么3、Hadoop与对象存储(OSD)4、Databricks与Snowflake为什么选择对象存储5、对象存储面临的挑战 1、Hadoop时代的落幕 十几年前,Hadoop是解决大规模数据分析的“白…

C++17中std::optional的使用

模版类std::optional管理一个可选的(optional)存储值(contained value)&#xff0c;即可能存在也可能不存在的值。std::optional的一个常见用例是存储可能失败的函数的返回值。与其它方法相反(例如std::pair<T, bool>),std::optional可以很好地处理构造成本高昂的对象&am…

ETW HOOK原理探析

ETW HOOK研究 文章目录 ETW HOOK研究前言原理探究内核开启ETW日志HOOK ETW修改ETW日志上下文代理GetCpuClock函数寻找SSDT和SSDT Shadow 总结参考 前言 关于ETW是什么我就不多说了&#xff0c;可以通过微软的相关文档了解到。据网上得知这项技术最早被披露于2345的驱动中&…

Netty--ByteBuffer

2. ByteBuffer 有一普通文本文件 data.txt&#xff0c;内容为 1234567890abcd 使用 FileChannel 来读取文件内容 Slf4j public class ChannelDemo1 {public static void main(String[] args) {// FileChannel// 1. 输入输出流&#xff0c; 2. RandomAccessFile// try (F…

反转链表 --- 递归回溯算法练习三

目录 1. 分析题意 2. 分析算法原理 2.1. 递归思路&#xff1a; 1. 挖掘子问题&#xff1a; 3. 编写代码 3.1. step 1&#xff1a; 3.2. step 2&#xff1a; 3.3. step 3&#xff1a; 3.4. 递归代码&#xff1a; 1. 分析题意 力扣原题链接如下&#xff1a; 206. 反转链…

组件的设计原则

目录 插槽的基本概念 基础用法 具名插槽 使用场景 布局控制 嵌套组件 组件的灵活性 高级用法 作用域插槽 总结 前言 Vue 的 slot 是一项强大的特性&#xff0c;用于组件化开发中。它允许父组件向子组件传递内容&#xff0c;使得组件更加灵活和可复用。通过 slot&…

抢量双11!抖音商城「官方立减」 缘何成为“爆单神器”?

10月20日抖音商城双11好物节正式开跑&#xff0c;仅仅三天&#xff0c;抖音商城整体GMV对比去年同期提升了200%&#xff0c;而在开跑一周后&#xff0c;一些品牌的销售额已经超过了今年整个618&#xff0c;可谓增势迅猛。其中&#xff0c;平台官方特别推出的「官方立减」玩法&a…

抢占全球30%碳化硅市场份额!英飞凌押注低碳化和数字化“新时代”

“未来十年将是低碳化和数字化‘双轮驱动’发展的时代。” 英飞凌科技全球高级副总裁及大中华区总裁、英飞凌科技大中华区电源与传感系统事业部负责人潘大伟在英飞凌2023年大中华区生态创新峰会上表示。 当前&#xff0c;“数字化低碳化”新趋势正在席卷和重塑着未来世界的千行…

vue.cli 中怎样使用自定义的组件

目录 创建自定义组件 注册并使用自定义组件 全局注册自定义组件 使用 Props 传递数据 总结 前言 在Vue CLI中使用自定义组件是构建交互式和模块化Web应用的重要一环。Vue CLI为开发者提供了使用自定义组件的灵活性和简便性。通过Vue CLI&#xff0c;你可以创建、注册和使…

UI自动化测试最佳设计模式POM

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;加入1000人软件测试技术学习交流群&#x1f4e2;资源分享&#xff1a;进了字节跳动之后&#xff0c;才…

LabVIEW中NIGPIB设备与驱动程序不相关的MAX报错

LabVIEW中NIGPIB设备与驱动程序不相关的MAX报错 当插入GPIB-USB设备时&#xff0c;看到了NI MAX中列出该设备&#xff0c;但却显示了黄色警告指示&#xff0c;并且指出Windows没有与您的设备相关的驱动程序。 解决方案 需要安装能兼容的NI-488.2驱动程序。 通过交叉参考以下有…

WebSphere Liberty 8.5.5.9 (一)

WebSphere Liberty 8.5.5.9 (一) 安装 1. 从官网下载 WebSphere Liberty 8.5.5.9 2. 解压 解压到 D:\wlp-webProfile7-java8-8.5.5.93. 启动 D:\wlp-webProfile7-java8-8.5.5.9\wlp\bin>server start 正在启动服务器 defaultServer。 服务器 defaultServer 已启动。4. …

UWB人员定位系统的原理与应用

uwb定位技术源码 uwb高精度定位系统源码 uwb人员定位系统基于什么原理&#xff1f; UWB人员定位系统基于超宽带(Ultra WideBand)技术进行位置定位。它利用超短脉冲信号&#xff0c;通过测量信号的到达时间差和信号强度等信息&#xff0c;实现对目标位置的定位。UWB技术具有高…

Docker安装详细步骤及相关环境安装配置

目录 一、从空白系统中克隆Centos7系统 二、使用xshell连接docker_tigerhhzz虚拟机 ​编辑 三、在CentOS7基础上安装Docker容器 最近自己在虚拟机上搭建一个docker,将项目运行在虚拟机中。 需要提前准备的工具&#xff0c;XShell(远程链接工具)&#xff0c;VM&#xff08;…

Qt——连接mysql增删查改(仓库管理极简版)

目录 UI布局设计 .pro文件 mainwindow.h main.cpp UI布局设计 .pro文件 QT core gui QT core gui sql QT sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any …

C语言数据结构-----链表类型详解及链表练习题

0.前言 之前我讲解了循序表以及单链表&#xff0c;接下来我会在介绍几个不同的链表&#xff0c;并举例相关习题使大家能够更加深入的理解。 前期内容如下&#xff1a; 链接: 顺序表(动态顺序表增删查改的代码实现) 链接: 单链表(无头单向不循环)增删查改的代码实现 链接: [双向…

带你详细了解git的【分支和标签】

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《git》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;…

使用xlwings实现对excel表中指定列隔行求和

需要对上表中的营业额隔行求和&#xff0c;即橙色背景颜色的求和&#xff0c;无背景颜色的求和。 看了大佬的视频&#xff0c;有两种方法&#xff1a; 1.加辅助列 2.使用判断行的奇偶函数&#xff0c;然后在用sumproduct函数 在此&#xff0c;我使用xlwings对excel表中数据…

来世再不选Java!

危机感 距离上一次找工作面试已经过去快2年了&#xff0c;那时候正值疫情肆虐&#xff0c;虽然还未感受到“寒潮来临”的苗头&#xff0c;但最终还是成功通过了几轮面试&#xff0c;顺利签约。在目前公司待了2年了&#xff0c;在大环境的影响下&#xff0c;没有加薪、没有年终…

经典OJ题:奇偶链表

目录 题目&#xff1a; 示例&#xff1a; 解题思路&#xff1a; 方法一&#xff1a;双链表链接法 图例&#xff1a; 代码演示&#xff1a; 解题效果&#xff1a; 方法二&#xff1a;奇偶指针 图例&#xff1a; 代码演示&#xff1a; 题目&#xff1a; 给定单链表…