20135202闫佳音--week 2オペレーティングシステムはどのように働いているのか--学習ノート

1925 ワード

Week 2オペレーティングシステムはどのように動作しますか
一、コンピューターはどのように働いていますか.--三つの宝
三つの宝
1.プログラム記憶コンピュータ
すべてのコンピュータの基礎的な論理フレームワーク.
2.関数呼び出しスタック
低レベル言語では重要ではありませんが、スタックテクノロジーは高度な言語で実行できる基礎です.
3.割り込みメカニズム
中断すると、複数のプログラムが設計され、各プログラムに独自の実行フローがあります.割り込みが発生すると,cpuは現在のeip等をカーネルスタックに押し込み,eipを割り込み処理プログラムの入口に向ける.
(二)関数呼び出しスタックを深く理解する
1.スタック
スタックはc言語プログラムの実行時に必要な呼び出しパスとパラメータを記録する空間である.
  • 関数呼び出しフレーム
  • 伝達パラメータ(32ビットx 86)
  • 返却アドレス
  • を保存する.
  • は、局所変数空間
  • を提供する.
  • ……

  • 2.スタック関連レジスタ
    Espスタックポインタebpベースポインタ(c言語で現在の関数呼び出しベースを記録するために使用される)
    3.スタック操作
    pushスタックトップアドレス減少4バイト(32ビット)popスタックトップアドレス増加4バイト
    4.その他キーレジスタ
  • コードセグメントレジスタcs cs:eip:常に次の命令のアドレスを指す.変更?
  • call:現在のcs:eipの値をスタックトップに押し込み、cs:eipは呼び出された関数のエントリアドレス
  • を指す.
  • ret:スタックトップからここに保存していたcs:eipの値をポップアップし、cs:eipの
  • に入れる

    5.関数のスタックフレーム
  • 呼び出された関数のスタックフレームワークを確立し、この関数の関数体の前にpushl%ebp movl%esp、%ebp
  • を加える.
  • 呼び出された関数のスタックフレームワークを取り外し、その関数の関数体にmovl%ebp、%esp popl%ebp ret
  • を加える.
    (三)パラメータ伝達と局所変数
    例では、パラメータ伝達?z = p2(x,y);
    pushl 0xfffffff8(%ebp)
    pushl 0xfffffff4(%ebp)  ;  y   ,  x   。       ,        
    call 804839b<p2>
    add $0x8,%esp   ;          
    mov %eax,0xfffffffc(%ebp)   ;  z

    二、linuxカーネル部分のソースコードを利用してストレージプログラムコンピュータの作業モデルを模擬し、時計が中断する
    1.mykernelによるコンピュータハードウェアプラットフォームの実験シミュレーション
    三、mykernelに基づいて簡単なオペレーティングシステムカーネルを構築する
    (一)C言語にアセンブリコードを埋め込む書き方
    注意事項:
  • movl$0,%%eaxtでは、最初のパーセントはエスケープ文字で、2番目は%eax
  • です.
  • addl%1,%eaxt,%1は、0から始まる番号で、以下に出力および入力される番号です.
  • 「c」(val 1)は、ecxレジスタでval 1を格納する値を表す.同様に、「d」(val 2)はedxレジスタでval 2を格納する値を表す.
  • "=m"(val 3)は、val 3の値をメモリ変数に書き込むことを示す.=書き込みのみ、mはメモリを指します.
  • 具体的には修飾子を参照してください.

  • (二)簡単なオペレーティングシステムカーネルソースコード
    オペレーティングシステムの「2本の剣」:
    1.割り込みコンテキスト、すなわち割り込みハンドラ.2.プロセスコンテキストの切り替え
    2つのケース:1.次のプロセスnext->state==0が実行中です.2.プロセスは新しいプロセスであり、まだ実行されていません.