第一章:【王道考研 操作系统】【第一章】操作系统的概述、特征、发展、体系结构 中断与系统调用
第二章:【王道考研 操作系统】【第二章】进程概念 进程控制 进程通信 线程概念和多线程模型
【王道考研 操作系统】【第二章】处理机调度 进程调度算法
【王道考研 操作系统】【第二章】进程同步、进程互斥的实现方法 软件&硬件 优点&缺点 信号量机制
【王道考研 操作系统】【第二章】管程 用管程解决进程互斥和同步问题
【王道考研 操作系统】【第二章】死锁的概念 预防死锁 避免死锁 死锁的检测和解除
第三章
1. 内存的基础知识
1.1 内存的定义和作用
内存是用于存放数据的硬件,缓和了外存到CPU的速度矛盾。程序执行前需要 先放到内存中才能被CPU处理。
1.2 进程的运行原理
1.2.1 逻辑地址 vs 物理地址
编译时产生的指令只关心 ”相对地址“,实际放入内存中时可根据起始位置得到 ”绝对地址“。相对地址又称为 逻辑地址,绝对地址 又称为 物理地址。
1.2.2 从写程序到程序运行
-
链接:由链接程序将编译后的一组目标模块,以及所需库函数链接在一起,形成一个装入模块。
-
装入:由装入程序将装入模块装入内存中运行,完成从逻辑地址到物理地址的转换。
1)绝对装入:如果在编译时就知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。(在编译时完成)
2)静态重定位:又称为 可重定位装入。编译、链接后的装入模块中的地址是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。根据内存的当前情况,将装入模块装入到内存的适当位置,装入时对地址进行 ”重定位“。(在装入时一次完成)
3)⭐动态重定位:又称为 动态运行时装入。编译、链接后的装入模块中的地址是从0开始的。装入程序把装入模块装入内存后,不会立即转换地址,而是 把地址转换推迟到程序真正要执行时才进行。因此,装入内存后所有的地址依然是逻辑地址。这种方式需要一个 重定位寄存器 的支持。