写在前面
巩固一下之前学的C语言, syscall等内容, 尝试一下OS的lab.
课程schedule: 6.S081 / Fall 2021 (mit.edu);
lab1主页: Lab: Xv6 and Unix utilities (mit.edu);
中文翻译部分: 1.5 read, write, exit系统调用 - MIT6.S081 (gitbook.io);(感谢大佬)
之前配置过环境, 但是一直没来学习, 现在趁着假期补上OS的内容.
准备知识
C语言
系统调用
下面采用了xv6源码给出的基本系统调用的列表, 逐个进行分析:
xv6: a simple, Unix-like teaching operating system (mit.edu);
System call | Description |
---|---|
int fork() |
Create a process, return child’s PID. |
int exit(int status) |
Terminate the current process; status reported to wait. No return. |
int wait (int *status) |
Wait for a child to exit; exit status in *status; returns child PID. |
int kill (int pid) |
Terminate process PID. Returns O, or -1 for error. |
int getpid() |
Return the current process’s PID |
int sleep(int n) |
Pause for n clock ticks. |
int exec(char *file, char *argv[]) |
Load a file and execute it with arguments; only returns if error. |
char *sbrk(int n) |
Grow process’s memory by n bytes. Returns start of new memory. |
int open(char *file, int flags) |
Open a file; flags indicate read/write; returns an fd (file descriptor). |
int write(int fd, char *buf, int n) |
Write n bytes from buf to file descriptor fd; returns n. |
int read(int fd, char *buf, int n) |
Read n bytes into buf; returns number read; or 0 if end of file. |
int close(int fd) |
Release open file fd. |
int dup(int fd) |
Return a new file descriptor referring to the same file as fd. |
int pipe(int p(l) |
Create a pipe, put read/write file descriptors in p[0] and p[1]. |
int chdir(char * dir) |
Change the current directory. |
int mkdir(char *dir) |
Create a new directory. |
int mknod(char *file, int, int) |
Create a device file. |
int fstat(int fd, struct stat *st) |
Place info about an open file into *st . |
int stat(char *file, struct stat *st) |
Place info about a named file into *st . |
int link(char *file1, char *file2) |
Create another name (file2) for the file file1. |
int unlink(char *file) |
Remove a file. |