文章目录
- 1. Introduction to OS
-
- 本章涉及
- 1.1 什么是操作系统?
- 1.2 为什么我们需要操作系统?
-
- 抽象 Abstraction
- 控制程序
- Summary
- 1.3 现代操作系统分类
- 1.4 操作系统结构
- OS结构
- OS是一个程序
- OS的实现
-
- 单片OS `Monolithic OS`
- 微核OS `Microkernel`
- 虚拟机 `Virtual Machines`
- 2. 进程抽象 `Process Abstraction`
-
- 2.1 进程管理
-
- 回忆:C程序和编译代码
- 回忆:程序执行——内存
- 回忆: 通用计算机架构
- 回忆:组件介绍
- 回忆:基本指令执行
- 回忆:你需要知道的
- 2.2 内存层面 Memory Context:函数调用 Function Call
-
- 2.2.1 函数调用 Function Call
-
- Function Call: Challenges
- Function Call:控制流和数据 Control Flow and Data
- 2.2.2 栈内存 `Stack Memory`
- 2.2.3 Illustration: Stack Frame v1.0
-
- 函数调用约定`function call convention`
-
- 1. 准备进行一个函数调用:
- 2. 调用函数g()
- 3. 结束函数调用,回到调用者
- 帧指针 `frame pointer`
- 保存的寄存器 `saved register`
- 2.2.4 Illustration: Stack Frame v2.0
- 注意,这只是个例子。
-
- 函数调用小结
- 2.3 内存层面 Memory Context:动态分配内存 Dynamically Allocated Memory
-
- 堆内存 `Heap memory`
- 2.4 OS context:进程ID和进程状态 ProcessID & Process State
- 2.5 进程表和进程控制块 Process Table & Process Control Block
-
- 进程表
- 2.6 进程和OS之间交互:系统调用 `System Calls`
- 2.7 进程和OS之间交互:Exception and Interrupt
-
- Exception
- Interrupt
- Exception / Interrupt Handler
- Summary
- 3. 进程调度 `Process Scheduling`
-
- 3.1 并发执行 `concurrent execution`
-
- 简化的并发示例
- 3.2 交错执行 Interleaved Execution:context switch
-
- 多任务OS
- 3.3 调度 Scheduling
-
- 进程行为 Process Behavior
- 处理环境 Processing Environment
- 调度算法的评判标准 Criteria for Scheduling Algorithm
- 什么时候执行调度?
- 调度步骤
- 3.4 批处理调度 `Scheduling Fro Batch Processing`
-
- (1)先到先得 First-Come-First-Served
- (2)短任务优先 Shortest-Job-First SJF
- (3)最短剩余时间 Shortest Remaining Time SRT
- 3.5 交互式系统的调度 Scheduling For Interactive System
-
- 交互式环境的评判标准
- 确保周期性调度
-
- Timer & Time Quantum
- 调度算法
- (1)循环赛 Round Robin (RR)
- (2)优先调度 Priority Scheduling
- (3)多级反馈队列 Multi-Level Feedback Queue (MLFQ)
-
- 规则
- 例子1
- 例子2: 例子1的基础上 + 中间有时候会出现短任务
- 例子3
- (4)彩票调度 Lottery Scheduling
-
- 性质
- Summary
- 4. 线程 Threads
-
- 4.1 Motivation for Thread
- 4.2 线程 Thread of Control
-
- 使用fork()创建多线程
- 使用Thread..do多线程
- Process and Thread
-
- 进程context交换 vs 线程交换
- 线程优点
- 线程的问题
- 4.3 线程模型 Thread Models
-
- 用户线程 `User Thread`
- 内核线程 Kernel Thread
- 混合线程模型 Hybrid Thread Model
- 5. 进程间通信 Inter-Process Communication
-
- 5.1 共享内存 `Shared-Memory`
-
- POSIX Shared Memory in *nix
-
- Master Program
- Slave Program
- 5.2 信息传递 Message Passing
-
- 命名机制:直接通信 Naming Scheme: Direct Communication
- 命名机制:间接通信 Naming Scheme: Indirect Communication
- 两种同步行为 Two Synchronization Behaviors
- 优缺点
- 5.3 Unix Pipes
-
- Piping in Shell
- Unix Pipes
-
- Unix Pipes:as an IPC Mechanism
- Unix Pipes: Semantic
- Unix Pipe:System Calls
- 示例代码
- 5.4 Unix Signal
- 6. 进程管理:同步 Process Management: Synchronization
-
- 并发执行的问题
- 竞争条件 Race Condition
- 临界区 Critical Section
- Critical Section的实现
-
- (1)汇编层面实现 Assembly Level Implementation
- (2)高级语言层面实现 High-Level-Language Implementation
- (3)高级抽象 High-Level Abstraction
-
- Wait() and Signal()
- 信号量例子:Critical Section
- 互斥量的非正式证明 Mutex:Correct CS - Informal Proof
- 不正确地使用信号量:死锁
- (4)其他高阶抽象
- 经典的同步问题 Classical Synchronization Problems
-
- (1)Producer-Consumer
-
- 生产者-消费者:忙等方式
- 生产者-消费者:阻塞方式
- (2)读者写者 Readers Writers
- 哲学家进餐问题 Dining Philosophers: Specification
- `Tanenbaum Solution`
- `有限进食者 Limited Eater `
- 同步的实现 Synchronization Implementations
-
- POSIX信号量
- pthread 互斥量和条件变量 Mutex and Conditional Variables
- 其他
- 7. 内存抽象 Memory Management:Memory Abstraction
-
- 7.1 内存基础
-
- 硬件
- 进程的内存使用
- 操作系统的作用
- Key Topics
- 7.2 内存抽象
-
- 实际地址-没有内存抽象
-
- 优点
- 缺点
- 逻辑地址
-
- 改进:地址搬迁 Address Relocation
- 改进:Base + Limit Registers
- 7.3 连续内存分配
-
-
- 多任务、context切换和交换 `Multitasking, Context Switching & Swapping`
- 内存分区 `Memory Partitioning`
- 固定大小分区
- 可变大小分区
-
- 分配算法 `Allocation Algorithm`
- 合并和压缩 `Merging and compaction`
-
- Example
- 动态分配算法:伙伴系统 `Buddy system`
- 伙伴系统:分配算法 Buddy System: Allocation Algorithm
- 伙伴系统:释放算法 Deallocation Algorithm
- 如何找到Buddy
-
- 8. 内存管理:不相交内存 Disjoint Memory Schemes
-
- 分页 Paging:基本思想
- 页表:查找机制
- 逻辑地址转换
-
- 逻辑地址转换:基本技巧
- 逻辑地址转换:公式
-
- 示例:4 个逻辑页,8 个物理帧
- 分页:观察
- 实施分页
- 分页机制:硬件支持
-
- TLB:对内存访问时间的影响
- TLB 和进程切换
- 分页方案:保护
- 分页方案:页面共享 Page Sharing
- 分割机制 segmentation scheme
-
- 细分方案:动机
- 分割方案:基本思想
- 分段:逻辑地址转换
- Segementation 优缺点
- 分页分割
-
- 分页分割:基本思想
- Summary
- 9. 虚拟内存管理 Virtual Memory Management
-
- 虚拟内存:Motivation
-
- 虚拟内存:基本思想
- 扩展分页机制
- 访问页面 X:一般步骤
- 虚拟内存:理由
- 回顾:局部性原则 Locality Principles
- 虚拟内存和局部性原则
- 虚拟内存:总结
- 更多
- 页表结构 Page Table Structures
-
- 页表结构
- 页表结构:直接分页
- 2 级分页:基本思想
- 2 级分页:优势
- 倒页表:基本思想
- 页面替换算法
-
- 内存引用建模
- 页面替换算法:评价
- **页面替换 (`Optimal Page Replacement, OPT`)
- FIFO页面替换算法
-
- 先进先出:问题
- 最近最少使用的页面替换 (Least Recently Used Page Replacement, LRU)
-
- LRU:实施细节
- Second-Chance页面替换 (CLOCK)
- Second-Chance:实施细节
- 帧分配
-
- 帧分配和页面替换
- 本地与全局替换
- 帧分配和抖动 Frame Allocation and Thrashing
- 找到正确的帧数
- 工作集模型 Working Set Model
- Summary

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/121253.html