xia_hy456的个人项目

其他 - Others / xia_hy456的个人项目

Section 1 操作系统概论

操作系统 - Operating System / Chapter I 操作系统概论 / Section 1 操作系统概论

操作系统的启动

Section 1 操作系统概论
#OS #ASM

计算机基于冯诺依曼存储程序思想工作。操作系统启动时,从ROM-BIOS开始,经过引导扇区、setup模块、head模块,最终进入main函数,完成内存、中断、时钟等初始化。

操作系统(Operating System)是什么

Section 1 操作系统概论
#OS

操作系统是一个软件,它能让用户更加方便地控制计算机。应用程序可以通过操作系统来更加方便地控制计算机完成用户的任务,而不用控制内存到显卡再到外置设备的一系列操作。

1-1 抽象:进程

操作系统 - Operating System / Chapter II 虚拟化 / Section 1 CPU虚拟化 / 1-1 抽象:进程

CPU的管理

1-1 抽象:进程
#OS

CPU通过取指-执行的方式工作,在一个CPU上交替执行多道程序(并发)可以提升CPU利用效率。运行中的程序叫做"进程",用户管理计算机就是使用进程。

多进程图像

1-1 抽象:进程
#OS

操作系统通过多进程图像来管理多个进程

操作系统的接口(Interface)

1-1 抽象:进程
#OS

操作系统通过遵循POSIX标准的系统调用作为接口,连接用户态应用程序与内核态,实现权限检查与功能调用

1-2 机制:受限直接执行

操作系统 - Operating System / Chapter II 虚拟化 / Section 1 CPU虚拟化 / 1-2 机制:受限直接执行

受限直接执行

1-2 机制:受限直接执行
#OS

操作系统通过“受限直接执行”技术,在确保安全性的前提下让程序直接在CPU上高效运行,并利用用户态/内核态切换与系统调用来控制危险操作。

在进程间切换

1-2 机制:受限直接执行
#OS

进程切换涉及操作系统如何通过协作或时钟中断重获CPU控制权,并借助上下文保存与PCB恢复进程状态,从而实现进程间的转换

1-3 策略:进程调度

操作系统 - Operating System / Chapter II 虚拟化 / Section 1 CPU虚拟化 / 1-3 策略:进程调度

基础的进程调度策略

1-3 策略:进程调度
#OS

从简化假设出发,逐步介绍进程调度中面向周转时间的FIFO、SJF、STCF策略和面向响应时间的RR策略,并讨论了I/O与未知运行时间带来的挑战

策略:多级反馈队列

1-3 策略:进程调度
#OS

多级反馈队列(MLFQ)通过动态调整进程优先级(初始最高、长任务降级、交互型保持、定期重置、并按时间配额严格降级),在兼顾短任务和交互响应的同时,避免了饥饿与调度欺诈问题。

策略:比例份额调度

1-3 策略:进程调度
#OS

介绍了两种比例份额调度算法——依靠随机抽奖的彩票调度和通过步长值确定性分配CPU时间的步长调度,并指出了它们各自的机制、特点及在实际应用中分配彩票数量的策略难题。

1-EX 额外:线程

操作系统 - Operating System / Chapter II 虚拟化 / Section 1 CPU虚拟化 / 1-EX 额外:线程

内核级线程

1-EX 额外:线程
#OS

内核级线程由内核管理TCB并负责切换,每个线程拥有一对用户栈与内核栈,切换时两栈同步切换,且中断会触发从用户栈到内核栈的转移,通过压栈保存用户栈及程序现场以便后续恢复。

用户级线程

1-EX 额外:线程
#OS

线程通过仅切换指令而不切换资源(如内存映射表)实现轻量级并发,其切换依赖多栈与TCB记录栈指针,并区分了用户级线程(内核不感知,易因IO阻塞全部)与内核级线程(内核可感知并调度其他线程)在IO阻塞场景下的关键差异。

2-1 虚拟内存

操作系统 - Operating System / Chapter II 虚拟化 / Section 2 内存虚拟化 / 2-1 虚拟内存

抽象:地址空间

2-1 虚拟内存
#OS

为了在提高内存利用率、支持多任务和进程隔离的同时兼顾效率与透明性,操作系统从直接使用物理内存逐步发展为通过地址空间提供虚拟化内存,让每个程序以为自己独占从零开始的连续内存,而实际由操作系统负责将虚拟地址映射到物理内存,并实现保护与资源复用。

机制:地址转换

2-1 虚拟内存
#OS

基于硬件的地址转换(特别是基址加界限机制)和操作系统的介入,实现了虚拟地址到物理地址的动态重定位,但也带来了内部碎片等问题。

2-2 分段与分页

操作系统 - Operating System / Chapter II 虚拟化 / Section 2 内存虚拟化 / 2-2 分段与分页

分页:快速地址转换

2-2 分段与分页
#OS

TLB通过硬件缓存频繁使用的地址映射来加速分页转换,并利用局部性原理、ASID等机制处理未命中及多进程上下文切换问题。

分页:较小的表

2-2 分段与分页
#OS

为了缓解线性页表占用内存过大的问题,可以采用更大的页、分页与分段混合、多级页表、反向页表或将页表交换到磁盘等方法,但这些方法各自会引入内部碎片、外部碎片、实现复杂性或查找开销等新的挑战。

分页的介绍

2-2 分段与分页
#OS

分页通过将进程虚拟内存划分为固定大小的页,并借助存储在内存中的页表将其映射到物理页帧,从而解决分段的内存碎片问题,但会带来额外的内存访问开销。

机制:分段

2-2 分段与分页
#OS

分段通过为地址空间中的每个逻辑段(如代码、堆、栈)分配独立的基址/界限寄存器,实现了稀疏地址空间的高效物理内存使用和段间共享(如只读代码段),但会导致外部碎片问题,需通过内存紧凑或空闲列表管理算法解决。

空闲空间管理

2-2 分段与分页
#OS

空闲空间管理在固定大小单元时通过列表简单管理,在大小不一时需处理外部碎片,并依赖分割、合并、头块追踪、堆增长及多种分配策略(如最优匹配、首次匹配等)来平衡速度与碎片最小化。

2-3 超越物理内存

操作系统 - Operating System / Chapter II 虚拟化 / Section 2 内存虚拟化 / 2-3 超越物理内存

机制:巨大虚拟地址空间的假象

2-3 超越物理内存
#OS

当物理内存不足时,操作系统通过将不常用的页换出到硬盘上的交换空间,并利用页表中的存在位和页错误机制,在软件层面处理缺页中断以按需换入页面,从而为用户提供比实际物理内存更大的内存假象。

策略:应对内存压力

2-3 超越物理内存
#OS

当物理内存不足时,操作系统通过替换策略(如最优、FIFO、随机、LRU或近似LRU)将某些页换出到磁盘以腾出空间,目标是最大化缓存命中率、最小化平均内存访问时间(AMAT),并通常优先换出干净页而非脏页以减少磁盘I/O开销。

1-1 并发与线程

操作系统 - Operating System / Chapter III 并发 / Section 1 线程 / 1-1 并发与线程

并发:介绍

1-1 并发与线程
#OS

多线程程序通过共享地址空间实现多个执行点并发运行,但由于操作系统不可控的线程调度会导致竞态条件,因此需要原子操作和互斥原语来保证临界区的互斥执行,从而避免不确定的结果。

1-1 并发与线程
#OS

锁通过硬件支持的原子操作(如测试并设置或比较并交换)实现互斥,确保同一时刻只有一个线程进入临界区,但自旋锁在多处理器系统中可能因忙等待而降低性能且不保证公平性。

1-2 条件变量与信号量

操作系统 - Operating System / Chapter III 并发 / Section 1 线程 / 1-2 条件变量与信号量

信号量

1-2 条件变量与信号量
#OS

信号量是一个整数值对象,通过初始值设定和sem_wait()/sem_post()操作,可灵活用于实现锁(二值信号量)、条件变量(同步等待)、读者-写者锁及哲学家就餐问题中的并发控制与死锁避免。

条件变量

1-2 条件变量与信号量
#OS

条件变量是一种让线程在条件不满足时进入等待队列,并在条件改变时被唤醒的同步机制,通过 wait()和 signal()操作配合锁使用,最终用两个条件变量(如 empty和 fill)解决了生产者-消费者(有界缓冲区)问题。

1-3 常见并发问题

操作系统 - Operating System / Chapter III 并发 / Section 1 线程 / 1-3 常见并发问题

常见并发问题

1-3 常见并发问题
#OS

并发中的缺陷分为非死锁缺陷(包括违反原子性缺陷和违反顺序缺陷)和死锁缺陷,前者可通过加锁或条件变量解决,后者则需通过预防、避免或检测恢复等手段处理。

1-1 IO设备

操作系统 - Operating System / Chapter IV 持久性 / Section 1 IO设备与磁盘 / 1-1 IO设备

I/O设备

1-1 IO设备
#OS

该系统通过分层总线连接CPU、内存和外设,采用轮询、中断、DMA及内存映射I/O等机制与设备交互,并利用设备驱动程序将硬件接口统一纳入操作系统管理

1-2 磁盘

操作系统 - Operating System / Chapter IV 持久性 / Section 1 IO设备与磁盘 / 1-2 磁盘

廉价冗余磁盘整列(RAID)

1-2 磁盘
#OS

RAID是一种将多个物理磁盘组合成单个更快、更大、更可靠的虚拟磁盘系统的技术,通过条带化、镜像或奇偶校验等不同设计,在容量、可靠性和性能之间进行权衡

磁盘调度

1-2 磁盘
#OS

磁盘调度中的最短任务优先原则可能导致饥饿问题,为此发展出电梯算法(如SCAN、C-SCAN、F-SCAN)以避免饥饿,而最接近SJF的最优策略是综合考虑寻道和旋转时间的最短定位时间优先(SPTF),但后者在操作系统中实现困难

磁盘驱动器

1-2 磁盘
#OS

磁盘可视为由0到n-1号扇区组成的地址空间,其访问性能取决于寻道时间、旋转延迟和传输时间,且仅保证单个扇区的原子写入

2-1 文件系统

操作系统 - Operating System / Chapter IV 持久性 / Section 2 文件 / 2-1 文件系统

文件与目录

2-1 文件系统
#OS

在存储虚拟化中,OS通过文件和目录这两个核心抽象、借助各类系统调用或命令来管理持久存储设备上的数据

文件系统实现

2-1 文件系统
#OS

文件系统通过超级块、位图、inode表和数据区域等磁盘组织结构来管理数据,并使用多级索引、位图等机制高效处理文件的读写与空闲空间分配

未分类

未分类