diff --git a/CS302-OS-Notes.html b/CS302-OS-Notes.html index 59877c1..14bbced 100644 --- a/CS302-OS-Notes.html +++ b/CS302-OS-Notes.html @@ -510,8 +510,8 @@ CS302-OS-Notes
-

操作系统 Operating System

南方科技大学 计算机科学与工程系 11812804 董正


操作系统 Operating System前言 Preface第三章 进程 Process3.1 基本概念3.1.1 进程的概念3.1.2 进程的状态 Process States3.1.3 进程控制块 Process Control Block3.2 进程生命周期3.2.1 进程标识符 Process Identifier3.2.2 进程创建 Process Creation3.2.3 进程执行 Process Execution3.2.4 进程等待3.2.5 进程时间3.2.6 进程终止 Process Termination3.2.7 进程生命周期 Process Lifecycle第四章 线程 Thread4.1 线程的概念4.2 线程的组成4.3 线程和进程的区别4.4 线程的生命周期 Thread Lifecycle4.5 多线程进程 Multithreaded Process4.6 多线程调度4.7 Multiprocessing, Multithreading and Multiprogramming第五章 进程调度 Process Scheduling5.1 基本概念5.1.1 上下文切换 Context Switch5.1.2 调度队列5.1.3 调度程序 Scheduler5.1.4 Dispatcher5.2 调度准则5.3 调度算法 Scheduling Algorithm5.3.1 先到先服务调度 First-Come-First-Served (FCFS)5.3.2 最短作业优先调度 Shortest-Job-First (SJF)5.3.2.1 非抢占 (Non-Preemptive) SJF5.3.2.2 抢占 SJF5.3.3 轮转调度 Round Robin (RR)5.3.4 优先级调度 Priority Scheduling5.3.4.1 Multiple Queue Priority Scheduling第六章 同步 Synchronization6.1 进程间通信 Inter-Process Communication (IPC)6.2 临界区 Critical Section6.2.1 竞争条件 Race Condition6.2.2 临界区问题 Critical Section Problem6.2.3 临界区问题的要求6.3 临界区问题的解决方案 Solutions for Critical Section Problem6.3.1 硬件同步 (×) Hardware Synchronization6.3.2 基本自旋锁 (×) Basic Spin Lock6.3.3 Peterson's Solution6.3.4 信号量 Semaphore6.4 经典同步问题6.4.1 有界缓冲问题 Bounded-Buffer Problem6.4.2 读者-作者问题 Reader-Writer Problem6.4.3 哲学家就餐问题 Dining-Philosophers Problem第七章 死锁 Deadlock7.1 死锁的概念7.2 死锁的特征7.2.1 死锁的必要条件7.2.2 资源分配图 Resource-Allocation Graph7.3 死锁的处理方法7.4 死锁检测 Deadlock Detection7.4.1 死锁检测算法7.4.2 死锁恢复7.5 死锁预防 Deadlock Prevention7.6 死锁避免 Deadlock Avoidance7.6.1 安全状态7.6.2 资源分配图算法7.6.3 银行家算法 Banker's Algorithm第八章 内存管理策略8.1 背景8.1.1 Aspects of Memory Multiplexing8.1.2 地址绑定 Address Binding8.1.3 逻辑地址空间与物理地址空间8.1.4 动态加载 Dynamic Loading8.1.5 动态链接与共享库8.2 交换 Swap8.3 连续内存分配 Contiguous Memory Allocation8.3.1 Uniprogramming8.3.2 内存保护 Protection8.3.3 多分区方法 Multiple-Partition Method8.3.3 碎片 Fragmentation8.4 分段 Segmentation8.5 分页 Paging8.5.1 页表 Page Table8.5.2 共享页8.5.3 分层分页 Multilevel Paging8.5.4 分段+分页第九章 虚拟内存管理9.1 缓存 Cache9.2 转换表缓冲区 Transition Look-aside Buffer (TLB)9.3 请求调页 Demand Paging9.3.1 基本概念9.3.2 请求调页的性能9.4 页面置换 Page Replacement9.4.1 Cache Miss 的分类9.4.2 FIFO 页面置换9.4.3 最优页面置换 MIN9.4.4 LRU 页面置换9.4.5 近似 LRU 页面置换9.4.5.1 时钟算法 Clock Algorithm9.4.5.2 Second Chance List Algorithm9.5 帧分配 Frame Allocation9.5.1 全局分配与局部分配9.5.2 分配算法第十 & 十一章 文件系统 File System10.1 文件系统概念10.2 文件和目录 Files and Directories10.2.1 目录的组成10.2.2 文件10.3 磁盘管理策略10.4 目录分配10.4.1 连续分配 Contiguous Allocation10.4.2 链接分配 Linked Allocation10.4.3 索引分配 Index Allocation10.5 文件分配表 FAT10.5.1 FAT 的原理10.5.2 FAT 文件系统的大小10.5.3 FAT 文件系统结构10.5.4 FAT 文件遍历10.5.5 FAT Directory Entry10.5.6 FAT 读文件10.5.7 FAT 写文件10.5.8 FAT 删除文件10.5.9 总结10.6 iNode10.6.1 iNode 的原理10.6.2 iNode 的结构10.6.3 iNode 文件大小10.7 可扩展文件系统 Ext10.7.1 Ext 文件系统的大小10.7.2 Ext 文件系统结构10.7.3 Ext 的 iNode 结构10.7.4 Ext 删除文件10.7.5 硬链接 Hard Link10.7.6 符号链接 (软链接) Symbolic (Soft) Link10.8 NTFS10.8.1 NTFS 文件系统结构10.8.2 NTFS 文件存储10.9 内存映射文件 Memory Mapped File10.10 文件系统总结第十二章 大容量存储结构12.1 大容量存储结构概述12.1.1 磁盘 Magnetic Disk (Hard Disk)12.1.2 磁盘性能12.1.2 固态磁盘 Solid State Disk (SSD)12.2 磁盘调度 Disk Scheduling12.2.1 FCFS 调度12.2.2 SSTF 调度12.2.3 SCAN 调度12.2.4 C-SCAN 调度12.2.5 LOOK 与 C-LOOK 调度12.2.6 调度算法的选择第十三章 I/O 系统13.1 I/O 硬件13.2 CPU 访问 I/O 设备13.3 控制器与 I/O 设备的数据传输13.4 I/O 设备与 CPU 通信13.4.1 轮询 Polling13.4.2 I/O 中断 I/O Interrupt13.5 I/O 请求生命周期13.6 I/O 性能END


前言 Preface

笔记结构基于《操作系统概念(第九版)》

Based on Operating System Concepts Ninth Edition


第三章 进程 Process

3.1 基本概念

3.1.1 进程的概念

3.1.2 进程的状态 Process States

状态英文说明
新的new进程正在创建
运行running指令正在执行
等待waiting/blocked进程等待发生某个事件,如 IO 完成或收到信号
就绪ready进程等待分配处理器
终止terminated进程已经完成执行

3.1.3 进程控制块 Process Control Block

进程控制块 PCB (任务控制块 Task Control Block)

在内存 (Main Memory) 里

PCB 是系统感知进程存在的唯一标志


3.2 进程生命周期

3.2.1 进程标识符 Process Identifier

3.2.2 进程创建 Process Creation

3.2.3 进程执行 Process Execution

3.2.4 进程等待

  1. System call wait()

    • Suspend the calling process to waiting state and return (wakes up) when

      • one of its child processes changes from running to terminated
      • received a signal
    • Return immediately (i.e., does nothing) if

      • it has no children
      • a child terminates before the parent calls wait
    • 给子进程收尸 见 3.2.6

  1. fork()+exec*()+wait()=system()

    例: shell 里输入命令 -> 执行相应程序 -> 程序终止 -> 返回 shell

3.2.5 进程时间

3.2.6 进程终止 Process Termination

3.2.7 进程生命周期 Process Lifecycle

  1. forked

  2. Ready

  3. Running

  4. Blocked

  5. Interruptable waiting

  6. Un-interruptable waiting

    计网的程序里经常碰见,纯贵物,谁设计的抓紧埋了吧

  7. Return back to ready

  8. Terminated


第四章 线程 Thread

4.1 线程的概念


4.2 线程的组成


4.3 线程和进程的区别

ProcessThread
Process means any program is in execution.Thread means segment of a process.
Process takes more time to terminate.Thread takes less time to terminate.
It takes more time for creation.It takes less time for creation.
It also takes more time for context switching.It takes less time for context switching.
Process is less efficient in term of communication.Thread is more efficient in term of communication.
Process consume more resources.Thread consume less resources.
Process is isolated.Threads share memory.
Process is called heavy weight process.Thread is called light weight process.
Process switching uses interface in operating system.Thread switching does not require to call a operating system and cause an interrupt to the kernel.
If one process is blocked then it will not effect the execution of other processSecond thread in the same task couldnot run, while one server thread is blocked.
Process has its own Process Control Block, Stack and Address Space.Thread has Parents' PCB, its own Thread Control Block and Stack and common Address space.

4.4 线程的生命周期 Thread Lifecycle


4.5 多线程进程 Multithreaded Process


4.6 多线程调度


4.7 Multiprocessing, Multithreading and Multiprogramming


第五章 进程调度 Process Scheduling

5.1 基本概念

5.1.1 上下文切换 Context Switch

5.1.2 调度队列

5.1.3 调度程序 Scheduler

5.1.4 Dispatcher

Dispatcher 是一个模块,用来将 CPU 控制交给由 CPU 调度程序选择的进程

PropertiesDISPATCHERSCHEDULER
DefinitionDispatcher is a module that gives control of CPU to the process selected by short term schedulerScheduler is something which selects a process among various processes
TypesThere are no different types in dispatcher. It is just a code segment.There are 3 types of scheduler i.e. Long-term, Short-term, Medium-term
DependencyWorking of dispatcher is dependent on scheduler. Means dispatcher have to wait until scheduler selects a process.Scheduler works independently. It works immediately when needed
AlgorithmDispatcher has no specific algorithm for its implementationScheduler works on various algorithm such as FCFS, SJF, RR etc.
Time TakenThe time taken by dispatcher is called dispatch latency.Time taken by scheduler is usually negligible. Hence we neglect it.
FunctionsDispatcher is also responsible for: Context Switching, Switch to user mode, Jumping to proper location when process again restartedThe only work of scheduler is selection of processes.

5.2 调度准则


5.3 调度算法 Scheduling Algorithm

5.3.1 先到先服务调度 First-Come-First-Served (FCFS)

字面意思

5.3.2 最短作业优先调度 Shortest-Job-First (SJF)

5.3.2.1 非抢占 (Non-Preemptive) SJF

5.3.2.2 抢占 SJF

5.3.3 轮转调度 Round Robin (RR)

5.3.4 优先级调度 Priority Scheduling

5.3.4.1 Multiple Queue Priority Scheduling


第六章 同步 Synchronization

6.1 进程间通信 Inter-Process Communication (IPC)


6.2 临界区 Critical Section

6.2.1 竞争条件 Race Condition

6.2.2 临界区问题 Critical Section Problem

6.2.3 临界区问题的要求

  1. 互斥 Mutual Exclusion

    如果一个进程在其临界区内执行,那么其他进程都不能在临界区内执行

  2. 进步 Progress

    如果没有进程在临界区内执行,并且有进程需要进入临界区,那么只有那些不在剩余区内的进程可以参加选择,以便确定谁下次进入临界区,而且这种选择不能无限推迟

    别让执行临界区的进程空着,除非大家都不想进临界区

  3. 有限等待 Bounded Waiting

    从一个进程做出进入临界区的请求直到这个请求允许为止,其他进程允许进入其临界区的次数有上限

    别让一个进程等一辈子


6.3 临界区问题的解决方案 Solutions for Critical Section Problem

6.3.1 硬件同步 (×) Hardware Synchronization

6.3.2 基本自旋锁 (×) Basic Spin Lock

6.3.3 Peterson's Solution

6.3.4 信号量 Semaphore


6.4 经典同步问题

6.4.1 有界缓冲问题 Bounded-Buffer Problem

6.4.2 读者-作者问题 Reader-Writer Problem

6.4.3 哲学家就餐问题 Dining-Philosophers Problem


第七章 死锁 Deadlock

7.1 死锁的概念


7.2 死锁的特征

7.2.1 死锁的必要条件

  1. 互斥 Mutual Exclusion

    Only one thread at a time can use a resource.

  2. 占有并等待 Hold and Wait

    一个进程应占有至少一个资源并等待另一个资源,而该资源为其他进程所占有

  3. 非抢占 No Preemption

    资源不能被抢占,即资源只能被进程在完成任务后自愿释放

  4. 循环等待 Circular Wait

    有一组等待进程

    • 等待的资源被 占有
    • 等待的资源被 占有
    • ...
    • 等待的资源被 占有

注意是必要条件,即使这些条件都满足也不一定死锁,还需要运气比较背

7.2.2 资源分配图 Resource-Allocation Graph

 


7.3 死锁的处理方法


7.4 死锁检测 Deadlock Detection

7.4.1 死锁检测算法

[xxx] 表示数组

7.4.2 死锁恢复

当检测到死锁后:


7.5 死锁预防 Deadlock Prevention

核心:打破四个必要条件

  1. 互斥

    • 大家都用只读文件
    • 给足够多的资源
  2. 持有且等待

    • 每个进程在执行前申请并获得所有资源
    • 进程仅在没有资源时才申请资源
  3. 无抢占

    • 如果一个进程持有资源并申请一个不能被立即分配的资源,那么它现在分配的资源都可以被抢占

      相当于把它现有的资源都释放了

  4. 循环等待

    • 给所有进程一个指定的顺序来申请资源

7.6 死锁避免 Deadlock Avoidance

7.6.1 安全状态

7.6.2 资源分配图算法

7.6.3 银行家算法 Banker's Algorithm

个进程, 种资源


第八章 内存管理策略

8.1 背景

一个内存,多个进程,怎么管理

8.1.1 Aspects of Memory Multiplexing

8.1.2 地址绑定 Address Binding

源程序中的地址通常是用符号表示 (如变量 count)。编译器通常将这些符号地址绑定 (bind) 到可重定位的地址 (如“从本模块开始的第 14 字节”)。链接程序或加载程序再将这些可重定位的地址绑定到绝对地址 (如 74014)。每次绑定都是一个从一个地址空间到另一个地址空间的映射。

通常,指令和数据绑定到存储器地址可以在任何一步进行:

8.1.3 逻辑地址空间与物理地址空间

8.1.4 动态加载 Dynamic Loading

8.1.5 动态链接与共享库


8.2 交换 Swap

Refer to 进程调度 5.1.3 中期调度程序

进程需要在内存中以便执行。进程也可以暂时从内存中交换 (swap) 到备份存储 (backing store,一般是磁盘) 上,当需要再次执行时在调回到内存中。


8.3 连续内存分配 Contiguous Memory Allocation

8.3.1 Uniprogramming

8.3.2 内存保护 Protection

8.3.3 多分区方法 Multiple-Partition Method

8.3.3 碎片 Fragmentation


8.4 分段 Segmentation


8.5 分页 Paging

8.5.1 页表 Page Table

8.5.2 共享页

8.5.3 分层分页 Multilevel Paging

  1. Reference to PTE in level 1 page table = PTBR value + Level 1 offset present in virtual address.
  2. Reference to PTE in level 2 page table = Base address (present in Level 1 PTE) + Level 2 offset (present in VA).
  3. Reference to PTE in level 3 page table= Base address (present in Level 2 PTE) + Level 3 offset (present in VA).
  4. Actual page frame address = PTE (present in level 3).

8.5.4 分段+分页


第九章 虚拟内存管理

9.1 缓存 Cache


9.2 转换表缓冲区 Transition Look-aside Buffer (TLB)


9.3 请求调页 Demand Paging

9.3.1 基本概念

9.3.2 请求调页的性能


9.4 页面置换 Page Replacement

9.4.1 Cache Miss 的分类

9.4.2 FIFO 页面置换

9.4.3 最优页面置换 MIN

9.4.4 LRU 页面置换

9.4.5 近似 LRU 页面置换

9.4.5.1 时钟算法 Clock Algorithm
9.4.5.2 Second Chance List Algorithm


9.5 帧分配 Frame Allocation

9.5.1 全局分配与局部分配

9.5.2 分配算法


第十 & 十一章 文件系统 File System

10.1 文件系统概念


10.2 文件和目录 Files and Directories

10.2.1 目录的组成

10.2.2 文件


10.3 磁盘管理策略


10.4 目录分配

10.4.1 连续分配 Contiguous Allocation

10.4.2 链接分配 Linked Allocation

  1. Chop the storage device into equal sized blocks

  2. Fill the empty space in a block by block manner

  3. Leave 4 bytes from each block as the pointer

  4. Keep the file size in the root directory table

10.4.3 索引分配 Index Allocation


10.5 文件分配表 FAT

10.5.1 FAT 的原理

10.5.2 FAT 文件系统的大小

10.5.3 FAT 文件系统结构

10.5.4 FAT 文件遍历

例: dir c:\windows

10.5.5 FAT Directory Entry

10.5.6 FAT 读文件

例: 顺序读取 C:\windows\gamedata.dat

 

10.5.7 FAT 写文件

例: 向 C:\windows\gamedata.dat 写入数据

 

 

 

10.5.8 FAT 删除文件

例: 删除 C:\windows\gamedata.dat

 

10.5.9 总结


10.6 iNode

10.6.1 iNode 的原理

10.6.2 iNode 的结构

10.6.3 iNode 文件大小


10.7 可扩展文件系统 Ext

10.7.1 Ext 文件系统的大小

10.7.2 Ext 文件系统结构

10.7.3 Ext 的 iNode 结构

10.7.4 Ext 删除文件


10.8 NTFS

10.8.1 NTFS 文件系统结构

10.8.2 NTFS 文件存储


10.9 内存映射文件 Memory Mapped File


10.10 文件系统总结


第十二章 大容量存储结构

12.1 大容量存储结构概述

12.1.1 磁盘 Magnetic Disk (Hard Disk)

12.1.2 磁盘性能

diff --git a/CS302-OS-Notes.md b/CS302-OS-Notes.md index 9332b48..c991cb1 100644 --- a/CS302-OS-Notes.md +++ b/CS302-OS-Notes.md @@ -1510,8 +1510,10 @@ Refer to 进程调度 5.1.3 中期调度程序 在 CPU 里 - 段表的每个条目包含: + 每个进程都有一个 + 段表的每个条目包含: + * 段基地址 Segment Base * 段界限 Segment Limit * Valid bit @@ -1575,6 +1577,7 @@ Refer to 进程调度 5.1.3 中期调度程序 * 物理内存基地址 * Valid bit, read, write ... * 在内存里 +* 每个进程一个 ![](D:\TyporaPictures\OS\93.png) @@ -1774,6 +1777,10 @@ Refer to 进程调度 5.1.3 中期调度程序 * Update page table entry, invalidate TLB for new entry * Continue thread from original faulting location + ![](D:\TyporaPictures\OS\187.png) + + ![](D:\TyporaPictures\OS\188.png) + * OS 如何拿到一个空闲帧 * Keeps a free list @@ -2239,7 +2246,7 @@ Refer to 进程调度 5.1.3 中期调度程序 * 连续分配的应用 - * ISO 9960 + * ISO 9660 * CD-ROM #### 10.4.2 链接分配 Linked Allocation diff --git a/CS302-OS-Notes.pdf b/CS302-OS-Notes.pdf index 26085e0..7818a8c 100644 Binary files a/CS302-OS-Notes.pdf and b/CS302-OS-Notes.pdf differ