クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

プロセスとスケジューリングの基本

このレッスンのあとで: OSがプロセッサをプロセスで分け合うしくみを、説明することができる。

50分のレッスンコマンド2件毎日使う Linux コマンドのラボ:エンジニアが暗記している30のコマンド

プロセスとは動いているプログラム

プロセスとは、メモリに読み込まれて動いているプログラムのことです。OS(オペレーティングシステム)は、少ないプロセッサを、たくさんのプロセスで順番に分け合います。

コンビニのレジが1台で、客が5人並んでいる場面を考えてください。1人ずつ短い時間で順に会計すれば、どの客も少しずつ前に進みます。OSがプロセッサでしているのは、これと同じことです。

このレッスンのゴール

メモ

OSがプロセッサをプロセスで分け合うしくみを、説明することができる。

キーワード

ことばいみ
プロセス動いているプログラム
レディキュー実行できる準備ができたプロセスの待ち行列
タイムスライス1回にプロセッサを使える最大の時間
コンテキストスイッチプロセッサを使うプロセスを入れかえること
PCBプロセスの状態や番号を記録するOSの表
スケジューラ次に動かすプロセスを選ぶOSの部分

学生が入力するセルは、このプレビューでは空白です。

プロセスは状態を行き来する

プロセスは、いつも動いているわけではありません。ふつう、次の3つの状態のどれかにあります。

実行中は、プロセッサを使っている状態です。実行可能は、動ける準備ができて、順番を待っている状態です。待ちは、ディスクやネットワークが終わるのを待っている状態です。待っている間は、プロセッサを使いません。

Linuxで自分の状態を見る

Linux では、/proc/self/status というファイルが、今そのコマンド自身のプロセスの情報を見せます。

次のコマンドは、その中の State の行だけを出します。読んでいる grep が今動いているので、R (running) と出ます。R は実行中の頭文字です。

今のプロセスの状態を出す

コマンド
grep State /proc/self/status

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

切りかえるのがコンテキストスイッチ

プロセッサを別のプロセスに渡すとき、OSは今のプロセスの途中経過を保存します。プログラムカウンタとレジスタです。これをPCBに書きます。

次に、渡す相手のPCBから途中経過を読み戻します。この入れかえがコンテキストスイッチです。切りかえている間、利用者の仕事は進みません。

PCBに入っているもの

項目例役目
PID4162プロセスを指す番号
状態実行可能今どの状態か
プログラムカウンタ次の命令の番地再開する場所
レジスタの値計算の途中の数再開したときに元に戻す
メモリの情報ページテーブルの場所このプロセスのメモリの地図
開いているファイル3つ使っているファイルの一覧

学生が入力するセルは、このプレビューでは空白です。

切りかえの回数もLinuxは数える

Linux は、プロセスごとに切りかえの回数を数えています。自分から手放した回数と、時間切れで取り上げられた回数の2つです。

次のコマンドは、その2つの行の名前だけを出します。回数は動かすたびに変わるので、名前だけを取り出します。

切りかえ回数の項目名を出す

コマンド
grep ctxt /proc/self/status | cut -d: -f1

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

「プロセッサが1つでも、たくさんのプロセスが同時に実行される」と考える人が多くいます。1つの核は、ある一瞬には1つのプロセスしか実行しません。切りかえが速いので、同時に見えるだけです。本当に同時に動かせる数は、核の数までです。

ラウンドロビンは順番に少しずつ

ラウンドロビンは、レディキューの先頭から順に、決まった時間だけ動かす方法です。使い切って仕事が残るプロセスは、キューの最後に戻ります。

例として、必要な時間が5、3、1のプロセスP0、P1、P2を、タイムスライス2で動かします。次の表の通りです。

例: 5、3、1を、2ずつ

順動いたプロセス動いた時間残りそのあとのキュー
1P023P1, P2, P0
2P121P2, P0, P1
3P210 (終了)P0, P1
4P021P1, P0
5P110 (終了)P0
6P010 (終了)(空)

学生が入力するセルは、このプレビューでは空白です。

このラボとソースについて: 毎日使う Linux コマンドのラボ:エンジニアが暗記している30のコマンド

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。