Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

Linux概要 - UNIXカーネルの概要(2)

Last updated at Posted at 2025-02-27

プロセスの実装について

コンピュータのOS(オペレーティングシステム)は、同時に複数のプログラムを実行するために プロセス という単位で管理を行います。各プロセスは、カーネルによって プロセスディスクリプタ(Process Descriptor)というデータ構造で表され、現在の状態を記録しています。

プロセスの状態管理

プロセスは実行中だけでなく、待機中や停止中のこともあります。そのため、カーネルはプロセスの状態を適切に保存し、必要に応じて再開できるようにする仕組みを持っています。

例えば、あるプロセスの実行を一時的に停止する際、カーネルは プロセッサレジスタ(CPUの作業用メモリ)の内容をプロセスディスクリプタに保存します。レジスタには以下のような種類があります。

レジスタの種類

  • プログラムカウンタ(PC)・スタックポインタ(SP)

    • プログラムカウンタ(PC) は、CPUが次に実行すべき命令のアドレスを保持します。
    • スタックポインタ(SP) は、関数の呼び出し時に使うメモリ(スタック)の位置を指します。
  • 汎用レジスタ

    • 計算やデータの一時保存など、さまざまな用途で使用されます。
  • 浮動小数点レジスタ

    • 小数や科学計算などの演算に特化したレジスタです。
  • プロセッサ制御レジスタ

    • CPUの動作を制御するための特殊なレジスタです。
  • メモリ管理レジスタ

    • プロセスごとに異なるメモリ領域を管理するためのレジスタです。

プロセスの実行再開

プロセスを再開する場合、カーネルは プロセスディスクリプタ に保存しておいたレジスタの内容をCPUに復元します。特に プログラムカウンタ(PC) に保存された値を読み込むことで、プロセスは停止した場所から実行を続けることができます。

この仕組みによって、OSは複数のプロセスをスムーズに切り替えながら実行することができます(コンテキストスイッチ と呼ばれます)。

プロセスの待機状態と管理

CPU上で実行されていないプロセスは、多くの場合 何らかの事象(イベント)を待機 しています。例えば、次のような場面でプロセスは待機状態になります。

  • 入出力(I/O)待ち:ファイルの読み書きが完了するのを待つ
  • ユーザー入力待ち:キーボードやマウスの操作を待つ
  • 他のプロセスの処理待ち:特定のタスクが終わるのを待つ

UNIXカーネルでは、こうした 待機中のプロセスを管理するためのキュー(待ち行列) を用意しています。各キューには、特定の事象を待っているプロセスが登録されており、イベントが発生するとキューから取り出され、再び実行可能な状態になります。

この仕組みにより、OSは無駄なくプロセスを制御し、システム全体の効率を向上させています。

まとめ

  • OSは プロセスディスクリプタ を使って各プロセスを管理する。
  • 実行中のプロセスを停止する際、カーネルは レジスタの情報を保存 し、再開時に復元する。
  • プログラムカウンタ(PC) を利用することで、停止した場所から再開できる。
  • プロセスは イベントを待つ間、キューに登録 され、適切なタイミングで実行再開する。

このような仕組みによって、OSは複数のプロセスをスムーズに切り替えながら、安定して動作しています。

次の記事へ

前の記事へ

一覧へ戻る

免責事項
本記事は、筆者の理解に基づいて執筆したものです。正確性には十分配慮していますが、内容の誤りや最新の情報と異なる可能性があります。
本記事の内容を参考にしたことによるいかなる損害についても、筆者は責任を負いかねますのでご了承ください。
正確な情報や書籍に書かれている根拠等はサポートしませんので、ご自身で公式ドキュメントをお調べください。
よって、この内容をAIの学習データに活用することはおすすめしません。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?