In [1]:
from mosaic import *
OS2023(19)
19. 系统调用和 UNIX Shell¶
Changelog & 反馈
- 五一假期愉快
- 期间会上线 Online Judge
背景回顾:整个计算机系统世界的 “创建” 从 CPU Reset 开始,Firmware 加载操作系统内核代码,操作系统成为状态机的管理者,初始化第一个进程,从而成为一个中断处理程序和系统调用执行者。《操作系统》课程的很重要部分就是操作系统中的对象和操纵这些对象的 API。
然而,让用户和系统管理员直接 “使用” 操作系统内核提供的 API 是非常困难的:我们需要一系列人类友好的应用程序,协助我们完成日常工作。
本讲内容:
- Shell
- xv6 shell 代码讲解
In [2]:
demo('linux', 'v/linux-minimal')
In [3]:
slideshow('19.1')
In [4]:
slideshow('19.2')
In [5]:
demo('sh', 'v/sh')
In [6]:
slideshow('19.3')
Take-away Messages¶
通过 freestanding 的 shell,我们阐释了 “可以在系统调用上创建整个操作系统应用世界” 的真正含义:操作系统的 API 和应用程序是互相成就、螺旋生长的:有了新的应用需求,就有了新的操作系统功能。而 UNIX 为我们提供了一个非常精简、稳定的接口 (fork, execve, exit, pipe ,...),纵然有沉重的历史负担,它在今天依然工作得很好。
课后习题/编程作业¶
1. 阅读材料¶
教科书 Operating Systems: Three Easy Pieces:
- 第 5 章 - Process API (继续阅读)
2. 编程实践¶
Freestanding shell 很好地揭开了操作系统上应用程序的 “真面目”。理解 sh.c 是非常重要的——调试它、在课堂演示的基础上考虑如何对 visualize.py 作出你认为更适合的改进,你就能逐渐体会有/无工具的效率差别。