本课程涉及的主要方面
- 基本概念及原理
- 操作系统介绍
- 中断及系统调用
- 内存管理
- 进程及线程
- 调度
- 同步
- 文件系统
- I/O子系统
什么是操作系统
我们很难对操作系统下一个完整,精确的定义,但是我们可以通过分析操作系统的在计算机工作时起的作用,来认识操作系统究竟是什么?
1. 从用户角度上,操作系统是一个控制软件
2. 操作系统管理应用程序,为应用程序提供服务
3. 操作系统管理内设,分配资源
4. 在计算机层次结构中,位于硬件之上,应用程序之下
操作系统管理的四大硬件资源
1. cpu——进程管理
2. 内存——物理内存管理和虚拟内存管理
3. 磁盘——文件系统
4. 底层硬件——中断处理与设计驱动
操作系统的四大特征
1. 并发:计算机系统可以同时运行多个运行的程序
2. 共享: "同时访问"资源,互斥共享
3. 虚拟: 利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务
4. 异步: 程序的执行不是一贯到底,而是走走停停,向前推进的速度不可预知;但只要运行环境相同,OS需要保证程序运行的结果也要相同
为什么要学习操作系统
操作系统是一门综合课程,结合许多不同的课程,在学习操作系统的过程中,可以提升综合能力;学习操作系统很酷,很有用,很有挑战;学习操作系统能更好地理解计算机结构。
操作系统顶级会议
1. sosp
2. USENIX
操作系统难在哪里?
- 代码量大,Windows XP有4500万行
- 操作系统管理并发
- 操作系统管理原始硬件
- 操作体统必须是高效的
- 操作系统必须比用户程序拥有更高的稳定性
学习操作系统的关注点
- 滞后性:很多课本上的知识有老化性
- 权衡性:操作系统需要权衡空间与时间,性能和可预测性,公平和性能
操作系统和硬件
硬件方面,操作系统需要良好的硬件管理,合理的资源分配,例如,硬盘速度跟CPU、内存相差很多,操作系统需要协调处理。
学习方法
不仅仅是背概念和原理,还要coding
操作系统实例:
- UNIX BSD家族
- Linux家族
- Windows家族
操作系统历史
- 单用户阶段:早期计算机使用纸带传输程序和数据操作系统只起到加载作用
- 批处理阶段: 输入输出形成流水线,支持流水调度
- 多道程序设计:内存中存有多个程序,cpu执行多个程序
- 分时系统: 为了更好的利用计算机资源,并且更好的和用户交互,出现了分时系统
- 个人电脑操作系统: 重点是用户界面和API
- 分布式的操作系统
操作系统结构
- 小型系统,如DOS系统:不分模块的单体内核,无保护,易被破坏,难扩展
- 服务器上的操作系统,如Unix操作系统
- 微内核架构操作系统:操作系统内核只放最基础的东西
- 外核架构:目前主要在学术界
- 虚拟机监控器(VMM):在物理机上虚拟出多个操作系统