文章目录
1.概览
1.1 [6.828]目标
- 了解操作系统的设计与实现
- 手写一个小型操作系统
1.2 操作系统的目的是什么
- 支持应用
- 为了方便和便携,抽象一下硬件
- 让多个应用可以多路复用硬件
- 隔离应用如果有bug的话
- 允许应用之间分享数据
- 提升性能
1.3 操作系统设计的方法
- 微观:一个硬件管理的库
- 宏观:物理设备到抽象「todo」「」「」「」
1.4 组织结构
- 硬件: cpu、内存、磁盘
- 内核服务
- 用户应用:vi、gcc、&c
1.5 操作系统提供的一些服务类型
- 进程
- 内存管理
- 文件「」「」「」「
- 字典和文件名「」「」「」「」
- 安全
- 其他:用户、进程间通信、网络、时间、终端
1.6 一个操作系统抽象起来是什么样的
- 应用只能通过系统调用看到操作系统
- 对于unix来说 ,就是这样 :
fd = open(“out”, 1);
write(fd, “hello\n”, 6);
pid = fork();
1.7 为什么操作系统设计与实现很难或者很有趣
- 环境很严峻:奇特的硬件与调试器「」「」「」