操作系统 XV6
发布时间 2023-07-10 11:35:31作者: 张家豪
操作系统 XV6
1. 介绍和举例
1.1 课程内容简介
- 课程内容简介
- 操作系统的目标
- 抽象硬件
- 多个应用程序之间共用硬件资源
- 隔离性,不同的活动之间不能相互影响
- 共享性,不同活动之间要能数据共享
- 权限管理
- 可以通过硬件提高应用程序的高性能
- 支持大量的不同的应用程序
1.2 操作系统结构
- 最下层
- 最上层
- 中间层
- fs(文件系统)、AccessControl(权限控制)等
1.3 挑战和快乐
- 一些矛盾的要求
- 高效又要易用
- 强大的服务又要简单的接口
- 既要给应用程序尽可能多的灵活性,又要在某种程度上限制其灵活性
- 大量的特性和大量的服务,需要大量的思考
- 需要满足广泛的使用场景
1.4 课程资源
1.5+ 函数
- int read(int fd, char *buf, int n)
- 将n 个字节读入buf;返回读取的字节数;如果文件结束,返回0
- int write(int fd, char *buf, int n)
- int exit(int status)
- 终止当前进程,并将状态报告给wait()函数。无返回
- int open(char *file, int flags)
- 打开一个文件;flags表示read/write;返回一个fd(文件描述符)
- shell
- int fork()
- int exec(char *file, char *argv[])
- 加载一个文件并使用参数执行它; 只有在出错时才返回
- int wait(int *status)
- 等待一个子进程退出; 将退出状态存入*status; 返回子进程PID。
- int kill(int pid)
- int getpid()
- int sleep(int n)
- char *sbrk(int n)
- int close(int fd)
- int dup(int fd)
- int pipe(int p[])
- 创建一个管道,把read/write文件描述符放在p[0]和p[1]中
- int chdir(char *dir)
- int mkdir(char *dir)
- int mknod(char *file, int, int)
- int fstat(int fd, struct stat *st)
- int stat(char *file, struct stat *st)
- int link(char *file1, char *file2)
- int unlink(char *file)
- 注意
- xv6系统调用(除非另外声明,这些系统调用返回0表示无误,返回-1表示出错)
- I/O redirect
2. 操作系统架构和系统调用