オペレーティングシステムの内部動作についてはまったくわかりませんが、多くの関数の近似動作を多かれ少なかれ推測できます。しかし、私が理解できないことの1つは、マルチタスクです。
理論的には、オペレーティングシステムは、実行中のさまざまなプログラムに応じた短い間隔でCPUに従って時間を管理します。しかし、これが実際にどのように機能するかは明らかではありません。
オペレーティングシステムがプログラムを開始したいとします。マシンコードは、特定のアドレスからRAMのどこかにロードされます。次に、そのアドレスにジャンプを実行して、コードを実行できるようにします。しかし、この方法では、私が戻るまでOSは制御を取り戻すことができません。
基本的に、この作品を作るには2つの方法しか考えられませんが、どちらも実際に適しているとは思えません。
オペレーティングシステムは、直接実行する代わりに、実行するマシン命令を読み取ってエミュレートできます。私はこれがどのように機能するかわからないので、意図的にあいまいですが、プログラムがかなり遅くなるようです。
または、オペレーティングシステムは、システムコールを行うまで待つことができます。その瞬間に制御を取り戻し、実行されている時間を確認し、タイムシェアリングを行うことができます。これは動作する可能性がありますが、システムコールを含まない長い計算を行い、すべてをしばらくハングさせる可能性があるため、信頼性がないようです。
したがって、どちらのメカニズムもうまく機能しないようです。マルチタスクは実際にどのように実行されますか?
interrupt
INT
命令を実行する方法がありません。私にはまだ謎の何かがあります