欢迎使用操作系统¶
您已到达芝加哥洛约拉大学计算机科学系的操作系统之家(COMP 310-410)。
备注
这些笔记将在2021年秋季进行更新。
- 关于这本书
- 引言
- 工艺导论
- 进程内存布局
- 进程内存布局
- 多线程内存布局
- 预赛
- 检查流程布局示例
- 正在加载程序
- 正在加载共享库(.so)
- 更多关于GCC图片选项的信息
- 正在加载共享库(.so)
- 与职位无关的代码示例
- main.cc
- Main.nopic.s-非位置独立码(GCC-fno-pic)
- Main.nopic.s-位置独立代码(GCC-fPIC,默认选项)
- 有什么关系呢?
- 共享库-评估
- 静态库-评估
- 库与静态链接程序
- 进程保护
- 使用fork()创建进程
- Fork()示例
- 使用克隆()创建进程
- Windows CreateProcess()和CreateThread()
- 在Windows上模拟fork()
- 进程终止的原因
- WAIT()和WAITPID()示例
- 文件和I/O
- 进程/线程调度
- 内核模式与用户模式
- 中断
- 硬件中断-PC体系结构
- 硬件中断-来源
- 软件中断
- 进程调度器的目标
- 调度策略的类型
- 操作系统支持
- 要调度的进程类型
- 抢占式调度关键字
- 进程状态
- 选择量子
- 上下文切换
- 上下文切换--它的工作原理
- 抢占程度
- 轮询进程调度
- 多个队列的调度
- 实时调度程序
- 真实世界RTS问题示例
- 现实世界中RTS问题的实例解
- 实时调度器实现的类型
- 高级调度程序实施中的其他问题
- Linux中的进程优先级和调度
- Linux实时调度器
- Linux抢占式调度器
- 物美价廉
- Windows环境下的进程调度
- 用户模式调度程序
- 用户模式线程:为什么?
- 用户模式线程:有何不可?
- GNU-PTH-用户模式线程
- PThreads-内核线程
- 相互排斥
- 临界截面
- 确定关键部分
- 执行顺序和原子性
- 执行顺序和原子性
- 一种好的锁定解决方案的特点
- 实现原子性/可序列化
- 悲观锁的类型
- 乐观锁的类型
- 何时考虑乐观锁定
- 禁用中断
- 严格的替代
- 旋转锁
- 旋转锁-实施
- 旋转锁-实施
- 旋转锁-实施
- 旋转锁-实施
- 线程-互斥
- Windows中的Mutexes
- 信号灯--一些历史
- 信号量
- 信号量--实现
- 二进制信号量
- 事件信号量
- 信号量--实现
- 信号量--实现
- 信号量-读取器/写入器锁定
- 信号量-读取器/写入器锁定
- 信号量-线程
- Windows-信号量
- 监视器/条件变量
- 监测器
- 监视器限制的缓冲区
- 监视器限制的缓冲区
- 信号量读取器/写入器锁
- 监视器-读取器/写入器锁定
- 多线程--条件变量
- 窗口-条件变量
- 僵局
- IPC主题
- IPC性能层次结构
- 管道
- 管道
- 管道-Linux
- 管道-上下文切换
- 命名管道/FIFO
- 在Linux中使用常规管道的示例
- 命名管道-常见用法
- 命名管道-原子读/写
- 信号
- 重要信号一览表
- 处理信号-示例
- 发送信号-示例
- 信号中断的系统调用
- 信号-重入函数
- 信号-重入函数
- 信号-以代码发送
- 示例-实现带有警报的Slear()
- 示例-“更好”的睡眠实施
- 演示睡眠问题
- 睡眠的历史以及为什么信号是可怕的。
- 警报的其他用途(...)
- 内存映射文件
- 内存映射文件
- 内存映射文件
- 内存映射文件-虚拟地址
- 绝对存储器寻址
- 相对内存寻址
- Linux/Minix-mmap()的使用
- Mmap-简单示例
- Mmap-简单示例
- 内存映射文件-原子性
- 内存映射文件-限定的缓冲区
- 内存映射文件-限定的缓冲区
- 内存映射文件-限定的缓冲区
- 内存映射文件-限定的缓冲区
- 内存映射文件-限定的缓冲区
- 内存映射文件-限定的缓冲区
- 内存映射文件-快速I/O
- 内存映射文件-快速I/O
- 文件-IPC
- 文件-显示当前状态
- 假脱机文件夹
- 假脱机文件夹-Cron
- 线轴文件夹-杯子
- 锁定文件
- 门
- 服务器代码
- 客户代码
- 域套接字
- 域套接字-示例
- 域套接字-示例
- 域套接字-示例
- 虚拟内存
- 什么是虚拟内存?
- 内存管理单元
- 页面和页表
- 页面和页表
- 页面和页表
- 页表条目中有什么?
- 页表条目
- 页表条目
- 两级页表(感谢维基百科)
- MMU-地址转换算法
- 页面错误
- 页面错误-Unix
- 页面错误-Windows
- 页面替换/交换
- 页面替换/交换
- 页面替换/交换
- 交换算法
- 交换算法-页面分类
- 交换器算法-NRU
- 交换算法-FIFO
- 交换算法-第二次机会FIFO
- 交换器算法-时钟
- 交换器算法-LRU
- 交换器算法-LRU/NFU
- 交换算法-LRU/NFU-老化
- 交换算法-LRU/NFU-老化
- 贝拉迪畸形
- 贝拉迪的反常(感谢维基百科)
- 贝拉迪畸形
- 为页面替换建模
- 为页面替换建模
- LRU建模
- LRU建模
- 建模-距离字符串
- 建模-距离字符串
- 建模-距离字符串
- 寻呼系统的设计考虑因素
- 工作集
- 利用地方性
- 寻呼不同页面类的开销
- 寻呼不同页面类的开销
- 寻呼不同页面类的开销
- 本地寻呼与全局寻呼
- 页面锁定
- COW:写入时复制
- COW:写入时复制
- 后备商店
- 冬眠
- 虚拟机性能-热内存
- 建模-距离字符串
- 摘要:页面错误处理
- 摘要:页面错误处理
- 用户端内存管理
- 为什么选择用户端内存管理?
- 为什么选择用户端内存管理?
- 堆管理
- 《堆》
- 内存管理器
- 内存分配的特点
- 内存分配的特点
- 一个好的内存管理器的特点
- 内存层次结构的更新者
- 程序局部性
- 碎片化
- 减少堆的碎片
- 最佳匹配VS次匹配
- 最合适的
- 管理可用空间
- 错误和显式分配器
- 调试Malloc/Free
- 扩展堆
- 推荐读物
- 手动取消分配的问题
- 手动取消分配的问题
- 避免手动取消分配的问题
- 一个简单的Malloc/Free实现(来自IBM Developer Works的示例)
- 简单的Malloc/Free实现
- 简单的Malloc/Free实现
- 简单的Malloc/Free实现
- 简单的Malloc/Free实现
- 垃圾收集
- 垃圾收集
- 对垃圾收集器的要求
- 垃圾收集器的目标
- 垃圾收集的缺点
- 垃圾收集的缺点
- 可达性
- 引用计数垃圾收集器
- 参考计数垃圾收集器的利弊
- 标记和清除垃圾数据收集
- 标记和紧凑垃圾收集
- 垃圾收集成本
- 增量垃圾收集
- 增量垃圾收集
- 分代垃圾收集
- 分代垃圾收集
- 买家要当心
- 存储和设备
- 实现文件和文件夹
- 实现文件和文件夹
- 链表
- 链表
- 文件分配表(FAT)
- 文件分配表(FAT)
- 索引节点
- MINIX-inode
- MINIX-inode
- 索引节点
- 块缓存
- 块缓存
- 块缓存
- 文件夹和路径遍历
- 路径遍历
- 虚拟文件系统/VFS
- 虚拟文件系统/VFS
- 虚拟文件系统和堆栈
- 虚拟文件系统和用户模式
- 用户模式文件系统
- 用户模式文件系统
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- 直通熔丝文件系统示例
- FUSE
- 洛约拉的仓储研究
- 安装带有VMware的Linux虚拟机
- 安装带有VMware的Windows虚拟机