知识预备
- 计算机结构原理
- C与汇编程序设计
- 能够看懂程序
- 使用语法表达算法
- 数据结构
- 树
- 表
- 链表
- 等…
参考书
操作系统概念, 操作系统–精髓与设计原理
What is system?
- 目前没有公认的精确定义
- 操作系统是一个控制程序
- 操作系统是一个资源管理器
- 应用程序与硬件之间的中间层
- 管理计算机软硬件资源
- 提供访问计算机硬件资源的高效手段
- 解决资源访问冲突, 确保资源公平使用
操作系统演变
- 主要功能: 用户态和硬件之间协调抽象,使得用户方便的使用资源
- 原则: 设计随着技术改变而改变
- 在过去的二十年底层技术有极大改变
- 单用户系统
- 操作系统 = 装载器 + 通用子程序库
- 问题: 昂贵组件的低利用率
- 利用率 = (执行时间 + 读卡时间) / 执行时间
- 批处理系统
- 打印和输入不使用计算机, 由周边设备完成, 程序执行仍然是顺序执行
- 多程序系统
- 异步 I/O, 多个程序交替执行,需要程序主动交出CPU使用权
- 分时
- 多个程序交替执行, 增加timer interrupt, 各个程序分时执行, 调度虽然增加了CPU资源的消耗,但是从用户的角度来看,节约了用户的时间,也是提升效率
- 个人计算机: 每个用户一个系统
- 单用户
- 利用率已不再是关注重点
- 重点是用户界面和多媒体功能
- 很多老的服务和功能不存在
- 分布式计算机: 每个用户多个系统
- 网络支持成为一个重要功能
- 支持分布式服务,跨多系统的数据共享和协调
- 可能使用多个处理器
- 高可用和可靠性要求
- 单用户系统
操作系统结构
- 简单结构
- 未拆分模块
- MS-DOS 在接口和功能水平没有很好分离, 主要使用汇编编写, 不同的硬件需要写不同的操作系统
- 分层结构
- 每层建立在低层之上
- 最底层(layer 0), 是硬件
- 最高层(layer N), 是用户界面
- 每一层仅使用更低一层的功能和服务
- 与硬件平台无关的部分使用高级语言, 其余的仍然使用汇编语言, 移植的时候仅需要修改汇编部分
总结
- 操作系统很有趣, 可以管理和控制整个计算机
- 但是它不完备, bug, 性能异常, 功能缺失, 有很多挑战和基于
- 庞大, 许多概念和原理 代码需要了解
- 有足够的恒心和投入可以在一个学期学会操作系统原理和ucore OS (1w行代码左右)的实现