10個のターミナルウィンドウを開こうとすると、オペレーティングシステムはこれをどのように処理しますか?マルチスレッドを使用しますか、それともマルチプロセッシングを使用しますか?それとも私がまだ知らない他の概念があるのでしょうか? 10個すべてでPythonスクリプトを実行する場合、GILを使用してどのように実行されますか? CPUのすべてのコア(私の場合は8つ)がPythonを実行するまでマルチプロセッシングモードで実行され、次に同時マルチスレッドに切り替えられますか?また、その詳細についてはどこで確認できますか?
答え1
これは、端末アプリケーションによって異なります。複数のxterm
端末を起動し、端末ごとに1つのプロセスを持つことができます。複数のタブをサポートする端末の場合は、システムコールを使用するマルチスレッドまたはシングルスレッドを使用してこれを実行できますselect
。このシステムコールは一連のファイル記述子を提供し、コンテンツを読み書きできる記述子のリストを返します。
端末がどのように実装されても、開いている端末数だけのシェル(または他のプログラム)プロセスがあります。 10個のPythonスクリプトを起動すると、10個の独立したプロセスがあります。各ロックにはグローバルソルバーロックがありますが、これはプロセス固有のロックです。 (あるプロセスでロックを獲得しても、他のプロセスがそのGILを獲得するのを防ぐことはできません。)