cs_notes

CS 162: Operating Systems and Systems Programming - Berkeley

https://www.youtube.com/playlist?list=PLF2K2xZjNEf97A_uBCwEl61sdxWVP7VWC

1. CS162 Lecture 1: What is an Operating System?

1.1 操作系统的基本概念

操作系统是计算机系统级别软件,是计算机系统组成的重要部分之一。主要作用有:

  1. 资源管理:管理计算机硬件资源,如 CPU、内存、磁盘等资源的使用。确保系统各部分资源能够协调使用。

  2. 提供环境:为应用程序提供运行环境,屏蔽底层硬件细节,实现软件和硬件的隔离。

  3. 应用程序管理:负责加载和管理应用程序的启动、执行、停止等过程。

  4. 提供接口:为用户和应用程序提供各种系统调用接口,实现用户与系统的交互。

  5. 安全保护:通过权限控制和进程隔离等机制,保证系统的安全稳定运行。

1.2 操作系统功能分类

主要功能可以分为:

  1. 进程管理:负责进程的创建、调度和终止等。

  2. 内存管理:管理计算机的内存资源分配和回收。

  3. 磁盘管理:管理磁盘的读写及空间分配。

  4. 文件管理:提供文件的创建、打开、读取、写入、删除等功能。

  5. 输入输出管理:管理用户与计算机的输入输出接口。

  6. 网络支持:支持计算机通过网络与其他计算机进行通信。

  7. 用户界面:提供图形或命令行界面,便于用户与操作系统交互。

以上功能构成了现代操作系统的基本框架。

2. CS162 Lecture 2: Four Fundamental OS Concepts

2.1 进程

进程是操作系统进行资源分配和调度的基本单元。进程具有以下特征:

  1. 进程是程序的一次执行过程,是CPU调度和执行的基本单位。

  2. 每个进程都有自己独立的内存空间,互不影响。

  3. 与其他进程相对独立,运行于不同时间片,彼此隔离。

  4. 进程有运行、等待和结束的状态变化过程。

2.2 内存管理

操作系统需要管理计算机中的内存资源,主要功能包括:

  1. 物理内存的分配:操作系统在系统启动时确定内存布局,对可用内存进行划分和分配。

  2. 虚拟内存的概念:每个进程内部看到的内存表现为一片连续空间,但实际上物理上可能是非连续的。

  3. 页面置换:当内存不足时,操作系统可以将部分内存页写入磁盘或交换区,腾出内存供其他进程使用。

  4. 缺页异常:进程访问未在内存中的页面时触发缺页异常,需要操作系统找回缺失的页面。

2.3 通信与同步

进程间通信和同步机制保证进程间资源共享和有序访问:

  1. 同步原语:信号量、互斥锁等原语控制对共享资源的访问顺序。

  2. 消息传递:进程间通过消息对列实现无阻塞的同步通信。

  3. 共享内存:多个进程可以同时读写的共享存储区域实现进程间通信。

2.4 通用操作系统结构

层次结构模型:内核空间和用户空间明确划分职责,简化内核,提高可靠性。

3. CS162 Lecture 3: Abstractions 1: Threads and Processes

3.1 线程

线程是操作系统可以调度的最小单元,与进程相比更小。

3.2 进程

进程是资源分配的基本单位。

3.3 线程与进程的关系

以上是线程和进程两个重要的操作系统抽象概念的比较。

4. CS162 Lecture 4: Abstractions 2: Files and I/O

4.1 文件

4.2 文件I/O

以上为操作系统最重要的I/O抽象概念。

5. CS162 Lecture 5: Abstractions 3: IPC, Pipes and Sockets

5.1 进程间通信

进程间通信(IPC)是操作系统实现不同进程间信息交换的重要机制。

5.2 套接字

以上通信机制构成操作系统核心的IPC概念体系。

6. CS162: Lecture 6: Synchronization 1: Concurrency and Mutual Exclusion

6.1 并发与并行

6.2 同步问题

由于共享资源的竞争导致的问题:

6.3 互斥的概念

以上内容介绍了并发与并行的概念,同时阐述了同步问题及互斥机制。

7. CS162: Lecture 6.5: Concurrency and Mutual Exclusion (Supplemental)

7.1 临界区

7.2 可重入锁

7.3 死锁

7.4 生产者-消费者问题

以上内容补充介绍了临界区、可重入锁、死锁和生产者-消费者问题等同步机制细节。

8. CS162 Lecture 7: Synchronization 2: Semaphores (Con’t), Lock Implementation, Atomic Instructions

8.1 信号量

8.2 锁实现

操作系统内核实现锁主要有:

8.3 原子操作

如Test-and-Set、交换指令等原子操作,能保证访问共享资源的一致性:

以上内容介绍了信号量、锁实现以及原子操作指令在同步机制中的应用。

9. CS162 Lecture 8: Synchronization 3: Atomic Instructions (Con’t), Monitors, Readers/Writers

9.1 原子指令

9.2 监视器

9.3 读写锁

以上内容继续介绍了原子指令的细节,以及监视器和读写锁这两种高级同步机制。

10. CS162 Lecture 9: Synchronization 4: Monitors and Readers/Writers (Con’t), Process Structure

10.1 监视器实现

监视器通过以下方式实现:

10.2 读写锁实现

读写锁通常使用下面方法实现:

10.3 进程结构

现代操作系统进程通常包括:

这保证了进程资源隔离且高效管理。

11. CS162 Lecture 10: Scheduling 1: Concepts and Classic Policies

11.1 调度概念

进程调度是操作系统核心功能之一,主要作用是:

11.2 先来先服务

11.3 短作业优先

11.4 动程优先

以上是操作系统经典的进程调度算法概述。

12. CS162 Lecture 11: Scheduling 2: Case Studies, Real Time, and Forward Progress

12.1 实时调度

12.2 Linux 调度

12.3 Windows 调度

12.4 前向进展

以上总结了实时调度、Linux和Windows系统实例以及一个重要概念。

13. CS162 Lecture 12: Scheduling 3: Deadlock

13.1 死锁概念

死锁是多个进程由于竞争资源而陷入互相等待的阻塞状态,导致系统处于停滞不前的情况。

13.2 死锁必要条件

13.3 死锁预防

13.4 死锁检测和恢复

通过建立进程等待图来检测系统是否已经形成环路等待结构。一旦检测到死锁,需要恢复系统运行状态。

14. CS162 Lecture 13: Memory 1: Address Translation and Virtual Memory

14.1 内存管理单元

内存管理单元负责维护进程虚拟地址与物理地址间的映射关系。

14.2 虚拟地址转换物理地址

通过页表和段表完成三级地址转换:

保证每个进程看到的地址均为连续的虚拟地址空间。

14.3 虚拟内存

利用虚拟内存技术,每个进程看到的内存空间大于实际物理内存容量。

页表项标记页FRAME号,缺页异常发生时触发换页。动态分配和回收物理页框实现内存和磁盘间的交换。

以上实现了内存管理的基本概念和地址转换机制,利用虚拟内存隐藏内存限制。

15. CS162 Lecture 14: Memory 2: Virtual Memory (Con’t), Caching and TLBs

15.1 页面置换算法

治理内存和页面交换的算法:

15.2 缓存

15.3 平翼查找(TLB)

以上内容系统介绍了虚拟内存的页面置换算法和内存访问优化策略。

16. CS162 Lecture 15: Memory 3: Caching and TLBs (Con’t), Demand Paging

16.1 缓存置换

常见缓存替换算法:

16.2 块混叠

多个虚拟页面映射到同一物理页面的情况。

采用填写和写单独标志位可以实现正确访问。

16.3 需求分页

仅在访问到页内容时才装入对应的物理页面:

16.4 预读

predicting future references,提前读取可能使用的页面到内存中

总结了高速缓存和TLB的细节,以及页面访问和置换的需求分页机制。

17. CS162 Lecture 16: Memory 4: Demand Paging Policies

17.1 全负分页

在页面访问时负责将其装入内存,产生缺页中断调用系统内核进行管理。

17.2 前 sowie分页

在用户态加载空闲页框到内存池中,当访问产生缺页时直接从内存池中获取而不是产生中断。

17.3 带写和不带写分页

带写分页在访问时判断页修改位,决定是否需要将页面写回到磁盘。

不带写分页不考虑页修改,所以需要定期写回页面。

17.4 先进先出(FIFO)置换

根据页面最近使用顺序置换最老页面到磁盘swap区。

17.5 时钟分页置换

用链表表示页面,指针指向下一个被替换的页面。每次页面被访问则将其从置换链表中移除。

以上总结了经典的需求分页管理策略。

18. CS162 Lecture 17: Demand Paging (Finished), General I/O, Storage Devices

18.1 需求分页总结

需求分页实现虚拟内存,在页面被访问时刻才将其加载到物理内存中。能有效使用尚未访问到的空闲内存空间。

18.2 常规I/O

操作系统管理I/O设备的方式:

18.3 磁盘结构

硬盘存储介质包括:记数器、扇区、柱面和磁头。

顺序读写速度快,但随机读写需要磁头 seeking 浪费时间。

18.4 闪存

与硬盘相比,闪存读写速度更快,启动时间短,消耗电量低。但成本高,容量小。

以上总结了虚拟内存主要机制及常见I/O设备的结构特点与管理方法。

19. CS162 Lecture 18: General I/O (Con’t), Storage Devices, Performance

19.1 I/O系统调用

常用I/O系统调用:

19.2 RAID

RAID(磁盘阵列)技术通过组合多个磁盘来提升性能和可靠性:

19.3 磁盘调度

智能请求排队和服务可以减少寻道时间,提高吞吐量,典型算法包括:

19.4 磁盘性能评估

常见指标:seek time、 rotational latency、transfer rate等。 IOPS更好评价寻道和随机访问性能。

总结了常用I/O系统调用、RAID技术以及磁盘调度算法提高存储性能。

20. CS162 Lecture 19: Filesystems 1: Performance (Con’t), Queueing Theory, Filesystem Design

20.1 队列理论

用来评估设备性能和吞吐量,常用模型:

20.2 文件系统设计目标

20.3 文件组织

常见方式:

20.4 元数据管理

使用i节点表跟踪文件属性和位置,目录树管理文件层级关系。

以上总结了评估磁盘队列性能的方法,文件系统设计原则以及基本文件组织结构。

21. CS162 Lecture 20: Filesystems 2: Filesystem Design (Con’t), Filesystem Case Studies

21.1 常见文件系统设计

21.2 分布式文件系统

21.3 日志结构设计

使用日志记录元数据变更,实现快速恢复和防止文件系统损坏。

21.4 内存文件系统

在内存中构建文件系统,避免磁盘I/O提高小文件访问性能。

以上总结常见本地和分布式文件系统设计技术。日志机制和内存优化也是设计重点。

22. CS162 Lecture 21: Filesystems 3: Case Studies (Con’t), Buffering, Reliability, and Transactions

22.1 内存缓冲

使用页缓冲技术加速小文件访问,减少磁盘I/O操作。

22.2 文件系统一致性

日志恢复结构和事务处理保证文件系统结构和数据的一致性。

22.3 容错机制

RAID技术提供冗余存储保证存储可靠性。定期检查和修复也是重要手段。

22.4 事务处理

结合日志实现原子操作,失败时回滚保证数据一致性。常见过程包括准备、提交等阶段。

22.5 多版本并发控制(MVCC)

支持并发事务通过版本号控制隔离操作,避免锁定导致的性能损失。

总结了文件系统设计中重要的缓冲技术、容错机制以及事务处理保证数据可靠性的方法。

23. CS162 Lecture 22: Transactions (Con’t), End-to-End Arguments, Distributed Decision Making

23.1 事务ACID特性

23.2 数据库隔离级别

23.3 分布式一致性协议

23.4 分布式文件系统数据一致性

元数据管理、复制技术方案保证数据在分布式系统中的强一致性。

以上总结了事务管理的重要特性和隔离级别,常见分布式一致性协议。

24. CS162 Lecture 23: Distributed Decision Making (Con’t), Networking and TCP/IP

24.1 分布式决策

24.2 网络模型

24.3 TCP/IP

24.4 网络地址转换(NAT)

私有IP与公用IP之间实现地址转换,通过NAT设备共享互联网连接。

24.5 路由协议

OSPF和BGP管理组网路由信息交换实现包转发。

总结了分布式系统一致决定方法与网络协议参考架构及关键协议工作原理。

25. CS162 Lecture 24: Networking and TCP/IP (Con’t), RPC, Distributed File Systems

25.1 RPC机制

远程过程调用传输调用接口、参数和返回值实现远程调用。

25.2 NFS

基于RPC实现POSIX兼容的跨主机文件访问协议。支持数据缓存及复制。

25.3 HDFS

海量数据存储系统,主要特点:

25.4 Ceph

为对象、块和文件提供一致性访问服务:

25.5 分布式锁

使用lease机制实现分布式系统锁的获取和释放。

总结常见RPC、分布式文件系统及分布式锁实现原理。

26. CS162 Lecture 25: Distributed Storage, NFS and AFS, Key Value Stores

26.1 分布式存储系统

主要目标是存储数据的高可用和容错。

26.2 NFS

基于RPC实现的POSIX兼容远程文件访问协议。

26.3 AFS

借助kerberos认证和缓存实现安全的分布式文件系统。

26.4 key-value存储

以(key,value)对形式对数据进行存储与访问:

26.5 分布式一致性协议

Paxos算法通过选主选举和动态转变保证一致性。Raft采用日志共享方式稳定性更好。

总结了分布式存储的目标和主流文件系统与基于key-value的NoSQL数据库。

27. CS162 Lecture 26 (Optional): Key Value Stores (Con’t), Chord, DataCapsules, Quantum Computing

27.1 K-V存储系统隔离

支持不同隔离级别的事务,如读已提交。

27.2 Chord分布式哈希表

每个节点负责维护部分key范围,通过层级指针实现对键的路由。

27.3 DataCapsules封装存储

把相关数据打包封装,支持ACID事务和数据库功能的分布式存储系统。

27.4 量子计算原理

运用量子位实现量子并行计算。

为未来存储与计算机提供变革。

以上总结了K-V存储系统事务隔离,P2P系统Chord,封装存储DataCapsules概念,以及量子计算基本原理。