Linuxベースのオペレーティングシステムはアプリケーションをどのように処理しますか? [閉鎖]

Linuxベースのオペレーティングシステムはアプリケーションをどのように処理しますか? [閉鎖]

オペレーティングシステムなしでアプリケーションを実行する方法を学習しようとしていますが、次の情報が引き続き表示されます。オペレーティングシステムなしでプログラムを実行するには、プログラムがオペレーティングシステムによって通常提供されるすべてのoprocessを提供する必要があります。これにより、次のような気がしました。Linux(Androidなど)のオペレーティングシステムは、アプリケーションを実行するためにどのプロセスを使用しますか?

つまり、アプリケーションがオペレーティングシステムの内部で実行されることはわかっていますが(関係ありません)、オペレーティングシステムが提供する機能が何であるか、Linuxカーネルとどのようにやり取りするかはよくわかりません。

オペレーティングシステムなしでプログラムを開発する方法についてのアドバイスは便利ですが、主にオペレーティングシステムがアプリケーションを管理する方法に関する情報を探しています。助けてくれてありがとう!

ベストアンサー1

すべてのプロセスはメモリを介してプロセッサに供給される一連の命令であり、プロセッサはメモリの他の部分にジャンプしてメモリの一部をデータとして操作できます。これが最も簡単なコンピュータが動作する方法です。 (確認するhttps://en.wikipedia.org/wiki/Universal_Turing_machineそしてhttps://en.wikipedia.org/wiki/Von_Neumann_architectureより多くの情報を知りたい場合)

最新のコンピュータには、2つのモードで動作するプロセッサがあります。リアルモードそしてユーザーモード。コンピュータが起動すると、最初のプロセスはリアルモードを宣言し、コンピュータの実際の外観とコンピュータに含まれるすべてのハードウェアを確認できます。

このプロセスはオペレーティングシステムのカーネルです。 Unixカーネルがすることはただユーザープロセス(最初のプログラムはしばしば内部にUnices の場合) コンピュータを所有しているという幻想を持っています。

これは、カーネルがハードウェアをセットアップし、時々プロセスが目に見えないようにプロセッサから強制的に分離され、カーネルが短時間で管理タスクを完了するようにハードウェアを設定するので、これはファンタスティックです。ユーザープロセスが表示するメモリも物理メ​​モリではありませんが、カーネルが物理ハードウェアメモリにマップした偽のメモリです(一部のハードウェアヘルプを参照してください)。https://en.wikipedia.org/wiki/Memory_management_unitより多くの情報を知りたい場合)。

ユーザープロセスはハードウェアに直接アクセスできませんが、Unixカーネルは読み書きのための階層を提供します。ファイルシステム)、カーネルはこれをハードウェア操作に変換します(最も簡単なのはディスク読み取りとディスク書き込みですが、それだけではありません)。ファイルシステムへのアクセスに加えて、カーネルはいくつかの異なるサービスも提供します。ユーザープロセスは、次の指定された単純なプロトコルを介して通信できます。システムコール)。

要求できる最も基本的な2つのサービスは次のとおりです。分岐一つ実装する。分岐するには、カーネルが親イメージの別のプロセスを作成し、ファイルシステムから新しいイメージをロードする必要があります。このようにして、初期プロセスは複数の異なるユーザプロセスを開始することができ、その後、他のプロセスなどを開始することができる。

最初のプロセスと同様に、各ユーザーサブプロセスはまるでコンピュータにあるかのように実行できますが、実際には1つのコンピュータでのみ実行されます。仮想メモリアドレス空間(カーネルはそれをプロセスの後ろの物理アドレスにマップします)、そして時々カーネルは他のプロセスがプロセッサにアクセスできるようにそれをプロセッサから強制します(これを呼び出します)。先制的なマルチタスクカーネルには次のセクションがあります。スケジューラ正確な実行方法に責任があります。)

本質的にカーネルハードウェアリソースの再利用コンピュータで起動し、それを行うのが合理的なユーザープロセス(CPU、RAM、Hardrive、GPU...)かなり(各プロセスには、すべてのプロセスが進行できるようにするためのタイムスライスがあります。)効率的な(プロセスが遅いソース(ディスク、ネットワーク)からデータを待っている場合、カーネルは論理的に答えが出たときに「まだありますか?」と尋ねるためにCPUで実行するようにしてCPU時間を無駄にしません。長い間ではありません) 。これらすべての基本的な公平性は、人間が入力した方針によって調整されます。カーネルはまた、プロセスがカーネルによって提供されるさまざまな手段を介して互いに通信し、共有されたグローバル状態の合理的なビューを取得できるようにします。

おすすめ記事