xv6操作系统学习笔记

0x00背景

最近在看操作系统上的书 然后选了本知乎推荐的xv6
https://th0ar.gitbooks.io/xv6-chinese/content/content/chapter0.html

我们从这几个问题入手

操作系统作用是什么?
内核的作用是什么?
内核概念 - 一个向其他运行中程序提供服务的特殊程序。
内核的权限保护机制是什么?

0x01操作系统接口

不熟悉的接口

exec(filename,*argv)
sbrk(n)
read(fd,buf,n)
write(fd,buf,n)
dup(fd)
pipe(p)
chdir(dirname)
mkdir(dirname)
mknod(name,major,minor)
fstat(fd)

进程和内存

shell
进程
–用户内存空间(指令,数据,栈)
–进程状态(仅内核可见)
系统调用 exec 将从某个文件(通常是可执行文件)里读取内存镜像,并将其替换到调用它的进程的内存空间。

I/O 和文件描述符

文件描述符—作为进程(表的索引)
文件描述符和 fork 的交叉使用使得 I/O 重定向能够轻易实现。fork 会复制父进程的文件描述符和内存,所以子进程和父进程的文件描述符一模一样。
exec 会替换调用它的进程的内存但是会保留它的文件描述符表
利用文件描述符 重定向i/o

管道

管道是一个小的内核缓冲区,它以文件描述符对的形式提供给进程,一个用于写操作,一个用于读操作。

文件系统

文件系统提供文件和目录,文件就是一个简单的字节数组,而目录包含指向文件和其他目录的引用。

0x01第一个进程

进程是一个抽象概念,它让一个程序可以假设它独占一台机器。进程向程序提供“看上去”私有的,其他进程无法读写的内存系统(或地址空间),以及一颗“看上去”仅执行该程序的CPU。

内存布局
进程见的切换实际是由线程调度来调节

创建第一个地址空间

创建第一个进程

将控制权从用户转到内核是通过中断机制实现的,具体地说是系统调用、中断和异常。

运行第一个进程

让硬件在进程的内核栈中执行系统调用与中断。

The first system call: exec

mit:
https://pdos.csail.mit.edu/6.828/2012/xv6.html
https://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

posted @ 2017-08-06 00:53  Tesi1a  阅读(2173)  评论(0编辑  收藏  举报