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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM