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);
二、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.プロセスは新しいプロセスであり、まだ実行されていません.
一、コンピューターはどのように働いていますか.--三つの宝
三つの宝
1.プログラム記憶コンピュータ
すべてのコンピュータの基礎的な論理フレームワーク.
2.関数呼び出しスタック
低レベル言語では重要ではありませんが、スタックテクノロジーは高度な言語で実行できる基礎です.
3.割り込みメカニズム
中断すると、複数のプログラムが設計され、各プログラムに独自の実行フローがあります.割り込みが発生すると,cpuは現在のeip等をカーネルスタックに押し込み,eipを割り込み処理プログラムの入口に向ける.
(二)関数呼び出しスタックを深く理解する
1.スタック
スタックはc言語プログラムの実行時に必要な呼び出しパスとパラメータを記録する空間である.
2.スタック関連レジスタ
Espスタックポインタebpベースポインタ(c言語で現在の関数呼び出しベースを記録するために使用される)
3.スタック操作
pushスタックトップアドレス減少4バイト(32ビット)popスタックトップアドレス増加4バイト
4.その他キーレジスタ
5.関数のスタックフレーム
(三)パラメータ伝達と局所変数
例では、パラメータ伝達?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言語にアセンブリコードを埋め込む書き方
注意事項:
(二)簡単なオペレーティングシステムカーネルソースコード
オペレーティングシステムの「2本の剣」:
1.割り込みコンテキスト、すなわち割り込みハンドラ.2.プロセスコンテキストの切り替え
2つのケース:1.次のプロセスnext->state==0が実行中です.2.プロセスは新しいプロセスであり、まだ実行されていません.