内存
内存存放的是你正在做的事情(运行的程序、正在处理的数据、操作系统正在使用的核心组件)
载入内存
- 为什么:
- CPU中的硬件电路只能运行内存中的程序(内存块且容量大)
- 操作系统可以存储在不同的硬件上,不同硬件差异大,所以统一运行在内存上。
- 怎么做:
- 程序被内存加载器加载到内存的某个区域。
- CPU的 CS:IP 被指向这个程序的起始地址。(CS 代码段寄存器,实模式下存储段基址,保护模式下存放段选择子)
内存的分段访问机制
- 内存地址可以访问 物理内存条、一些外设(显存、硬盘控制器等)、ROM
- 内存的分段访问机制:实模式下,地址 = 段基址 * 16 + 段内偏移地址
CPU中的寄存器(实模式)
- 程序员不可见,内部使用(不可见是指程序员不能使用): 全局描述符寄存器、中断描述符寄存器、IP寄存器、局部描述符寄存器、任务寄存器、控制寄存器
- 程序员可见 段寄存器(代码段寄存器CS、数据段寄存器DS、栈寄存器SS、附加段寄存器…) 通用寄存器(AX、BX、CX、DX、SI、DI、BP、SP)作用详见纸质笔记
- 寻址方式 (寻的是操作数的地址,源操作数/目的操作数)
- 寄存器寻址
- 立即数寻址
- 内存寻址(直接寻址、基址寻址、变址寻址、基址变址寻址)
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寄存器中写入代操作的扇区数
sector count寄存器:用来指定带读取/写入的扇区数,硬盘每完成一个扇区,此寄存器值减一
(2)往该通道的LBA寄存器写入扇区编号的低24位(高4位写入device寄存器,device寄存器是杂项)
LBA寄存器:逻辑块地址,将扇区从0开始编号,忽略物理结构。
(3)往该通道的command寄存器写入操作命令
command寄存器:和status寄存器是同一个寄存器,用途不同,最后设置,只要把命令写入 command寄存器,硬盘就开始工作了。
(4)从该通道的status寄存器读取,判断其工作是否完成
status寄存器:第一位显示是否出错,第三位显示数据是否准备好了。
(5)如果上述步骤任务是读取硬盘,则进入(6),否则完工
(6)将数据从硬盘读出。
SSD固态硬盘
速度快、容量低、价格高,在个人电脑中很少见到SSD硬盘。
工作原理:
固态硬盘依靠主控芯片来将数据的二进制信息写入浮栅晶体管中,以这样的原理实现数据的读取和写入。完全是依靠数字电路实现。
硬盘设备分区
一台服务器往往会配备有多块硬盘,Linux中为了区分不同的硬盘,会使用不同的命名来将硬盘设备标识,Linux系统对物理磁盘设备会使用sd[a-z]的方式来命名。物理硬盘上的详细分区会使用数字的方式来进行标识,比如sda设备上的多个分区会标识为sda[1,2,3....]
硬盘分区有两种主流的格式:MBR 和 GPT
管理分区
查看分区
lsdisk






Comments NOTHING