2022-02-13から1日間の記事一覧

ページングについてわからなかった所とその現時点での理解

ページングテーブルについて理解が曖昧だった所の理解が進んだのでその記録*1 曖昧だった点 なぜ、ページングテーブルを多段に分けるのか? 多段に分けても、同じアドレス幅で扱えるページ量は変わらないのでは? 現時点での理解 多段に分けるのは、ページン…

OSレベルでのI/Oの制限方法

486でどのようにI/Oコントロールが行わているか。*1 486 ではIOPLビットでIOコントロールをするが、全部禁止、全部許可しかできない。 TSSの中にI/O許可マップというものを準備して、各ポートについての権限を管理する。 また、リアルモード用のアプリケーシ…

関数呼び出しがどうやって実装されているか

アセンブラでの関数呼び出しは以下のように実装されていることが多い。 呼び出す側の関数をA、呼び出される側の関数をBとする 例えば、 int sum(int a, int b){ return a+b } void main(){ sum(1,2) } ならmainがA, sumがBを指す 引数をスタックに積む Aに戻…