Operating Systems
homework1
B10515056 四資工三乙 鍾采緹

項目一:截圖瞬間+暫存器 ax cx bx 是多少等文字敘述

項目二:零、一章節總結重要概念

ch0.
通過xv6的操作系統來展現OS的基本理念。xv6 使用了kernel概念。
通過進程系統調用使用kernel服務。系統調用會進入kernel,讓kernel執行服務然後返回。進程會在user和kernel之間交替運行。

xv6 的 system call

ch1.

透過呼叫 userinit(),創造第一個 process。
它會先呼叫 allocproc ,配置並初始化一個 struct proc。
接下來新process會在forkret 上執行,然後再到 trapret。

項目三:二~六章節,請依據學號後兩位數取5的餘數(04+2=26)來撰寫報告

ch3. Traps, interrupts, and drivers

x86有四個特權級,其中0為內核模式、3為用戶模式,當前在執行的指令特權集會存在%cs中的CPL。中斷程式的入口在中斷描述符表(IDT)中定義。
一共有256個表項,提供相應的%cs 和%eip。
一個程序要在x86上進行一個系統調用,它需要調用int n 指令,這裡n 就是IDT 的索引。int 指令進行下面一些步驟:

1.從IDT 中獲得第n 個描述符,n 就是int 的參數。
2.檢查%cs 的CPL <= DPL,DPL 是描述符中記錄的特權級。
3.如果目標段選擇符的PL < CPL,就在CPU 內部的寄存器中保存%esp 和%ss 的值。
4.從一個任務段描述符中load %ss 和%esp。
5.依序push %ss、%esp、%eflags、%cs、%eip。
6.清除%eflags 的一些位。only on an interrupt
7.設置%cs 和%eip 為描述符中的值。

資料來源
中譯參考 https://github.com/ranxian/xv6-chinese