第一课 操作系统概览
概览
6.828的目标
- 理解操作系统设计与实现
- 动手完成小型OS
操作系统的目标
- 支持应用
- 抽象硬件
- 不同应用复用硬件
- 隔离应用
- 应用间共享
- 高性能
操作系统的设计方法
操作系统分层
操作系统通常提供的服务
- 进程
- 内存分配
- 文件管理,包括:内容,路径,文件名
- 安全
- 其他,包括:用户,进程间通信,网络,时间,shell
操作系统的抽象
操作系统实现的挑战
环境
涉及到的硬件复杂,调试不如用户空间方便,比较复杂.高效
系统可移植良好,且抽象良好特性丰富
实现简单
课程目标人群
课程结构
课程
通过课程,我们主要围绕着xv6来进行学习:
- 操作系统概念
- 深入学习xv6这样一个传统的操作系统
- 完成xv6相关的编程作业,以加深理解
- 阅读相关topic的文章
实验
动手实践部分,我们主要围绕着jos来进行学习,jos是一个基于x86的小型操作系统
- 我们一共用6节实践课来完成jos
- 在内核接口上,jos并未完全抽象硬件,而是暴露了硬件,但是加入了对硬件的保护.
- 实现了用户非特权等级的系统库,如: fork, exec, pipe
- 应用: 文件系统, shell
- 开发环境: gcc, qemu
系统调用简述
linux
strace ls