操作系统-01

发布于 2025-10-05  99 次阅读


内存

内存存放的是你正在做的事情(运行的程序、正在处理的数据、操作系统正在使用的核心组件)

载入内存

  • 为什么:
    1. CPU中的硬件电路只能运行内存中的程序(内存块且容量大)
    2. 操作系统可以存储在不同的硬件上,不同硬件差异大,所以统一运行在内存上。
  • 怎么做:
    1. 程序被内存加载器加载到内存的某个区域。
    2. CPU的 CS:IP 被指向这个程序的起始地址。(CS 代码段寄存器,实模式下存储段基址,保护模式下存放段选择子)
  • 内存地址可以访问 物理内存条、一些外设(显存、硬盘控制器等)、ROM
  • 内存的分段访问机制:实模式下,地址 = 段基址 * 16 + 段内偏移地址

CPU中的寄存器(实模式)

  • 程序员不可见,内部使用(不可见是指程序员不能使用): 全局描述符寄存器、中断描述符寄存器、IP寄存器、局部描述符寄存器、任务寄存器、控制寄存器
  • 程序员可见 段寄存器(代码段寄存器CS、数据段寄存器DS、栈寄存器SS、附加段寄存器…) 通用寄存器(AX、BX、CX、DX、SI、DI、BP、SP)作用详见纸质笔记
  • 寻址方式 (寻的是操作数的地址,源操作数/目的操作数)
  1. 寄存器寻址
  2. 立即数寻址
  3. 内存寻址(直接寻址、基址寻址、变址寻址、基址变址寻址)

ROM

只读存储器,焊接在主板上的一块芯片,存储预先写死的固定程序(BIOS、UEFI)。“与生俱来的本能“

BIOS

基本输入输出系统,是一种 固化在主板ROM(只读存储器)中的系统程序。

计算机启动时运行的第一个软件,
它是 硬件与操作系统之间的桥梁

核心功能
  • 开机自检
  • 初始化硬件
  • 引导操作系统 (BIOS 会根据设定的顺序,逐个尝试从这些设备中寻找 可引导的操作系统。) eg. 光驱 → 硬盘 → U盘 → 网络引导
  1.从设备的第一个扇区(MBR, 主引导记录) 读取引导程序;
  2.将它加载到内存;
  3.把控制权交给这个引导程序
  • 提供硬件的底层接口(BIOS中断服务)
入口地址:0xffff0

硬盘:

机械硬盘HDD:盘片自传,磁头悬浮,磁头臂沿盘片径向移动。

工作原理:

(1)寻道时间:磁头臂移动到目标位置的时间(效率瓶颈)

(2)柱面:按柱面存储数据,可减少寻道时间

(3)扇区:磁头号、磁道号、扇区号,此三者可以唯一确定一个扇区

主板对硬盘的支持:

(1)IDE:硬盘控制器(驱动外设的模块电路,IO接口,与显卡类似),其和硬盘组合在一起,这 样的接口称为IDE(集成设备电路)。硬盘也被习惯性称为IDE硬盘。

(2)串行接口/并行接口:硬盘分为串行和并行接口(Serial/Parallel)有的主板同时兼容这两种接 口。支持多少块硬盘取决于主板的能力。

读取硬盘过程中寄存器设置的大致流程(不唯一,仅作示例)

(1)选择通道,往该通道的sector count寄存器中写入代操作的扇区数

(2)往该通道的LBA寄存器写入扇区编号的低24位(高4位写入device寄存器,device寄存器是杂项)

LBA寄存器:逻辑块地址,将扇区从0开始编号,忽略物理结构。

(3)往该通道的command寄存器写入操作命令

(4)从该通道的status寄存器读取,判断其工作是否完成

(5)如果上述步骤任务是读取硬盘,则进入(6),否则完工

(6)将数据从硬盘读出。

速度快、容量低、价格高,在个人电脑中很少见到SSD硬盘。

工作原理:

固态硬盘依靠主控芯片来将数据的二进制信息写入浮栅晶体管中,以这样的原理实现数据的读取和写入。完全是依靠数字电路实现。

一台服务器往往会配备有多块硬盘,Linux中为了区分不同的硬盘,会使用不同的命名来将硬盘设备标识,Linux系统对物理磁盘设备会使用sd[a-z]的方式来命名。物理硬盘上的详细分区会使用数字的方式来进行标识,比如sda设备上的多个分区会标识为sda[1,2,3....]

硬盘分区有两种主流的格式:MBR 和 GPT

管理分区

查看分区

lsdisk

A life of freedom is all my ambition
最后更新于 2025-10-16