• 検索結果がありません。

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 2-2- 応. Linux カーネルに関する知識 と IT 知識体系との対応関係は以下の通り 科目名 応. Linuxのカーネルに関する知識 Linux カーネル概

N/A
N/A
Protected

Academic year: 2021

シェア "OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 2-2- 応. Linux カーネルに関する知識 と IT 知識体系との対応関係は以下の通り 科目名 応. Linuxのカーネルに関する知識 Linux カーネル概"

Copied!
23
0
0

読み込み中.... (全文を見る)

全文

(1)

2-2-応. Linux カーネルに関する知識

1. 科目の概要

Linux オペレーティングシステムの中核をなすカーネルの動作について、メモリ管理、プ ロセス管理、といった基本動作の詳細と、カーネルによるファイルシステムやネットワー クの取り扱いについて、具体的な動作原理を説明する。

2. 習得ポイント

本科目の学習により習得することが期待されるポイントは以下の通り。 習得ポイント 説 明 シラバスの対応コマ 2-2-応-1. OS の基本構造とカーネルの役割 Linux OS の基本的な構造を説明する。また中心的な役割を担うカーネルの 基本的な機能として、プロセス管理、メモリ管理、ファイル管理、ネットワー ク、I/O などの概要を紹介する。 1 2-2-応-2. マルチタスクOS におけるプロセス の概念 「プロセス」の概念と、プロセスを切り替えて時分割でタスクを遂行するマル チタスクの概念について解説する。またOS が各プロセスを管理する手法に ついても言及する。 5 2-2-応-3. プロセスの切り替えとスケジューリ ングアルゴリズム コンテキストスイッチの概念に触れ、プロセスが切り替わるメカニズムの概要 を説明する。スケジューリングアルゴリズムの実際を紹介し、さらにその基礎 となる理論でもある待ち行列議論とマルコス連鎖について解説する。 2,5 2-2-応-4. 割り込みと時分割処理 CPU とその他デバイスの関係について整理し、「割り込み」の概念を説明す る。割り込みの種類や割り込みの管理など割り込みに関連するいくつかの話 題について触れ、さらに、カーネルにおける割り込み処理の概要を解説す る。また時分割処理に関わる基本的な事項を説明する。 3 2-2-応-5. システムコール 一般のアプリケーションからOS の機能を利用する際に使用するシステム コールを紹介する。システムコールの位置づけを説明し、システムコールが 呼ばれたときのOS 内部での振る舞いについて概説する。 3,4 2-2-応-6. プログラムとOS の動作モード プログラムが動作するプロセス空間という概念を説明し、その目的や特徴、 それぞれの空間でできることとできないことを示す。さらにシステムコールに よる動作モードの遷移について解説する。 4,5 2-2-応-7. 同期と排他制御 プロセスの同期や排他が必要になる状況(デッドロック等)やカーネルによる 管理について述べ、排他制御を実現するための実装技術やその背景となる 基礎論理について触れる。またカーネルの内部で排他制御が実装されてい る具体的な例を示して説明する。 4,5 2-2-応-8. メモリ管理 Linuxカーネルが取り扱うアドレス空間として、物理的なメモリ領域に対するア ドレス空間と仮想的なアドレス空間が存在し、それらは適宜マッピングされて 管理されること、「ページ」の概念等、基本的な原理を解説する。そしてペー ジングやページテーブルといった、ページ管理に用いられる基本的な技術 を紹介し、ページ管理の効果を説明する。 6 2-2-応-9 プロセス空間 プロセス空間を管理する方法の具体的な技術について説明する。デマンド ページング、ページキャッシュ、ページフォルト、スワップデーモンといった 個々の概念を解説する。 カーネル空間特有のメモリ確保の方法と、そのインタフェースについて解説 する。また、カーネル内でのメモリ確保特有の制限や、システムとして提供す るメモリ確保のアルゴリズムについても述べる。 7,8 2-2-応-10. ファイルシステム ファイルシステムの違いを意識することなくあらゆるファイルシステムへ一元 的にアクセスできるようにするための仮想ファイルシステムについて解説す る。またパイプやprocファイルシステムのような疑似ファイルシステムなどの特 別なファイルを説明し、その意義とメリットについて触れる。 9,10,11  【学習ガイダンスの使い方】 1. 「習得ポイント」により、当該科目で習得することが期待される概念・知識の全体像を把握する。 2. 「シラバス」、「IT 知識体系との対応関係」、「OSS モデルカリキュラム固有知識」をもとに、必要に応じて、 従来のIT 教育プログラム等との相違を把握した上で、具体的な講義計画を考案する。 3. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

(2)

3. IT 知識体系との対応関係

「2-2-応. Linux カーネルに関する知識」と IT 知識体系との対応関係は以下の通り。 科目名 1 2 3 4 5 6 7 8 9 10 11 2-2-応. Linuxのカーネルに関す る知識 Linuxカーネル概論 スケジューリング 割り込みと遅延 システムコール プロセス管理 メモリ管理(1):メモ リアドレスの変換機 構 メモリ管理(2):実メ モリとページの管理 メモリ管理(3):プロ セス空間の管理 ファイル管理(1): 仮想ファイルシステ ム ファイル管理(2): ファイルの操作 ファイル管理(3): 特殊ファイル 科目名 1 2 3 4 5 6 7 8 9 10 11 12 13 1 IT-IAS1.基礎的 な問題 IT-IAS2.情報セキュリティの仕 組み(対策) IT-IAS3.運用上

の問題 IT-IAS4.ポリシー IT-IAS5.攻撃 IT-IAS6.情報セキュリティ分野IT-IAS7.フォレンジック(情報証 拠) IT-IAS8.情報の 状態 IT-IAS9.情報セキュリティサー ビス IT-IAS10.脅威分 析モデル IT-IAS11.脆弱性 2 IT-SP1.プロ フェッショナル としてのコミュ ニケーション IT-SP2.コン ピュータの歴史 IT-SP3.コン ピュータを取り 巻く社会環境 IT-SP4.チーム ワーク IT-SP5.知的財産 権 IT-SP6.コン ピュータの法的 問題 IT-SP7.組織の中 のIT IT-SP8.プロ フェッショナル としての倫理的 な問題と責任 IT-SP9.プライバ シーと個人の自 由 3 IT-IM1.情報管理 の概念と基礎 IT-IM2.データ ベース問合わせ 言語 IT-IM3.データ アーキテクチャ IT-IM4.データモ デリングとデー タベース設計 IT-IM5.データと 情報の管理 IT-IM6.データ ベースの応用分 野 4 IT-WS1.Web技術 IT-WS2.情報アー

キテクチャ IT-WS3.デジタルメディア IT-WS4.Web開発 IT-WS5.脆弱性 IT-WS6.ソーシャルソフトウェア

5 IT-PF1.基本デー タ構造 IT-PF2.プログラ ミングの基本的 構成要素 IT-PF3.オブジェ クト指向プログ ラミング IT-PF4.アルゴリ ズムと問題解決 IT-PF5.イベント 駆動プログラミ ング IT-PF6.再帰 6 IT-IPT1.システ ム間通信 IT-IPT2.データ 割り当てと交換 IT-IPT3.統合的 コーディング IT-IPT4.スクリ プティング手法 IT-IPT5.ソフト ウェアセキュリ ティの実現 IT-IPT6.種々の 問題 IT-IPT7.プログ ラミング言語の 概要 7 CE-SWE0.歴史と 概要 CE-SWE1.ソフト ウェアプロセス CE-SWE2.ソフト ウェアの要求と 仕様 CE-SWE3.ソフト ウェアの設計 CE-SWE4.ソフト ウェアのテスト と検証 CE-SWE5.ソフト ウェアの保守 CE-SWE6.ソフト ウェア開発・保 守ツールと環境 CE-SWE7.ソフト ウェアプロジェ クト管理 CE-SWE8.言語翻 訳 CE-SWE9.ソフト ウェアのフォー ルトトレランス CE-SWE10.ソフト ウェアの構成管 理 CE-SWE11.ソフ トェアの標準化 8 IT-SIA1.要求仕

様 IT-SIA2.調達/手配 IT-SIA3.インテグレーション IT-SIA4.プロジェクト管理 IT-SIA5.テストと品質保証 IT-SIA6.組織の特性 IT-SIA7.アーキテクチャ

9 IT-NET1.ネット ワークの基礎 IT-NET2.ルー ティングとス イッチング IT-NET3.物理層 IT-NET4.セキュ リティ IT-NET5.アプリ ケーション分野 IT-NET6.ネット ワーク管理 CE-NWK0.歴史と 概要 CE-NWK1. 通信 ネットワークの アーキテクチャ CE-NWK2.通信 ネットワークの プロトコル CE-NWK3.LANと WAN CE-NWK4.クライ アントサーバコ ンピューティン グ CE-NWK5.データ のセキュリティ と整合性 CE-NWK6.ワイヤ レスコンピュー ティングとモバ イルコンピュー ティング CE-NWK7.データ 通信 CE-NWK8.組込み 機器向けネット ワーク CE-NWK9.通信技 術とネットワー ク概要 CE-NWK10.性能評 価 CE-NWK11.ネット ワーク管理 CE-NWK12.圧縮と 伸張 CE-NWK13.クラス タシステム CE-NWK14.イン ターネットアプ リケーション CE-NWK15.次世代 インターネット CE-NWK16.放送 11 IT-PT1.オペレー ティングシステ ム IT-PT2.アーキテ クチャと機構 IT-PT3.コンピュータインフ ラストラクチャ IT-PT4.デプロイ メントソフト ウェア IT-PT5.ファーム ウェア IT-PT6.ハードウェア 12 CE-OPS0.歴史と 概要 CE-OPS1.並行性 CE-OPS2.スケ ジューリングと ディスパッチ CE-OPS3.メモリ 管理 CE-OPS4.セキュ リティと保護 CE-OPS5.ファイ ル管理 CE-OPS6.リアル タイムOS CE-OPS7.OSの概 要 CE-OPS8.設計の 原則 CE-OPS9.デバイ ス管理 CE-OPS10.システ ム性能評価 13 CE-CAO0.歴史と 概要 CE-CAO1.コン ピュータアーキ テクチャの基礎 CE-CAO2.メモリ システムの構成 とアーキテク チャ CE-CAO3.インタ フェースと通信 CE-CAO4.デバイ スサブシステム CE-CAO5.CPUアー キテクチャ CE-CAO6.性能・ コスト評価 CE-CAO7.分散・ 並列処理 CE-CAO8.コン ピュータによる 計算 CE-CAO9.性能向 上 14 IT-ITF1.ITの一 般的なテーマ IT-ITF2.組織の 問題 IT-ITF3.ITの歴 史 IT-ITF4.IT分野 (学科)とそれに 関連のある分野 (学科) IT-ITF5.応用領 域 IT-ITF6.IT分野 における数学と 統計学の活用 CE-ESY0.歴史と 概要 CE-ESY1.低電力 コンピューティ ング CE-ESY2.高信頼 性システムの設 計 CE-ESY3.組込み 用アーキテク チャ CE-ESY4.開発環 境 CE-ESY5.ライフ サイクル CE-ESY6.要件分 析 CE-ESY7.仕様定 義 CE-ESY8.構造設 計 CE-ESY9.テスト CE-ESY10.プロ ジェクト管理 CE-ESY11.並行設 計(ハードウェ ア、ソフトウェ ア CE-ESY12.実装 CE-ESY13.リアル タイムシステム 設計 CE-ESY14.組込み マイクロコント ローラ CE-ESY15.組込み プログラム CE-ESY16.設計手 法 CE-ESY17.ツール によるサポート CE-ESY18.ネット ワーク型組込み システム CE-ESY19.インタ フェースシステ ムと混合信号シ ステム CE-ESY20.センサ 技術 CE-ESY21.デバイ スドライバ CE-ESY22.メンテ ナンス CE-ESY23.専門シ ステム CE-ESY24.信頼性 とフォールトト レランス 分野 組 織 関 連 事 項 と 情 報 シ ス テ ム ソ フ ト ウェ ア の 方 法 と 技 術 シ ス テ ム 基 盤 IT-IAS 情報保証 と情報セキュリ ティ IT-SP 社会的な 観点とプロ フェッショナル としての課題 応 用 技 術 IT-IM 情報管理 IT-WS Webシステ ムとその技術 CE-ESY 組込みシ ステム IT-IPT 技術を統 合するためのプ ログラミング 15 10 CE-NWK テレコ ミュニケーショ ン IT-PF プログラ ミング基礎 CE-SWE ソフト ウェア工学 IT-SIA システム インテグレー ションとアーキ テクチャ IT-NET ネット ワーク 複 数 領 域 に ま た が る も の IT-PT プラット フォーム技術 CE-OPS オペレー ティングシステ ム CE-CAO コン ピュータのアー キテクチャと構 成 IT-ITF IT基礎 コ ン ピュ ー タ ハー ド ウェ ア と アー キ テ ク チャ <IT 知識体系上の関連部分>

(3)

4. OSS モデルカリキュラム固有の知識

OSS モデルカリキュラム固有の知識として、Linux カーネルの機能の具体的な実装とコ マンドとが挙げられる。他の多くの項目は、一般的なオペレーティングシステムの機能に ついてLinux を通して習得する。 科目名 第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回 第10回 第11回 (1)OS の歴史 とLinux (1)マルチタス キング (1)割り込み (1)システム コール (1)プロセス管 理 (1)プロセス空 間とカーネル 空間 (1)実メモリの 管理 (1)スワップ (1)VFS (Virtual File System) (1)ファイルの 操作 (1)特殊ファイ ル (2)OS の概念 (2)プロセス (2)タイマー (2)同期と排 他 (2)シグナル (2)仮想アドレ ス空間 (2)動的メモリ 割り当て (2)デマンド ページング (2)inode、 super block、 directory (2)ファイルの リード/ライト (2)擬似ファイ ルシステム (3)Linux OS の基本構造 (3)コンテキス トスイッチング (プロセスディ スパッチ) (3)プロセス間 通信 (3)ページ変 換テーブル (3)ページ キャッシュ (3)ファイル操 作 (3)そのほか のファイル操 作 (3)ローカル ファイルシステ ム (4)カーネルの 基本機能 (4)プロセスス ケジューラ (4)TLB (Translation Lookaside Buffer) (4)ページフォ ルト (4)マウント (5)カーネルの 起動プロセス (5)マルチプロ セッサへの対 応 (5)メモリ キャッシュ (5)ガーベジコ レクション (5)アンマウン ト (6)参考 (6)スケジュー リングのアル ゴリズム (7)基礎理論 2-2-応 Linux カーネルに関 する知識 (網掛け部分はIT 知識体系で学習できる知識を示し、それ以外は OSS モデルカリキュラム固有の知識を示している)

(4)

習得ポイント 2-2-応-1. OS の基本構造とカーネルの役割 対応する コースウェア 第1回 Linux カーネル概論

2-2-応-1. OS の基本構造とカーネルの役割

Linux OS の基本的な構造を説明する。また中心的な役割を担うカーネルの基本的な機能として、 プロセス管理、メモリ管理、ファイル管理、ネットワーク、I/O などの概要を紹介する。 【学習の要点】 * LinuxOS の基本的な構造としては、中心にカーネルと呼ばれるプログラムが存在し、そのカーネ ルを取り囲むようにしてシェル・カーネルモジュール・アプリケーションプログラムが存在する。 * カーネルは、LinuxOS の中核となるプログラムで、プログラムをメモリに読み込んだり、プログラム 実行に必要な領域を確保したりする。その他にも、ファイルや周辺機器の管理や、ネットワーク と I/O の管理などを行う。 * シェルとは、ユーザから与えられた指示をカーネルが解釈できる形式に変換するプログラムであ る。 * カーネルモジュールとは、動的に追加されるプログラム部品である。 図 2-2-応-1. OS の基本構造 シェル ・ユーザの指示を カーネルに伝える アプリケーションプログラム ・定められた目的を 果たすためのプログラム アプリケーション プログラム カーネルの機能 ・プロセス管理 プログラムの実行とインタフェースの 提供 ・メモリ管理 安全なメモリアクセスの提供 ・ファイル管理 データの管理 ・デバイス管理 デバイスとドライバの検出 カーネル モジュール カーネル モジュール カーネルモジュール カーネルモジュール ・動的に追加される プログラム部品

(5)

1) Linux オペレーティングシステムの基本的な構造 LinuxOS には、その中心にカーネルと呼ばれる核となるプログラムが存在している。そのカーネル を中心に考え、カーネルを取り囲むようにシェルやカーネルモジュール、アプリケーションプログラ ムなどによって構成されている。 * シェルとは ユーザの操作を受け付けて、与えられた指示をカーネルが解釈できる形式に変換して伝えるソ フトウェアのことである。 * カーネルモジュールとは カーネルモジュールとは、Linux カーネルに対して動的に追加されるプログラム部品のことを示 す。デバイスドライバなどが、これに該当する。 * アプリケーションプログラムとは コンピュータの OS の上で実行され、定められた目的を果たすための機能を提供するプログラム のことを示す。ただし、ミドルウェアなどは含まれない。 2) カーネルの基本的な機能 カーネルとは、OS の中核となるプログラムである。基本的な機能は、以下の通りである。 * プロセス管理 プロセス管理とは、アプリケーションプログラムの実行を許可し、ハードウェアへのアクセスのた めのインタフェースをプログラムに提供することである。プログラムを実行するため、カーネルは プログラムのコードを含むファイルをメモリに読みこみ、プログラム実行に必要な専用領域(スタ ックと呼ぶ)を準備し、そのプログラムの所定の位置へ制御を渡すことで実行を開始する。 * メモリ管理 カーネルはアプリケーションプログラムの要求に応じて、安全なメモリアクセスを提供している。こ れは仮想アドレッシングと呼ばれる方式であり、この方式ではカーネルは物理アドレスを別のア ドレス(仮想アドレス)に変換する。アプリケーションプログラムは仮想アドレスから始まるメモリ空 間を自分のための空間と捕らえ、個々のプログラムが互いに他のプログラムのメモリ空間を破壊 することを防止している。 * ファイル管理 ファイル管理(ファイルシステム)は、コンピュータの資源を管理するための、OS が持つ機能の1 つである。ファイルとは、ハードディスクなどの補助記憶装置に格納されたデータを示している。 * デバイス管理 コンピュータに接続された周辺機器にアクセスするためには、カーネルを介してデバイスドライ バを使用し、アクセスを行う。起動時、カーネルは最初に様々なバス(PCI や USB)上をチェック して実装された周辺機器(デバイス)を検出し、対応するドライバを探す。カーネルの設計によっ てドライバの扱い方は異なるが、一般にカーネルはドライバが物理的にデバイスにアクセスする ための入出力ポートやメモリ空間を用意する。 * I/O 管理 外部からのコンピュータへのデータ入力、コンピュータから外部へのデータ出力の管理も行って いる。

(6)

習得ポイント 2-2-応-2. マルチタスク OS におけるプロセスの概念 対応する コースウェア 第5回 プロセス管理

2-2-応-2. マルチタスク OS におけるプロセスの概念

「プロセス」の概念と、プロセスを切り替えて時分割でタスクを遂行するマルチタスクの概念について 解説する。また OS が各プロセスを管理する手法についても言及する。 【学習の要点】 * プロセスとは、オペレーティングシステム上における処理の単位の1つであり、実行命令コード やプロセス固有データ・リソース記述子などで構成されている。 * オペレーティングシステムが、複数のプロセスを切り替えながら実行することをマルチタスクとい う。この場合、ユーザ側から見ると複数のプログラムが同時に実行されているように見える。 * プロセス管理は、カーネルの重要な機能の1つである。 図 2-2-応-2. マルチタスクの概念 プロセス | > | | > | | > | | > | プロセス マルチタスク 実行中 実行中 実行中 実行中 | > | | > | | > | | > | | > | | > | | > | | > | プロセス プロセス | | | > | | > | | > | 生成 走行可能 走行中 ブロック状態 終了 複数のプロセスを 切り替えながら 実行させている 時間軸

(7)

1) プロセスとは プロセスとは、オペレーティングシステム上における処理の単位の1つである。マルチタスク・オペレ ーティングシステムでは、多くのプロセスを並列的に実行させることが可能である。また、「ジョブ」と 表現されることもあるが、「ジョブ」がユーザ側から見た処理の単位であり、「プロセス」はコンピュー タ側から見た処理の単位を表している。プロセスは以下に示す資源で構成されている。 * 実行命令コード * プロセス固有データ * リソースの記述子 * セキュリティ属性 * プロセッサ状態 2) マルチタスクの概念 オペレーティングシステムが、複数のプロセスを切り替えながら実行することをマルチタスクという。 プロセスが切り替わりながら順次実行されるので、ユーザ側から見ると複数のプログラムが同時に 実行されているように見える。また、プロセスが入出力待ち状態となっても他のプロセスが実行され るため、全体として処理速度が向上する。 * プリエンプティブ・マルチタスク プリエンプティブ・マルチタスクとは、プロセスの切り替えにハードウェアタイマ割り込みを用いる 方法である。この場合、この割り込みによって一定時間内(タイムスライス)に OS に制御が戻る。 これは強制的に行われる。 * ノンプリエンプティブ・マルチタスク 各プロセス自身が、短い時間の間隔で OS に制御を戻すことによりマルチタスクが実現されてい る方法である。 3) プロセスの管理方法 プロセス管理とは、主にカーネルの重要な機能の1つである。カーネルはプロセスの生成・実行・消 滅などに関して、以下に示す状態への遷移を持って管理を行っている。 * 生成 最初に作成されるとこの状態となり、実行可能状態となるのを待つ。状態遷移を行うのはスケジ ューラである。 * 実行可能 メインメモリにロードされ CPU による実行を待っている状態。 * 実行中 これは現に CPU 上で実行されている状態。タイムスライスを使い切ると実行可能状態に戻り、プ ログラムが終了すれば終了状態となり、資源が不足した場合はブロック状態となる。 * ブロック状態 資源不足が発生し、かつ新しい資源の確保ができない状態。 * 終了状態 プロセスの実行終了によって、終了状態となる。

(8)

習得ポイント 2-2-応-3. プロセスの切り替えとスケジューリングアルゴリズム 対応する コースウェア 第2回 スケジューリング 第5回 プロセス管理

2-2-応-3. プロセスの切り替えとスケジューリングアルゴリズム

コンテキストスイッチの概念に触れ、プロセスが切り替わるメカニズムの概要を説明する。スケジュー リングアルゴリズムの実際を紹介し、さらにその基礎となる理論でもある待ち行列議論とマルコス連 鎖について解説する。 【学習の要点】 * マルチタスク・オペレーティングシステムにおいて、プロセスの切り替えを行う際には、コンテキス トスイッチが発生する。これは、CPU の状態を保存したり復元したりする過程のことである。 * スケジューラは、プロセスの切り替え先を決定するプログラムで、各プロセスはタイムスライスと呼 ばれる短い時間ずつ実行されたあと、切り替えられる。 * スケジューラは、CPU の負荷を公平かつ平等に分散させるために、スケジューリングアルゴリズ ムに基づいて、プロセスの制御を行う。 図 2-2-応-3. プロセスの切り替え タイムスライス マルチタスク プロセスの実行 スケジューラ 次に実行すべき プロセスを決定する 次に実行すべきプロセス 2番目に実行すべきプロセス 3番目に実行すべきプロセス 切り替れという指示

(9)

1) プロセスが切り替わるメカニズム マルチタスク・オペレーティングシステムにおいては、実行中のプロセスであっても途中で CPU の 使用を止め、他のプロセスに切り替えてそのプロセスに CPU の使用が可能となるようにしている。こ のプロセスの切り替えの際にコンテキストスイッチが発生する。 * コンテキストスイッチとは 複数のプロセスで CPU の共有が可能となるように、CPU の状態(コンテキスト)を保存したり、もし くは復元したりする過程のことである。 * タイムスライスとは プリエンプティブなマルチタスク OS では、スケジューラが各プロセスをある短い時間ずつ実行さ せる。この時間のことをタイムスライスと呼ぶ。 * スケジューラ 実行プロセスの切り替え先を決定するプログラムがスケジューラである。スケジューラは、優先度 つきキューで優先度を割り当てられたプロセスの制御を行う。 * 割り込み プロセスがタイムスライスの時間内に CPU の使用を止めなかった場合にはタイマ割り込みが発 生し、他のプロセスが実行される。 2) スケジューリングアルゴリズムとは スケジューラの目標は、CPU の負荷を公平かつ平等に分散させることである。スケジューラは、スケ ジューリングアルゴリズムに基づいてプロセスの制御を行う。一般的に知られているスケジューリン グアルゴリズムには、以下のようなものがある。

* FIFO (First In, First Out)

最も単純なスケジューリング方式のこと。言葉の通り、最初に発生したリクエストから待ち行列に 並べ、順次処理を行う。

* LIFO (Last In, First Out)

公平性に問題があり、使われていない。 * ラウンドロビンスケジューリング 待ち行列に並んでいる処理待ち状態のプロセスに対して、優先度などは設定せず順番に同じ タイムスライスを割り当てて、プロセススケジューリングを行う。 * 多段フィードバックキュー 短いプロセスや対話型のプロセスを優先し、プロセスの性質を迅速に把握しスケジューリングを 行う。UNIX の基本的なアルゴリズムである。 3) スケジューリングアルゴリズムの基礎となる理論 スケジューリングを行う際、各プロセスはキューと呼ばれる、コンピュータの基本的なデータ構造の 中に並べられる。キューは待ち行列とも呼ばれる。

(10)

習得ポイント 2-2-応-4. 割り込みと時分割処理 対応する コースウェア 第3回 割り込みと遅延

2-2-応-4. 割り込みと時分割処理

CPU とその他デバイスの関係について整理し、「割り込み」の概念を説明する。割り込みの種類や 割り込みの管理など割り込みに関連するいくつかの話題について触れ、さらに、カーネルにおける 割り込み処理の概要を解説する。また時分割処理に関わる基本的な事項を説明する。 【学習の要点】 * 割り込みが発生すると、CPU は現在実行中の処理を中断して、割り込みに対応する処理を実施 する。これは例えば、処理速度の遅い周辺機器が、処理の終了を割り込みによって通知するこ とで、この割り込みの発生まで CPU に他の処理を実行させることを可能とする。 * 周辺機器に障害が発生した場合なども、割り込みを用いることで、その旨を速やかに伝えること が可能となる。 * タイムシェアリングシステムにおいては、タイムスライスの時間内に CPU の使用が止まらなかった 場合に、タイマ割り込みが発生する。 図 2-2-応-4. 割り込みの目的 割り込みの目的 ・処理の終了 処理速度の遅い周辺機器 から、処理の終了を伝える ・応答性の向上 キーボードやマウスからの 入力を伝える ・例外処理 障害発生を伝える ・正確なタイミングの取得 通常処理 割り込み処理 割り込み発生

(11)

1) CPU が周辺機器からの要求を受け取る方法 コンピュータがその周辺機器などから受け取る要求のことを割り込みと呼ぶ。コンピュータは割り込 みが発生すると現在の実行中の処理を中断して、割り込みに対応するための処理を行う。割り込 みの目的を以下に記す。 * CPU 資源の有効利用 処理速度の遅い周辺機器から、処理の終了を割り込みによって通知させることで、周辺機器が 処理を行っている間でも、CPU が他の処理を効率よく行える。 * 応答性の向上 キーボード、マウスなどのユーザインターフェースは、割り込みを使ってユーザの入力を確実に 処理することで、入力の遅延や入力漏れがなどの問題を回避することが可能となる。 * 例外処理の効率化 例えば周辺機器に何らかの障害が発生した場合であっても、割り込みを用いていることでプロ グラム側にその旨を速やかに伝えることが可能となる。 * 正確なタイミングの取得 正確なタイミングで処理を行う必要のある機器を制御する場合、その機器が持っている正確な タイマによりタイマ割り込みを行い、CPU 側に処理のタイミングを指示することが可能となる。 2) 割り込みの種類 CPU の割り込みは、大きくわけて「ハードウェア割り込み」と「ソフトウェア割り込み」に分類できる。 * ハードウェア割り込み CPU の外部から要求され、CPU の割り込み要求端子に対して電気的な信号に変化を与えるこ とで発生する。 * ソフトウェア割り込み ソフトウェア割り込みは、割り込みを発生させるための命令により発生する。例外としてゼロ除 算・オーバーフロー・ページフォルトなどによってもソフトウェア割り込みは発生する。 3) 割り込みの管理 ハードウェア割り込みにせよソフトウェア割り込みにせよ、CPU に割り込みが生じると、現在実行し ているプロセスを中断させ割り込みハンドラもしくは割り込みサービスルーチンと呼ばれる処理が実 行される。また、これら割込処理の終了後には、元のプロセスが中断した箇所から再開されるように、 元のプロセスに関する情報(アドレスや作業状態)を、保存しておく。この過程をコンテキストスイッ チという。 * タイマ割り込み タイムシェアリングシステムにおいては、プロセスがタイムスライスの時間内に CPU の使用を止 めなかった場合には、タイマ割り込みが発生し他のプロセスの実行が開始される。この場合にも、 同様の割り込み管理が行われている。

(12)

習得ポイント 2-2-応-5. システムコール 対応する コースウェア 第3回 割り込みと遅延 第4回 システムコール

2-2-応-5. システムコール

一般のアプリケーションから OS の機能を利用する際に使用するシステムコールを紹介する。システ ムコールの位置づけを説明し、システムコールが呼ばれたときの OS 内部での振る舞いについて概 説する。 【学習の要点】 * システムコールとは、アクセスできない保護領域にアクセスすることや、保護されたレジスタを操 作するなど、カーネルの持つ特殊な機能を利用する場合に使用する仕組みのことである。 * Linux では約300種類のシステムコールが用意されており、CPU の動作モードなどを変更するこ とも可能である。 * システムコールは、そのほとんどがソフトウェア割り込みによって実行されているため、その処理 方法は一般の割り込み処理と同様である。 図 2-2-応-5. システムコール システムコール ・カーネルの持つ特殊な機能を利用する *アクセスできない保護領域へのアクセス *保護されたレジスタの操作 *CPUの動作モードの変更 アプリケーション カーネル (特殊な 機能)

(13)

1) システムコールとは システムコールとは、一般のアプリケーションがカーネルの持つ特殊な機能を利用する場合に使用 する仕組みのことである。 * システムコールにより、何が可能となるのか 一般のアプリケーションがシステムコールを利用することで何が可能となるのかを、以下に示 す。 - 通常のアプリケーションプログラムからはアクセスできない保護されたメモリ領域にアクセス することが可能となる。 - 保護されたレジスタを操作することが可能となる。 - 自ら CPU の動作モードを変更することが可能となる。 * システムコールは、何種類程度用意されているのか。 Linux では、約 300 種類用意されている。FreeBSD も同様に約 330 種類のシステムコールが用 意されている。 * システムコールの例 異なる UNIX OS の実装のために共通の API を定め、移植性の高いアプリケーションプログラム の開発を容易にするため、IEEE が策定した API 規格のことを POSIX という。この POSIX での主 要なシステムコールには、open,read,write,close,wait,fork,execve,kill 等が用意されてい る。 2) システムコールの処理方法 システムコールは、ほとんどの場合において、ソフトウェア割り込みによって実行されている。そのた め、ソフトウェア割り込みを処理することと同じ処理が、システムコールの実行においても実行され ている。 * システムコールが呼び出されたとき - システムコールを呼び出したプロセスはそのタイミングで中断される。 - システムコール終了後にプロセスの再開を可能とするためにコンテキストが保存される。 - CPU の動作モードを高い動作モードに遷移させる。 - システムコールの番号や引数を調べ、必要な処理が実行される。 - ただし、呼び出したプロセスのアクセス権を考慮して、指定されたシステムコールを実行す る権利があるかチェックを行う。 - システムコールが実際に処理される。 - 呼び出したプロセスを再開させるため、保存したコンテキストを取り出す。 * ただし、呼び出したプロセスが即座に再開されない可能性がある。 システムコールでは時間を要する処理を実行することがある。システムコールを呼び出したこと により、呼び出し元のプロセスは中断されるが、システムコールが完了するまでは「実行可能」キ ューに並べられている。システムコールが完了すると、OS はそのプロセスを実行が可能なプロ セスの候補の1つとして扱うためである。

(14)

習得ポイント 2-2-応-6. プログラムと OS の動作モード 対応する コースウェア 第4回 システムコール 第5回 プロセス管理

2-2-応-6. プログラムと OS の動作モード

プログラムが動作するプロセス空間という概念を説明し、その目的や特徴、それぞれの空間ででき ることとできないことを示す。さらにシステムコールによる動作モードの遷移について解説する。 【学習の要点】 * マルチタスク機能であれば、複数のプロセスがタイムスライスとして定められた時間で切り替わり ながら、処理を行っている。そのため、処理が完全に終了していないプロセスに関しては、何度 も再開されることになる。 * プロセス毎に割り当てられたアドレス空間のことを、プロセス空間とよぶ。他のプロセスからは一 切参照されることがないため、データの破壊などは発生しない。 * Linux カーネルはスーパーバイザモードで動作し、一般のアプリケーションはユーザモードで動 作している。アプリケーションプログラムによりシステムコールが呼び出された場合、CPU の動作 モードはスーパーバイザモードへ遷移する。 図 2-2-応-6. OS の動作モードとシステムコールによる遷移 アプリケーション プログラム システムコール アプリケーションプログ ラムが呼び出すシステ ムコールにより、ソフト ウェア割り込みが発生 し、CPUのモードがス ーパバイザモードに 遷移する。 ユーザモード CPUの動作に 制限が加えら れている 全ての操作が 可能である スーパバイザモード

(15)

1) プログラムの動作 Linux カーネルはマルチタスク機能を提供している。そのため、同時に複数のプロセスを実行する ことが可能である。 * プログラムとプロセスの関係 プログラムが実行されている状態とは、プロセスが実行されている状態である。ただし、1プログ ラムにつきプロセスは1つだけとは限らない。1つのプログラムを起動させることで、複数のプロ セスが起動するものもある。 * 複数のプロセスを同時に起動させるということ マルチタスク機能が提供されているため、同時に複数のプロセスの実行が可能ではあるが、実 際にある一時点で動作しているプロセスの数は、当該システムに搭載されている CPU 数以上に は決してならない。実際はマルチタスク機能が、複数のプロセスを細かく切り替えながら動作さ せ、いかにも同時動作しているような環境を作り出しているだけである。 * 複数のプロセスを切り替えながら動作させるということ プリエンプティブ・マルチタスクであれば、タイムスライスとして定められた短い時間でプロセスの 切り替えが行われる。ほかにも割り込みの発生などでもプロセスの切り替えが発生する。 * 切り替えられたプロセスを再開するには 処理が完全に終了していないプロセスは、マルチタスクの機能により何度でも再開されることに なる。このため、正常にプロセスを再開させるために個々のプロセスは固有のコンテキストを保 存している。コンテキストとは、そのプロセスが動作するためのプロセス空間、そのプロセスが動 作するときのレジスタ値などである。 * プロセス空間とは プロセス毎に割り当てられる独立した論理アドレス空間のことをプロセス空間と呼ぶ。個々のプ ロセスからアクセス可能なメモリ空間とは、このプロセス空間のことであり、他のプロセスからは一 切参照することはできない。プロセス間ではデータの授受は行えないが、他のプロセスからデー タを破壊されることもない。 2) 動作モードの遷移 現代の CPU は一般的にいくつかの特権モードで命令を実行している。例えば2つのモードを持つ CPU では、それぞれをスーパーバイザモードとユーザモードと呼んでいる。このようなモードは、セ キュリティと安定性を維持するために必要とされている。Linux カーネルはスーパーバイザモードで 動作し、一般のアプリケーションプログラムはユーザモードで動作する。一般のアプリケーションプ ログラムにより呼び出されるシステムコールは、ソフトウェア割り込みを用いて CPU の動作モードを スーパーバイザモードへ遷移させる。 * スーパーバイザモード CPU はその全ての操作が可能である(ハードウェア構成によっては不可能な操作もある)。任意 の命令を実行でき、入出力操作を開始でき、全メモリ空間にアクセスを行うことが可能である。 * ユーザモード ハードウェアによって CPU の動作に制限が加えられる。例えば、一部の命令が実行できなかっ たり、入出力操作ができなかったり、メモリ空間の一部にアクセスできなかったりなどである。

(16)

習得ポイント 2-2-応-7. 同期と排他制御 対応する コースウェア 第4回 システムコール 第5回 プロセス管理

2-2-応-7. 同期と排他制御

プロセスの同期や排他が必要になる状況(デッドロック等)やカーネルによる管理について述べ、排 他制御を実現するための実装技術やその背景となる基礎論理について触れる。またカーネルの内 部で排他制御が実装されている具体的な例を示して説明する。 【学習の要点】 * マルチタスクは、排他制御機能を利用して資源の保護を行っているが、排他制御には欠陥があ り、デッドロックなどが発生してしまう可能性がある。 * システム構築の際には、オブジェクト指向プログラミングなどを利用して、デッドロックが発生しな いように注意すべきである。 * 排他制御を実現するための実装技術には、様々なものがある。また、カーネル内部でも排他制 御は様々な箇所で使用されている。 図 2-2-応-7. 排他制御 カーネル プロセス プロセス プロセス プロセス プロセス 排他制御 機能 1つのプロセスにのみ資源を 独占的に使用させて、他の プロセスには使用させない 資源

(17)

1) デッドロックとは デッドロックとは、2つ以上のプロセスなどがお互いに相手の処理終了を待ち、結果的にプロセスが 停止してしまうことを言う。 * デッドロックは、排他制御の欠陥である。 マルチタスク機能においては計算機上の同一の資源に対して、複数の処理が同時期に実行さ れても資源が破壊されることのないように、複数のプロセスに対して排他制御を要求するため、 結果として該当する全てのプロセスが他のプロセスの処理終了を待ってしまうことがある。そして デッドロックが発生する。 * プロセス間の同期。 マルチタスク機能は、特定のプロセスが何らかのイベントを起こすまで、その他のプロセスに処 理の続行を待たせることで、プロセス間の同期をとる場合がある。 * 排他制御とは。 複数のプロセスからの同時アクセスにより競合が発生する場合は、1つのプロセスにのみ資源を 独占的に利用させて、他のプロセスが利用できないようにする事で整合性を保つ必要がある。 この処理を排他制御と呼ぶ。 * デッドロックを回避するために。 これを回避するためには、以下に示すような方法が存在する。 - オブジェクト指向プログラミングを用いてシステムを構築する。 - Lock-free と Wait-free アルゴリズムを用いる。 2) 排他制御を実現するための実装技術 プロセスが特定の資源を占有しようとする場合は、以下に示す操作を実施する必要があるが、この 操作の途中で他のプロセスに制御が渡ってしまうと資源は書き換えられてしまう。 * 資源が他のプロセスによって占有されていないことを確認する。 * 資源を占有する。 排他制御を実現するための実装技術としては、以下に示すようなものがある。 * ミューテックス - 単純な相互排除 * セマフォ - k-相互排除 * 同期 * ロック * スピンロック * タスク切り替え禁止 * 割り込み禁止 3) カーネル内部での排他制御 カーネル内部でも排他制御は様々な箇所で使用されている。メモリ管理、デバイス管理、およびマ ルチプロセッサ管理機構などである。

(18)

習得ポイント 2-2-応-8. メモリ管理 対応する コースウェア 第6回 メモリ管理(1)

2-2-応-8. メモリ管理

Linux カーネルが取り扱うアドレス空間として、物理的なメモリ領域に対するアドレス空間と仮想的な アドレス空間が存在し、それらは適宜マッピングされて管理されること、「ページ」の概念等、基本的 な原理を解説する。そしてページングやページテーブルといった、ページ管理に用いられる基本的 な技術を紹介し、ページ管理の効果を説明する。 【学習の要点】 * Linux には仮想アドレス空間の概念があり、プロセス毎に独立して管理されている。プロセスは 仮想アドレスを用いて仮想アドレス空間にアクセスするが、この際仮想アドレスから物理アドレス へのアドレス変換が行われている。 * アドレス空間は、ページと呼ばれる決まった単位に分割されて管理される。 * 仮想記憶の仕組みにより、プロセスは二次記憶などの主記憶以外のメモリシステムに存在する ことができ、物理アドレス空間よりも広い空間を使用することができる。 * ページングの仕組みにより、主記憶と二次記憶の内容の交換が自動的に行われる。 * 仮想アドレス空間は、カーネル用に予約されたカーネル空間と、ユーザプロセスが利用可能な ユーザ空間とに分けられる。 図 2-2-応-8. アドレス空間 仮想ページ 仮想ページ 物理アドレス空間 仮想アドレス空間 プロセス構造体 二次記憶 物理ページ 物理ページ を参照 二次記憶 を参照 仮想ページ を参照

(19)

1) 物理アドレス空間と仮想アドレス空間 * 物理アドレス空間 - CPU が直接アクセスすることのできる、「主記憶(メインメモリ)」のもつアドレス空間。 * 仮想アドレス空間 - 物理アドレス空間とは独立して仮想的に管理されるアドレス空間。その領域すべてが主記 憶上に存在している必要がなく、一部の領域が二次記憶上に存在することが可能。 * アドレス空間は、一定の大きさを持った「ページ」と呼ばれる単位で分割される。全てのページ は「ページ番号」が付与され、「ページテーブル」という構造体で管理される。ページの大きさ (「ページサイズ」)はアーキテクチャによって異なるが、必ず 2^n バイトである。 * プロセスの観点から見ると、システムに搭載されている主記憶のアドレス空間よりも広いアドレス 空間を扱うことができる。仮想アドレス空間はプロセスに対して透過的であり、プロセスから見る と連続したメモリ領域である。 * システムの観点から見ると、変換先の物理アドレス空間は必ずしも連続である必要はなく、効率 的にメモリを利用することができる。また、利用頻度の低いページを二次記憶に退避させておく ことで、より効率的にメモリを利用することができる。 * 仮想アドレス空間のメモリ領域を予め物理メモリに展開せず、アクセスされたときに物理メモリを 確保して割り当てる方式を「デマンドページング」という。 2) ページイン/ページアウト 仮想アドレス空間上のページ番号から、物理アドレス空間上のページ番号への対応付け(「アドレ ス変換」)は、カーネルとメモリ管理ユニット(MMU)が連携して行う。

* TLB (Translation Lookaside Buffer)

MMU の中には、アドレス変換をより高速に行うために「TLB (Translation Lookaside Buffer)」を 持つものがある。TLB は、直近のアドレス変換を保持するキャッシュとして働く。 * ページ置換 主記憶に空きがない場合、システムは利用頻度の低いページを二次記憶に移動させ、主記憶 の空き容量を確保する。これを「ページアウト」という。どのページを退避させるかは、OS の「ペ ージ置換アルゴリズム」により異なる。 * アドレス変換とページング CPU が仮想アドレスを元に物理アドレスにアクセスする際には、TLB→ページテーブルという順 序で、ページの対応付けを参照する。対応する物理ページが見つからない場合は、カーネル に「ページフォルト」割り込みが送られ、二次記憶から物理メモリ上にページを読み込む。これを 「ページイン」という。 3) カーネル空間とユーザ空間 * 通常のプロセスが置かれる仮想アドレス空間を「ユーザ空間」といい、カーネルプログラムが置 かれる領域を「カーネル空間」という。 * カーネル空間とユーザ空間は厳密に分離され、通常のプロセスがカーネル空間に直接アクセ スすることはできない。

(20)

習得ポイント 2-2-応-9. プロセス空間 対応する コースウェア 第7回 メモリ管理(2) 第8回 メモリ管理(3)

2-2-応-9. プロセス空間

プロセス空間を管理する方法の具体的な技術について説明する。デマンドページング、ページキャ ッシュ、ページフォルト、スワップデーモンといった個々の概念を解説する。 カーネル空間特有のメモリ確保の方法と、そのインタフェースについて解説する。また、カーネル内 でのメモリ確保特有の制限や、システムとして提供するメモリ確保のアルゴリズムについても述べる。 【学習の要点】 * プロセス空間とカーネル空間とで、メモリ確保の方式に違いがあることを学習する。 * デマンドページングの概念について学習する。付帯概念として、ページキャッシュ・スワップデ ーモン等について併せて学習し、デマンドページングの利点を確認する。 * カーネル空間は通常ページング不可能である。 * カーネルが使用できるメモリ領域には制限がある。このため現実的には、カーネルがメモリ領域 を必要とする際には動的に確保する必要がある。 * カーネルがメモリを動的に割り当てるために、必要とされるサイズや高速性要件に適したいくつ かの異なるアルゴリズムとそれに対応するインタフェースが用意されている。 図 2-2-応-9. 階層化されたメモリ管理システム

メモリ管理ハードウェア

アドレス変換レイヤ

ページレベルアロケータ

カーネルメモリ

アロケータ

ページング

システム

Rohit Dube, 1998, A Comparison of the Memory Management sub -systems in FreeBSD and Linux メモリ管理ハードウェアの抽象化し、 上位レイヤにハードウェアに依存しない インタフェースを提供。 仮想アドレスを物理アドレスに変換、 ページフォルトをOSに報告。 上位レイヤにページインタフェースを提供。 カーネルメモリアロケータは、カーネルと カーネルモジュール用にメモリを確保し、 ページングシステムはユーザプロセス用に メモリを確保する。

(21)

1) メモリ確保の構成要素 カーネルがメモリを確保する方式と、ユーザプロセスがメモリを確保する方式は別である。これはそ れぞれにおいて、求められる特性が違うからである。 * ページングシステム ページングシステムは「デマンドページング」や「スワッピング」ポリシーを実装するものである。 主にユーザプロセスに対してメモリ確保の仕組みを提供する。 * カーネルメモリアロケータ カーネル内で必要なメモリを確保するための仕組みである。カーネル内で利用されるメモリは以 下の特徴を満たす必要があり、Linux では「バディシステム」や「スラブアロケータ」の仕組みによ り実現している。 - 使用するメモリのほとんどはページング不可能である。 - 通常、アドレス固定の連続した物理メモリ領域を必要とする。 - 高速性が最も重要となる。多くの場合、カーネルは即座に(処理をブロックすることなしに) メモリ領域を確保する必要がある。 2) メモリの効率的な利用 * デマンドページング プロセスが実行するためには物理メモリ領域が必要であるが、起動時点でプロセス全体が物理 メモリ上に存在する必要はない。必要に応じて物理メモリに読み込む仕組みを、「デマンド(要 求時)ページング」と呼ぶ。メモリ領域を節約でき起動も速いが、初めてアクセスされるページは、 ページフォルト処理や読み込みのコストがかかるため遅延が発生する。 * ページキャッシュ 一旦、二次記憶から物理メモリに読み込まれたページのうち、読み込み専用で共有可能なもの は、ページアウトせずに再利用することができる。この仕組みを「ページキャッシュ」という。 * スワップデーモン ページキャッシュによりシステム全体の速度を向上させることができるが、キャッシュが溜まるに つれて物理メモリ領域を圧迫することになる。空きページの不足の検知、適切なページキャッシ ュの縮小・ページアウトを行う仕組みが必要である。Linux では「kswapd」がこれを担当する。 3) カーネル内での動的メモリ領域確保の仕組み * 動的メモリ領域確保用インタフェース カーネル内では、以下のインタフェースでメモリの確保/解放を行う。 - kmalloc(), kfree() カーネルが連続した物理メモリ領域を確保するために使用。物理メモリ上に連続した領域を 確保することで、空間的局所性が得られ、TLB を最大限活用できるため高速である。 - vmalloc(), vfree() 仮想メモリ領域から仮想的に連続したメモリ領域を確保するために使用。kmalloc(), kfree()と 異なり、物理メモリ領域上では連続しているとは限らない。このため、速度は劣るものの大き な領域を確保することができる。

(22)

習得ポイント 2-2-応-10. ファイルシステム 対応する コースウェア 第9回 ファイル管理(1) 第 10 回 ファイル管理(2) 第 11 回 ファイル管理(3)

2-2-応-10. ファイルシステム

ファイルシステムの違いを意識することなくあらゆるファイルシステムへ一元的にアクセスできるよう にするための仮想ファイルシステムについて解説する。仮想ファイルシステムの概念と特徴を説明 し、実際に操作がどのように行われるかについて示す。またパイプや proc ファイルシステムのような 疑似ファイルシステムなどの特別なファイルを説明し、その意義とメリットについて触れる。 【学習の要点】 * 仮想ファイルシステムは、ファイルシステムの上位層に存在し、異なるファイルシステムに対して 透過的な操作を実現する共通インタフェースである。 * ext3、NFS、CIFS、proc 等のファイルシステムが Linux においてどのように実現されているかを学 習し、仮想ファイルシステムインタフェースを持つファイルシステムを新しく定義することができる ことを確認する。 * スペシャルファイルと通常のファイルの違いを確認し、スペシャルファイルへの入出力はカーネ ル内部でデバイスドライバに転送されることを学習する。 * デバイスドライバは、キャラクタデバイスとブロックデバイスの 2 つのインタフェースを提供する。 * スペシャルファイルは必ずしもデバイスと関連づいている必要はない。FIFO は名前付きパイプ を実現するために使用されるスペシャルファイルである。 図 2-2-応-10. 仮想ファイルシステムインタフェース システムコールインタフェース 仮想ファイルシステムインタフェース ext3 NFS 疑似ファイル システム (proc) メモリファイル システム (tmp) デバイスドライバ ハードウェア ユーザプロセス open/close read/write

(23)

1) 仮想ファイルシステムインタフェース * Linux では、異なるファイルシステム実装に対して画一的なシステムコールでアクセスできるよう、 仮想ファイルシステム (VFS) 層が設けられており、ローカルファイルシステムやネットワークファ イルシステム (NFS) といった違いを意識せずに、共通のインタフェースを使ってファイルの読 み書きを行うことができる。 * VFS を利用し、通常のファイルへのアクセスと同様の手段を用いてカーネル内部の情報をユー ザに提供することができる。このような仕組みは疑似ファイルシステムと呼ばれ、Linux の procfs や sysfs はこの例のひとつである。

* sys ファイルシステムは、Linux カーネル 2.6 から導入された。従来 proc ファイスシステムを通し て得られた情報のうち、プロセスに関わらない部分はこちらに移された。 * tmpfs は、仮想記憶常駐型のファイルシステムである。ファイルはカーネル内のキャッシュ (ペー ジキャッシュとスワップ) に置かれ、揮発性である。tmpfs は通常/tmp にマウントされる。 * 仮想ファイルシステムは、ファイルシステムの実装に依存しない抽象的なインタフェースを提供 する。このインタフェースを実装することで、独自のファイルシステムを構築することができる。 2) デバイスドライバ * カーネル内部ではハードウェアデバイスの特性はデバイスドライバで表される。デバイスドライバ は、ハードウェアデバイスからの割り込み処理と、ユーザプロセスまたはカーネルからの入出力 要求を処理する。 * ハードウェアデバイスは、その入出力の種類によってブロックデバイスとキャラクタデバイスに分 けられる。 - ブロックデバイス ランダムアクセスの可能なデバイス。構造的な入出力を要求する。 - キャラクタデバイス シーケンシャルアクセスのみが可能なデバイス。入出力は、非構造的なバイト列で行われ る。 * ハードウェアデバイスは、カーネルによってファイルシステム上のファイルとして表現される。この ようなファイルをスペシャルファイルという。

* デバイスドライバは、ユーザプロセスの呼び出す read, write, poll といったシステムコールに対応 するエントリポイントを実装し、ユーザプロセスはスペシャルファイルに対するシステムコールに よってハードウェアデバイスを操作することになる。 * デバイスドライバは、必ずしもハードウェアデバイスと通信する必要はない。/dev/null (出力を破 棄) や、/dev/random (乱数を発生) は、擬似デバイスと呼ばれる。 3) 他のスペシャルファイル * デバイスドライバのほかに、名前付きパイプや UNIX ドメインソケット等のスペシャルファイルがあ る。この二つは主にプロセス間通信の手段として用いられる。

参照

関連したドキュメント

を占めている。そのうち 75 歳以上の後期高齢者は 1,872 万人(14.9%)、80 歳以上は 1,125 万

Merkl and Rolles (see [14]) studied the recurrence of the original reinforced random walk, the so-called linearly bond-reinforced random walk, on two-dimensional graphs.. Sellke

第20回 4月 知っておきたい働くときの基礎知識① 11名 第21回 5月 知っておきたい働くときの基礎知識② 11名 第22回 6月

 英語の関学の伝統を継承するのが「子どもと英 語」です。初等教育における英語教育に対応でき

 本計画では、子どもの頃から食に関する正確な知識を提供することで、健全な食生活

• Apply in a minimum of 5 gallons water per acre by air or 10 gallons spray solution per acre by ground.. • Do not exceed 3 applications or 3.4 fl oz/acre

  NACCS を利用している事業者が 49%、 netNACCS と併用している事業者が 35%おり、 NACCS の利用者は 84%に達している。netNACCS の利用者は netNACCS

税関手続にとどまらず、輸出入手続の一層の迅速化・簡素化を図ることを目的