問題タブ [minix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
operating-system - Minix でのプロセスの優先順位とタイム スライスの調整、どこで、どのように行うか?
Minix でプロセスの優先度を変更しようとしています。schedule_process
今のところ、メソッドを変更することを考えていますminix/servers/sched/schedule.c
元のコードは次のようになります。
new_prio
、new_quantum
およびnew_cpu
値を割り当てる場所に介入することを検討しています。これは良い考えでしょうか?つまり、次のような行を追加するだけnew_prio=4;
で十分でしょうか? また、プロセスがカーネル プロセスであるかどうかを確認する方法はありますか? 優先度 0 がカーネル プロセスに似ていることはわかっていますが、すべてのカーネル プロセスの優先度の値は 0 ですか? プロセスの優先度が 0 より大きい場合にのみ、そのプロセスに新しい優先度を与えるとしたら、それはカーネル プロセスに介入しないということでしょうか?
質問が多すぎてすみません。前もって感謝します。
c - Cの「voidは期待されていません」
私はより大きなCプログラムに以下のコードを持っています。コンパイルしようとした今まで問題はありませんでした。これは Minix 2.0.4 で実行され、 を使用してコンパイルされてcc
います。次のようにコンパイル エラーがスローされます。
26 行目は、内部の単なる関数宣言main()
です。
initpool()
それ自体は、後でこのヘッダーを使用してプログラムで定義されます。
私が調査したところ、すべてが正しく、gcc
コンパイル エラーは発生しません。前の行はすべて;
s で終わっているはずなので、それは問題ではありません。cc
コンパイルに問題があるのはなぜですか?
編集:要求に応じて、26 行目までの行は次のとおりです (の先頭から始まり、main()
25 行目は空白です)。
server - Minix 3.2.1 の新しいサーバーへの syscall
minix で新しいサーバーを実装しました。「サービスアップ...」の後、正常に動作しているようで、メッセージを待ちます。クライアント ファイル内:
1) minix_rs_lookup("serverName",*pt) でエンドポイントを取得します
2)call _syscall(pt,...)
その後、私は得ています:
sys_call: IPC マスクが number1 から number2 への SENDREC を拒否しました
minix コードを検索したところ、私のプロセスがこのサービスを「呼び出さない可能性がある」ようです。
なぜそうなるのか、誰か説明してもらえますか?
c - スーパーユーザーが非特権ユーザーよりも多くの同時プロセスを実行できるのはなぜですか?
(注: 言及されたプログラムはクラスの課題のために書かれましたが、この質問は課題の一部ではありません。これは私自身の好奇心のためであり、他に答えを見つけることができません。)
クラスの割り当てのために、ユーザーが一度に実行できる同時プロセスの数を決定するプログラムを作成する必要がありました。私のプログラムはfork()
、制限に達したために -1 を返す前に特定の数のプロセスを作成し、それらのプロセスを終了して終了します。
として実行するとroot
、作成されたプロセスが 16 個カウントされてから終了します。これは理にかなっています。の Minix 2 のマニュアル ページでfork()
は、制限が のNR_PROCS
変数によって設定され、 /usr/include/minix/config.h
32 に設定されていると指定されています。root
は、プログラムによって作成された 14 個のプロセスに加えて 16 個のプロセスを実行しているため (シェルとプログラム自体の場合は +2)、そのため、合計 32 プロセスになります。
ただし、特権のないユーザーとして実行するとast
、プログラムは 13 のみを返します (したがって、11 のプロセスとシェルとプログラムの 2 つのプロセスのみが生成されます)。su ast
ユーザーとして実行するために使用してast
いますが、そのプロセスが考慮されているかどうかはわかりません。更新: as でログインするast
と、プログラムが 12 のプロセスを生成するため、シェルとプログラム自体に 2 つを追加すると、ast
14 の同時プロセスしか実行できないことを意味します (ユーザーは他のプロセスを実行していません)。
特に 1 つの変数だけがシステム制限を制御している場合に、スーパーユーザーと非特権ユーザーが実行できるプロセスの数に違いがあるのはなぜですか?
process - Minix で syscall が呼び出されると、新しいプロセスが作成されますか?
たとえば、minix のプログラムで write(...) を呼び出す場合。新しいプロセスが作成されますか (fork() のように)、または現在のプロセス内で行われますか? 多くのシステムコールを行うことは効率的ですか?