OperatingSystems: Three Easy Pieces
Remzi H. Arpaci-Dusseau和Andrea C. Arpaci-Dusseau
这本书主要从虚拟化、并发、持久化三个方面进行对计算机操作系统的讲解。
1.进程-它被简单地看作是一个正在运行的程序。
进程的几种状态:运行,等待,堵塞。
进程的创建:通过调用进程API系统调用fork()/exec()/wait()来创建进程。
对进程的控制:基本技术:有限制的直接执行。用户模式与内核模式。
进程的切换:(1)等待系统调用;(2)操作系统控制:使用定时器中断重获控制。还有环境的保护与恢复。
Cpu的调度方法:
(1)调度指标:周转时间、公平性、响应性能
(2)常用的调度算法:
SJF(最短工作优先)、
STCF(最短完工时间)、
RR(循环调度算法、通过时间片来控制)、
MFLQ(多级反馈队列):通过优先级来实现调度,优化周转时间,具有一定的响应时间。
比例调度算法:使用随机性与票权来进行调度。
2.地址空间--物理内存抽象。
2.1 基本知识
堆栈-堆栈来跟踪函数调用链中的位置,以及分配局部变量和传递参数,并从例程返回值。
堆-堆用于动态分配的、用户管理的内存。
用户代码区
操作系统指令区。
2.2内存API
栈的自动内存。
堆的分配与回收。
一些内存API:
malloc()--用于堆中请求内存
free()--用于回收内存
calloc()分配内存,并在返回之前将其归零
realloc()也可以是有用的,当您为某个东西(比如一个数组)分配了空间,然后需要向它添加一些东西:realloc()创建一个新的更大的内存区域,将旧区域复制到它,并返回指向新区域的指针。
2.3地址转换
动态重定位技术--基础寄存器、边界寄存器。物理地址=虚拟地址+基数。
静态重定位技术--通过加载器与偏移量来定位。
2.4分割技术--解决内存浪费问题,段只是特定长度的地址空间的一个连续部分。在我们的规范--地址空间,我们有三个逻辑不同的段:代码、堆栈和堆。分割允许操作系统做的是将每个部分放置在物理内存的不同部分,从而避免使用未使用的虚拟地址空间填充物理内存。
2.5自由空间管理--分裂与合并,为了高效地利用地址空间。
管理策略:(1)最佳配合(2)最差适配(3)首次适应(4)下次适配
2.6分页技术--把空间切成固定大小的块。
分页比以前的方法(如分段)有许多优点。首先,它不会导致外部碎片,因为分页(通过设计)将内 存划分为固定大小的单元。其次,它是相当灵活的,允许稀疏地使用虚拟地址空间。
VPN/PTE/PFN
2.7分页:转换后备缓冲器-TLBS(地址转换缓存)--加快地址转换
2.8分页:小表--使用更大的页面,减小内存空间的占用。
多层页面:您使用的地址空间的数量分配页表空间;因此,它通常是紧凑的,并且支持稀疏地址空间。
多级页表:PDE-PTE-PFN(页面索引、页表条目索引)
2.9超出物理内存:机制
交换空间:磁盘上预留一些空间来来回移动页面。
当前位:判断页面在不在物理内存中
页面错误:访问不属于物理内存的页面的行为通常被称为页面错误。
页面替换:访问不属于物理内存的页面时需要替换掉物理内存里的某些列表。-替换算法。
页面替换策略:缓存管理、最优替代策略\FIFO\随机\:LRU等。
3.0VAX/VMS虚拟内存系统。整体了解了内存系统的基本原理。内存管理硬件、真实的地址空间、页面置换:分段FiFO/页面聚类。