# HG changeset patch # User e165723 # Date 1559025843 -32400 # Node ID 954d8aee41fbfb532863ecf59d88c34acc59d701 # Parent cef6ee71df2de2969b4d32cb056a9200dfc0d755 slide fix diff -r cef6ee71df2d -r 954d8aee41fb slide/images/meta_Code_Gear.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/slide/images/meta_Code_Gear.svg Tue May 28 15:44:03 2019 +0900 @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r cef6ee71df2d -r 954d8aee41fb slide/images/meta_gear2.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/slide/images/meta_gear2.svg Tue May 28 15:44:03 2019 +0900 @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r cef6ee71df2d -r 954d8aee41fb slide/images/normal_Code_Gear.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/slide/images/normal_Code_Gear.svg Tue May 28 15:44:03 2019 +0900 @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r cef6ee71df2d -r 954d8aee41fb slide/sigos.html --- a/slide/sigos.html Sun May 26 20:32:55 2019 +0900 +++ b/slide/sigos.html Tue May 28 15:44:03 2019 +0900 @@ -172,12 +172,12 @@

CbC の継続

- normalCodeGear + normalCodeGear
@@ -193,6 +193,38 @@
  • Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う
  • +
    + normalCodeGear +
    + + + + + +
    + +

    Meta Gear

    + +
    + MetaGear +
    + + + +
    + +
    + +

    Context

    + +
    @@ -265,6 +297,38 @@
    +

    syscall関数

    + + + + +
    + +
    +

    sys_read 関数

    diff -r cef6ee71df2d -r 954d8aee41fb slide/sigos.md --- a/slide/sigos.md Sun May 26 20:32:55 2019 +0900 +++ b/slide/sigos.md Tue May 28 15:44:03 2019 +0900 @@ -45,10 +45,10 @@ ## CbC の継続 * Code Gear の継続を表す図である * Code Gear 間の遷移は goto によって行われる -* アセンブラレベルで見ると call ではなく jmp となっている +
    - normalCodeGear + normalCodeGear
    ## Gears におけるメタ計算 @@ -56,6 +56,24 @@ * Meta Code Gear はノーマルレベルの Code Gear の直後に遷移され、メタ計算を実行する * Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う +
    + normalCodeGear +
    + +## Meta Gear +* Gears OS では、Meta Code Gear は通常の Code Gear の直前、直後に挿入され、メタ計算を実行する +* 通常の計算からはメタ計算は見ることができない +
    + MetaGear +
    + + + + ## Interface * Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される * Interface は使用される Data Gear の定義と、それに対する Code Gear の集合である @@ -82,6 +100,30 @@ * ここでは実際にシステムコールを CbC で書き換えることによって、状態遷移ベースで書き換えるには何が必要か示すことにした * 今回は read システムコールの CbC 書き換えを行なった +## syscall関数 +* syscall 関数 はシステムコールを呼び出す関数である +``` +void syscall(void) +{ + int num; + int ret; + num = proc->tf->r0; + if((num >= NELEM(syscalls)) && (num <= NELEM(cbccodes)) && cbccodes[num]) { + proc->cbc_arg.cbc_console_arg.num = num; + goto (cbccodes[num])(cbc_ret); + } + if((num > 0) && (num <= NELEM(syscalls)) && syscalls[num]) { + ret = syscalls[num](); + if (num != SYS_exec) { + proc->tf->r0 = ret; + } + } else { + cprintf("%d %s: unknown sys call %d\n", proc->pid, proc->name, num); + proc->tf->r0 = -1; + } +} +``` + ## sys\_read 関数 * 読み込むファイルの情報とアドレスを取り出し、fileread に渡している ``` @@ -458,7 +500,7 @@ goto next(); } ``` - + ## まとめと今後の方針 * 現在は xv6 のシステムコールの一部のみの書き換えと、設計のみしか行っていないのでカーネル全ての書き換えをおこなう * Gears OS にはメタ計算を実装する context は par goto の機能がある diff -r cef6ee71df2d -r 954d8aee41fb slide/sigos.pdf.html --- a/slide/sigos.pdf.html Sun May 26 20:32:55 2019 +0900 +++ b/slide/sigos.pdf.html Tue May 28 15:44:03 2019 +0900 @@ -156,12 +156,12 @@

    CbC の継続

    - normalCodeGear + normalCodeGear
    @@ -177,6 +177,38 @@
  • Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う
  • +
    + normalCodeGear +
    + + + + + +
    + +

    Meta Gear

    + +
    + MetaGear +
    + + + +
    + +
    + +

    Context

    + +
    @@ -249,6 +281,38 @@
    +

    syscall関数

    + + + + +
    + +
    +

    sys_read 関数