Lecture 1: Operating systems

Handouts


Homework: boot xv6

先去看完Lecture3再来做exercise。。。


Homework: shell

用C实现一个支持管道和重定向的shell
(我们只需补充部分代码,包括之后的作业都是如此)

readings

parser

这部分代码不需要自己写,不过还是解释一下
parser部分的API:

execcmd(void)execcmd的构造函数
pipecmd(struct cmd *left, struct cmd *right)pipecmd的构造函数
redircmd(struct cmd *subcmd, char *file, int type)redircmd的构造函数
getcmd(char *buf, int nbuf)从键盘读取命令
gettoken(char **ps, char *es, char **q, char **eq)从s读取并返回一个token
peek(char **ps, char *es, char *toks)判断s的首个非空字符是否在toks字符串里
parsecmd(char *s)解析一个命令
parseline(char **ps, char *es)解析一行命令
parsepipe(char **ps, char *es)管道的优先级最高,首先解析管道
parseexec(char **ps, char *es)解析管道间的命令
parseredirs(struct cmd *cmd, char **ps, char *es)解析重定向符

runcmd


Lab 1: C, Assembly, Tools, and Bootstrapping

Exercise 1

熟悉汇编语言,参考资料:

(我个人推荐CSAPP第二版的第三章,正好也是32位、AT&T语法,非常适合入门)

Exercise 2-12

先去看完Lecture2再来做exercise。。。