[Home](../)->Ucore OS
---
### 实现一：启动流程、中断、异常和系统调用
1. 系统启动流程
2. 中断：外设使用系统资源
3. 异常：指令执行失败触发异常
4. 系统调用：应用软件申请内核服务
5. 中断、异常和系统调用的区别：源头，响应方式，处理机制

### 实验二：物理内存管理
1. 存储的层次：寄存器->L1,L2缓存->内存->外存
2. OS的内存管理方式：重定位，分段，分页，虚拟存储
3. 程序生成过程：编译->汇编->链接->装载
4. 地址生成的时机：编译时，加载时，执行时
5. 动态内存分配策略：最先匹配，最佳匹配，最差匹配

### 实验三：虚拟存储
1. 内存不足的解决方法：覆盖，交换，虚拟存储
2. 局部性原理：时间局部性，空间局部性，分支局部性
3. 虚拟存储的原理：装载程序时，需要的指令或数据不在内存中时，暂时不用的页面或段
4. 虚拟存储的实现方式：虚拟页式存储，虚拟段式存储
5. 虚拟存储的基本特征：不连续性，大用户空间，部分交换
6. 页面转换算法的分类：局部页面转换算法 + 全局页面转换算法
 * 局部页面置换算法 = 最优算法 + 先进先出算法 + 最近最久未使用算法(时钟算法 + 最不常用算法)  
 * 全局页面转换算法 = 工作集算法 + 缺页率算法
7. 重要的数据结构
 * struct mm_struct:是用来控制具有相同PDT的vma集合的结构体。  
 * struct vma_struct: 是用来定位虚拟连续内存区域的结构体。  
 * struct swap_manager: 进行交换管理的类。

### 实验四：内核线程管理
1. 进程与程序的异同：一动一静，一对多，进程执行需要资源，一暂一久，组成不同
2. PCB的组成：进程标识信息，处理机现场保存，进程控制信息（调度和状态，通信，存储，资源，与有关数据结构的连接）
3. Ucore对进程生命周期的划分：创建(触发条件），执行（处理机调度），等待（触发条件），抢占（触发条件），唤醒（触发条件），结束（情况）
4. 三状态进程模型：五种状态七种变迁
5. 挂起进程模型：比三状态进程模型多了两种状态三种变迁
6. 线程 = 进程 - 共享资源
7. 线程的三种实现方法

### 实验五：用户进程管理
1. 进程切换：切换过程，PCB的内容
1. 进程创建：fork()和exec()的过程，COW技术的意义
1. 进程的等待和退出：wait()和exit()的过程
1. 进程控制与进程状态的对应关系
1. 重要数据结构： proc_struct (进程控制块)

### 实验六：调度器
1. 什么是处理机调度，调度程序要解决的两个问题
2. 调度策略与调度算法的关系，处理机资源的两种使用模式，调度算法的评价标准。
3. 6种传统调度算法（定义，优点，缺点）
4. [stride调度算法](stride)

### 实验七：同步互斥
* 临界区和禁用硬件中断
  1. 什么是原子操作
  2. 进程交互的三种关系，出现的三种问题
  3. 临界区访问模式，4个访问规则，3个实现同步的方法
  4. 禁用中断的优缺点及适用范围
* 高级抽象的同步方法
  1. 两种原子操作指令，锁的三种实现方法
  2. 什么是同步，实现同步的方法
  3. 什么是[信号量](semaphore)，信号量的结构，两类信号量，信号量的两种使用方法
  4. 什么是生产者消费者问题，怎么用信号量解决生产者消费者问题
  5. 什么是管程，怎么用管程解决生产者消费者问题，管程条件变量的两种释放方式
  6. 什么是哲学家就餐问题
  7. 什么是读者写者问题，信号量和管程的对它的解决方法
* 死锁的概念
  1. 死锁：由于竞争资源或相互通信，两个以上线程无休止地相互等待只能由其它线程引发的事件
  2. 进程使用资源的流程：申请-->使用-->释放
  3. 资源分类：可重用资源，消耗资源
  4. 资源分配图：描述进程和资源之间的分配和占用的关系（两类顶点，两类有向边）
  5. 出现死锁的必要条件：互斥、持有并等待、非抢占、循环等待
* 死锁的处理方法
  1. 死锁的处理方法：死锁预防、死锁避免、死锁检测和恢复(通常交给应用进程处理死锁，操作系统忽略死锁)
  2. 死锁预防：限制并发进程对资源的请求，使系统在任何时刻都不满足死锁的必要条件。
  3. 死锁避免：在分配资源的时候判断是否会出现死锁，只有不出现死锁才分配资源。  
    银行家算法：以银行借贷分配策略为基础，判断并保证系统处于安全状态。
  4. 死锁检测：周期性地使用死锁检测算法对资源分配图进行搜索，当出现死锁时，用死锁恢复机制进行恢复。

### 实验八：文件系统
* 文件系统和文件
  1. Unix文件系统的四个抽象概念：file, dentry, inode, mount point.
  2. 什么是文件系统？（操作系统中管理持久性数据的子系统， 提供数据存储和访问功能）
  3. 什么是文件？（具有符号名，由字节序列构成的数据项集合）
  4. 文件系统的功能。（分配文件磁盘空间，管理文件集合，数据可靠和安全）
  5. 文件=文件头+文件内容；文件头=文件属性+文件存储位置和顺序
* 文件描述符
  1. 什么是文件描述符？（打开的文件在内存中维护的相关信息）
  2. 文件描述符：文件指针+文件打开计数+文件的磁盘位置+访问权限
  3. 文件的用户视图：从进程的角度看文件，是个持久的数据结构，是字节序列的集合，不关心磁盘上的结构
  4. 文件的系统视图：从操作系统角度看文件，是数据块的集合，与扇区紧密相关
  5. 用户视图到系统视图的转换方式：以数据块为基本操作单位
  6. 进程访问文件的模式：顺序访问，随机访问，索引访问
  7. 文件内部结构：无结构，简单记录结构，复杂结构
  8. 文件共享和访问控制（多用户系统）
  9. 语义一致性问题（由文件共享而导致）
* 目录，文件别名和文件系统种类
  1. 目录：分层的文件系统
  2. 目录操作：搜索，创建，删除，列出目录内容，重命名，遍历路径
  3. 目录实现：线性表，哈希表
  4. 文件别名：硬链接，软链接
  5. 由于目录循环而导致的文件遍历问题
  6. 文件系统需要挂载才能被使用
  7. 文件系统的种类：磁盘文件系统，数据库文件系统，日志文件系统，网络/分布式文件系统，特殊/虚拟文件系统
* 虚拟文件系统
  1. 文件系统基本数据结构：superblock,inode,dentry
* 文件缓存和打开文件
* 文件分配
* 空闲空间管理和冗余磁盘阵列
