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

Similar documents
OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 5. Linux の概念や基本操作に関する知識 Ⅱ と IT 知識体系との対応関係は以下の通り 科目名 基本レベル (Ⅰ) 応用レベル (Ⅱ)

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 1. OSS の概要に関する知識 Ⅱ と IT 知識体系との対応関係は以下の通り 科目名 1. OSSの概要に関する知識 <オープンソースの理念 >

OSS モデルカリキュラムの学習ガイダンス 23. RDB システム管理に関する知識 Ⅱ 1. 科目の概要関係データベースの運用管理機能と管理方法について 最適化やチューニング トラブルシューティング方法といった応用知識を説明する また実際の DB アプリケーション構築手順やインデックス導入による検

OS

Operating System 仮想記憶

Microsoft PowerPoint - OS07.pptx

PowerPoint Presentation

CPUスケジューリング

PowerPoint プレゼンテーション

Microsoft PowerPoint - kougi7.ppt

OS

Microsoft PowerPoint - No6note.ppt

Microsoft PowerPoint - OS02.pptx

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 15. Light Weight Language に関する知識 Ⅱ と IT 知識体系との対応関係は以下の通り 科目名 基本レベル (Ⅰ) 応用レベル (Ⅱ)

10-vm1.ppt

Microsoft PowerPoint - OS02.ppt

OSS モデルカリキュラムの学習ガイダンス 2-3- 応. Linux のシステム管理に関する知識 1. 科目の概要 Linux のシステム管理に関する手順のうち やや高度なサービスの設定に関する手順を解説する サーバとして利用する際の基本的な設定と DHCP FTP ファイル共有など様々なサービス

Microsoft PowerPoint - No15›¼‚z‰L›¯.ppt

Microsoft PowerPoint - OS02.pptx

Microsoft PowerPoint - No7note.ppt

05-scheduling.ppt

計算機システム概論

04-process_thread_2.ppt

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 2-1- 応. Linux の概念や基本操作に関する知識 と IT 知識体系との対応関係は以下の通り 科目名 ファイルシステム : 2-1- 応. Linuxの概念や基本操作に関す

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

Microsoft PowerPoint - os ppt [互換モード]

Microsoft PowerPoint - OS09.pptx

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

Microsoft PowerPoint - sp ppt [互換モード]

Microsoft PowerPoint - OS11.pptx

TFTP serverの実装

Microsoft PowerPoint - os ppt [互換モード]

Microsoft PowerPoint - sp ppt [互換モード]

メモリ管理

スキル領域 職種 : ソフトウェアデベロップメント スキル領域と SWD 経済産業省, 独立行政法人情報処理推進機構

Microsoft PowerPoint - sp ppt [互換モード]

OSS モデルカリキュラムの学習ガイダンス 2-3- 基. Linux のシステム管理に関する知識 1. 科目の概要 Linux のシステム管理に関する基本的な手順を解説する システム管理者の役割を示し システムのインストールから各種サービスの設定 システムの起動 停止とシステムの運用など 実際に

Microsoft PowerPoint - No3.ppt

Microsoft PowerPoint - pc11.ppt

Microsoft PowerPoint - os ppt [互換モード]

01-introduction.ppt

アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2

Microsoft PowerPoint - chap4_slide a.ppt

Microsoft PowerPoint - sp ppt [互換モード]

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

Microsoft PowerPoint - OS1.ppt [互換モード]

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 8-1- 基組み込みシステム開発に関する知識 と IT 知識体系との対応関係は以下の通り 科目名 基本レベル 組み込みコン組み込みコン組み込みコン

TopSE並行システム はじめに

計算機アーキテクチャ

cmpsys15w07_os.ppt

2-3- 基 Linux のシステム管理に関する知識 1 独立行政法人情報処理推進機構

Microsoft PowerPoint - OS12.pptx

メモリ管理

Microsoft PowerPoint - OS12.pptx

スレッドとプロセス

出 アーキテクチャ 誰が 出 装置を制御するのか 1

スライド 1

CLUSTERPRO MC ProcessSaver 2.3 for Windows 導入ガイド 第 5 版 2018 年 6 月 日本電気株式会社

講義計画 1. コンピュータの歴史 1 2. コンピュータの歴史 2 3. コンピュータの歴史 3 4. 論理回路と記憶, 計算 : レジスタとALU 5. 主記憶装置とALU, レジスタの制御 6. 命令セットアーキテクチャ 7. 演習問題 8. パイプライン処理 9. メモリ階層 : キャッシュ

PowerPoint プレゼンテーション

POSIXプログラミング Pthreads編

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 16. 開発フレームワークに関する知識 Ⅱ と IT 知識体系との対応関係は以下の通り 科目名 基本レベル (Ⅰ) 応用レベル (Ⅱ) 開発フ

EaseUS Data Recovery Wizard User Guide

組込み Linux の起動高速化 株式会社富士通コンピュータテクノロジーズ 亀山英司 1218ka01 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

CLUSTERPRO MC ProcessSaver 1.2 for Windows 導入ガイド 第 4 版 2014 年 3 月 日本電気株式会社

ic3_cf_p1-70_1018.indd

OS

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタ

使用する前に

<4C696E A B835E A CC8A D20838A B835E B838982CC8EC08CB

コンテンツセントリックネットワーク技術を用いた ストリームデータ配信システムの設計と実装

< B8CDD8AB B83685D>

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

コンピュータのしくみ

Operating System プロセスのスケジューリング

情報漏洩対策ソリューション ESS REC のご説明

計算機概論

Developer Camp

リソース制約下における組込みソフトウェアの性能検証および最適化方法

PowerPoint Presentation

ComputerArchitecture.ppt

ダンプ取得機能強化サポートオプション Enterprise Edition

6-2- 応ネットワークセキュリティに関する知識 1 独立行政法人情報処理推進機構

今週の進捗

Microsoft PowerPoint - OS04.pptx

PowerPoint プレゼンテーション

040402.ユニットテスト

スライド 1

ファイナライザを理解する ~ ファイナライザに起因するトラブルを避けるために ~ 2013 年 11 月 25 日 橋口雅史 Java アプリケーションでファイナライザ (finalize() メソッド ) を使用したことがあるプログラマーは多いと思います しかし ファイナライザの仕組みや注意点につ

OSS モデルカリキュラムの学習ガイダンス 3-1- 応. ネットワークアーキテクチャに関する知識 1. 科目の概要 TCP/IP プロトコルで通信するネットワークにおける具体的なサービスの実現方法 仕組みや特徴について解説する また各種ツールを利用した通信状況の診断方法や ネットワークの発展形 将

PowerPoint プレゼンテーション

Microsoft PowerPoint - ICD2011TakadaSlides.pptx

延命セキュリティ製品 製品名お客様の想定対象 OS McAfee Embedded Control 特定の業務で利用する物理 PC 仮想 PC や Server 2003 Server 2003 ホワイトリスト型 Trend Micro Safe Lock 特定の業務で利用するスタンドアロン PC

Microsoft PowerPoint - OS08 [互換モード]

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 4-3- 基 C++ に関する知識 と IT 知識体系との対応関係は以下の通り 科目名 基本レベル 基 C++ に関すオブジェクト指る知識向

21 章のお話

Microsoft PowerPoint - OS03.pptx

PowerPoint プレゼンテーション

<4D F736F F F696E74202D2091E63389F15F8FEE95F1835A834C A CC B5A8F FD E835A835890A78CE C CC835A834C A A2E >

020105.メモリの高機能化

Transcription:

OSS モデルカリキュラムの学習ガイダンス 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. 習得ポイント毎の 学習の要点 と 解説 を参考にして 講義で使用する教材等を準備する 独立行政法人 情報処理推進機構

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 2-2- 応. Linux カーネルに関する知識 と IT 知識体系との対応関係は以下の通り 科目名 1 2 3 4 5 6 7 8 9 10 11 2-2- 応. Linuxのカーネルに関する知識 Linux カーネル概論スケジューリング割り込みと遅延システムコールプロセス管理 メモリ管理 (1): メモファイル管理 (1): メモリ管理 (2): 実メメモリ管理 (3): プロファイル管理 (2): リアドレスの変換機仮想ファイルシステモリとページの管理セス空間の管理ファイルの操作構ム ファイル管理 (3): 特殊ファイル <IT 知識体系上の関連部分 分野科目名 1 2 3 4 5 6 7 8 9 10 11 12 13 組 IT-IAS1. 基礎的 IT-IAS2. 情報セ IT-IAS3. 運用上 IT-IAS4. ポリ IT-IAS5. 攻撃 IT-IAS6. 情報セ IT-IAS7. フォレ IT-IAS8. 情報の IT-IAS9. 情報セ IT-IAS10. 脅威分 IT-IAS11. 脆弱性 IT-IAS 情報保証織な問題キュリティの仕の問題シーキュリティ分野ンジック ( 情報証状態キュリティサー析モデル報 1 と情報セキュリ関組み ( 対策 ) 拠 ) ビスシティ連ス事 IT-SP1. プロ IT-SP2. コン IT-SP3. コン IT-SP4. チーム IT-SP5. 知的財産 IT-SP6. コン IT-SP7. 組織の中 IT-SP8. プロ IT-SP9. プライバテ IT-SP 社会的な項フェッショナルピュータの歴史ピュータを取りワーク権ピュータの法的のIT フェッショナルシーと個人の自ム観点とプロと 2 フェッショナルとしてのコミュ巻く社会環境問題としての倫理的由情としての課題ニケーションな問題と責任 IT-IM1. 情報管理 IT-IM2. データ IT-IM3. データ IT-IM4. データモ IT-IM5. データと IT-IM6. データの概念と基礎ベース問合わせアーキテクチャデリングとデー情報の管理ベースの応用分 3 IT-IM 情報管理応言語タベース設計野用技 IT-WS1.Web 技術 IT-WS2. 情報アー IT-WS3. デジタル IT-WS4.Web 開発 IT-WS5. 脆弱性 IT-WS6. ソーシャ術 IT-WS Webシステキテクチャメディアルソフトウェア 4 ムとその技術 IT-PF1. 基本デー IT-PF2. プログラ IT-PF3. オブジェ IT-PF4. アルゴリ IT-PF5. イベント IT-PF6. 再帰 IT-PF プログラタ構造ミングの基本的クト指向プログズムと問題解決駆動プログラミ 5 ミング基礎構成要素ラミングングソフト IT-IPT1. システ IT-IPT2. データ IT-IPT3. 統合的 IT-IPT4. スクリ IT-IPT5. ソフト IT-IPT6. 種々の IT-IPT7. プログ IT-IPT 技術を統ウェム間通信割り当てと交換コーディングプティング手法ウェアセキュリ問題ラミング言語の 6 合するためのプティの実現概要ログラミングアの CE-SWE0. 歴史と CE-SWE1. ソフト CE-SWE2. ソフト CE-SWE3. ソフト CE-SWE4. ソフト CE-SWE5. ソフト CE-SWE6. ソフト CE-SWE7. ソフト CE-SWE8. 言語翻 CE-SWE9. ソフト CE-SWE10. ソフト CE-SWE11. ソフ方 CE-SWE ソフト概要ウェアプロセスウェアの要求とウェアの設計ウェアのテストウェアの保守ウェア開発 保ウェアプロジェ訳ウェアのフォーウェアの構成管トェアの標準化法 7 ウェア工学仕様と検証守ツールと環境クト管理ルトトレランス理と技術 IT-SIA システム IT-SIA1. 要求仕 IT-SIA2. 調達 / 手 IT-SIA3. インテ IT-SIA4. プロ IT-SIA5. テスト IT-SIA6. 組織の IT-SIA7. アーキインテグレー様配グレーションジェクト管理と品質保証特性テクチャ 8 ションとアーキテクチャ IT-NET1. ネット IT-NET2. ルー IT-NET3. 物理層 IT-NET4. セキュ IT-NET5. アプリ IT-NET6. ネットワークの基礎ティングとスリティケーション分野ワーク管理 IT-NET ネット 9 イッチングワーク CE-NWK0. 歴史と CE-NWK1. 通信 CE-NWK2. 通信 CE-NWK3.LANと CE-NWK4. クライ CE-NWK5. データ CE-NWK6. ワイヤ CE-NWK7. データ CE-NWK8. 組込み CE-NWK9. 通信技 CE-NWK10. 性能評 CE-NWK11. ネット CE-NWK12. 圧縮と概要ネットワークのネットワークの WAN アントサーバコのセキュリティレスコンピュー通信機器向けネット術とネットワー価ワーク管理伸張アーキテクチャプロトコルンピューティンと整合性ティングとモバワークク概要シ CE-NWK テレコグイルコンピュース 10 ミュニケーショティングテン CE-NWK13. クラス CE-NWK14. イン CE-NWK15. 次世代 CE-NWK16. 放送ムタシステムターネットアプインターネット基リケーション盤 IT-PT1. オペレー IT-PT2. アーキテ IT-PT3. コン IT-PT4. デプロイ IT-PT5. ファーム IT-PT6. ハード IT-PT プラットティングシステクチャと機構ピュータインフメントソフトウェアウェア 11 フォーム技術ムラストラクチャウェア CE-OPS0. 歴史と CE-OPS1. 並行性 CE-OPS2. スケ CE-OPS3. メモリ CE-OPS4. セキュ CE-OPS5. ファイ CE-OPS6. リアル CE-OPS7.OSの概 CE-OPS8. 設計の CE-OPS9. デバイ CE-OPS10. システ CE-OPS オペレー概要ジューリングと管理リティと保護ル管理タイムOS 要原則ス管理ム性能評価 12 ティングシステディスパッチムアーコ CE-CAO0. 歴史と CE-CAO1. コン CE-CAO2. メモリ CE-CAO3. インタ CE-CAO4. デバイ CE-CAO5.CPUアー CE-CAO6. 性能 CE-CAO7. 分散 CE-CAO8. コン CE-CAO9. 性能向ウェCE-CAO コンン概要ピュータアーキシステムの構成フェースと通信スサブシステムキテクチャコスト評価並列処理ピュータによる上チャハーピュータのアーキピュ13 テクチャの基礎とアーキテク計算アキテクチャと構テータチャとド成ク IT-ITF1.ITの一 IT-ITF2. 組織の IT-ITF3.ITの歴 IT-ITF4.IT 分野 IT-ITF5. 応用領 IT-ITF6.IT 分野複般的なテーマ問題史 ( 学科 ) とそれに域における数学と数 14 IT-ITF 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-ESY 組込みシアが 15 ステム CE-ESY13. リアル CE-ESY14. 組込み CE-ESY15. 組込み CE-ESY16. 設計手 CE-ESY17. ツール CE-ESY18. ネット CE-ESY19. インタ CE-ESY20. センサ CE-ESY21. デバイ CE-ESY22. メンテ CE-ESY23. 専門シ CE-ESY24. 信頼性るタイムシステムマイクロコントプログラム法によるサポートワーク型組込みフェースシステ技術スドライバナンスステムとフォールトトも設計ローラシステムムと混合信号シレランスのステム 独立行政法人 情報処理推進機構

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

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

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

スキル区分 OSS モデルカリキュラムの科目 レベル システム分野 2-2 Linux カーネルに関する知識 応用 習得ポイント 2-2- 応 -2. マルチタスク OS におけるプロセスの概念 対応する 第 5 回プロセス管理 コースウェア 2-2- 応 -2. マルチタスク OS におけるプロセスの概念 プロセス の概念と プロセスを切り替えて時分割でタスクを遂行するマルチタスクの概念について 解説する また OS が各プロセスを管理する手法についても言及する 学習の要点 * プロセスとは オペレーティングシステム上における処理の単位の1つであり 実行命令コードやプロセス固有データ リソース記述子などで構成されている * オペレーティングシステムが 複数のプロセスを切り替えながら実行することをマルチタスクという この場合 ユーザ側から見ると複数のプログラムが同時に実行されているように見える * プロセス管理は カーネルの重要な機能の1つである プロセス プロセス プロセス マルチタスク実行中実行中実行中実行中 複数のプロセスを切り替えながら実行させている 時間軸 プロセス 生成走行可能走行中ブロック状態終了 図 2-2- 応 -2. マルチタスクの概念 2-2- 応 -3

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

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

解説 1) プロセスが切り替わるメカニズムマルチタスク オペレーティングシステムにおいては 実行中のプロセスであっても途中で CPU の使用を止め 他のプロセスに切り替えてそのプロセスに CPU の使用が可能となるようにしている このプロセスの切り替えの際にコンテキストスイッチが発生する * コンテキストスイッチとは複数のプロセスで CPU の共有が可能となるように CPU の状態 ( コンテキスト ) を保存したり もしくは復元したりする過程のことである * タイムスライスとはプリエンプティブなマルチタスク OS では スケジューラが各プロセスをある短い時間ずつ実行させる この時間のことをタイムスライスと呼ぶ * スケジューラ実行プロセスの切り替え先を決定するプログラムがスケジューラである スケジューラは 優先度つきキューで優先度を割り当てられたプロセスの制御を行う * 割り込みプロセスがタイムスライスの時間内に CPU の使用を止めなかった場合にはタイマ割り込みが発生し 他のプロセスが実行される 2) スケジューリングアルゴリズムとはスケジューラの目標は CPU の負荷を公平かつ平等に分散させることである スケジューラは スケジューリングアルゴリズムに基づいてプロセスの制御を行う 一般的に知られているスケジューリングアルゴリズムには 以下のようなものがある * FIFO (First In, First Out) 最も単純なスケジューリング方式のこと 言葉の通り 最初に発生したリクエストから待ち行列に並べ 順次処理を行う * LIFO (Last In, First Out) 公平性に問題があり 使われていない * ラウンドロビンスケジューリング待ち行列に並んでいる処理待ち状態のプロセスに対して 優先度などは設定せず順番に同じタイムスライスを割り当てて プロセススケジューリングを行う * 多段フィードバックキュー短いプロセスや対話型のプロセスを優先し プロセスの性質を迅速に把握しスケジューリングを行う UNIX の基本的なアルゴリズムである 3) スケジューリングアルゴリズムの基礎となる理論スケジューリングを行う際 各プロセスはキューと呼ばれる コンピュータの基本的なデータ構造の中に並べられる キューは待ち行列とも呼ばれる 2-2- 応 -6

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

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

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

解説 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つとして扱うためである 2-2- 応 -10

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

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

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

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

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

解説 1) 物理アドレス空間と仮想アドレス空間 * 物理アドレス空間 - CPU が直接アクセスすることのできる 主記憶 ( メインメモリ ) のもつアドレス空間 * 仮想アドレス空間 - 物理アドレス空間とは独立して仮想的に管理されるアドレス空間 その領域すべてが主記憶上に存在している必要がなく 一部の領域が二次記憶上に存在することが可能 * アドレス空間は 一定の大きさを持った ページ と呼ばれる単位で分割される 全てのページは ページ番号 が付与され ページテーブル という構造体で管理される ページの大きさ ( ページサイズ ) はアーキテクチャによって異なるが 必ず 2^n バイトである * プロセスの観点から見ると システムに搭載されている主記憶のアドレス空間よりも広いアドレス空間を扱うことができる 仮想アドレス空間はプロセスに対して透過的であり プロセスから見ると連続したメモリ領域である * システムの観点から見ると 変換先の物理アドレス空間は必ずしも連続である必要はなく 効率的にメモリを利用することができる また 利用頻度の低いページを二次記憶に退避させておくことで より効率的にメモリを利用することができる * 仮想アドレス空間のメモリ領域を予め物理メモリに展開せず アクセスされたときに物理メモリを確保して割り当てる方式を デマンドページング という 2) ページイン / ページアウト仮想アドレス空間上のページ番号から 物理アドレス空間上のページ番号への対応付け ( アドレス変換 ) は カーネルとメモリ管理ユニット (MMU) が連携して行う * TLB (Translation Lookaside Buffer) MMU の中には アドレス変換をより高速に行うために TLB (Translation Lookaside Buffer) を持つものがある TLB は 直近のアドレス変換を保持するキャッシュとして働く * ページ置換主記憶に空きがない場合 システムは利用頻度の低いページを二次記憶に移動させ 主記憶の空き容量を確保する これを ページアウト という どのページを退避させるかは OS の ページ置換アルゴリズム により異なる * アドレス変換とページング CPU が仮想アドレスを元に物理アドレスにアクセスする際には TLB ページテーブルという順序で ページの対応付けを参照する 対応する物理ページが見つからない場合は カーネルに ページフォルト 割り込みが送られ 二次記憶から物理メモリ上にページを読み込む これを ページイン という 3) カーネル空間とユーザ空間 * 通常のプロセスが置かれる仮想アドレス空間を ユーザ空間 といい カーネルプログラムが置かれる領域を カーネル空間 という * カーネル空間とユーザ空間は厳密に分離され 通常のプロセスがカーネル空間に直接アクセスすることはできない 2-2- 応 -16

スキル区分 OSS モデルカリキュラムの科目 レベル システム分野 2-2 Linux カーネルに関する知識 応用 習得ポイント 2-2- 応 -9. プロセス空間 対応するコースウェア 第 7 回メモリ管理 (2) 第 8 回メモリ管理 (3) 2-2- 応 -9. プロセス空間 プロセス空間を管理する方法の具体的な技術について説明する デマンドページング ページキャッシュ ページフォルト スワップデーモンといった個々の概念を解説する カーネル空間特有のメモリ確保の方法と そのインタフェースについて解説する また カーネル内でのメモリ確保特有の制限や システムとして提供するメモリ確保のアルゴリズムについても述べる 学習の要点 * プロセス空間とカーネル空間とで メモリ確保の方式に違いがあることを学習する * デマンドページングの概念について学習する 付帯概念として ページキャッシュ スワップデーモン等について併せて学習し デマンドページングの利点を確認する * カーネル空間は通常ページング不可能である * カーネルが使用できるメモリ領域には制限がある このため現実的には カーネルがメモリ領域を必要とする際には動的に確保する必要がある * カーネルがメモリを動的に割り当てるために 必要とされるサイズや高速性要件に適したいくつかの異なるアルゴリズムとそれに対応するインタフェースが用意されている カーネルメモリアロケータ ページングシステム カーネルメモリアロケータは カーネルとカーネルモジュール用にメモリを確保し ページングシステムはユーザプロセス用にメモリを確保する ページレベルアロケータ 上位レイヤにページインタフェースを提供 アドレス変換レイヤ メモリ管理ハードウェアの抽象化し 上位レイヤにハードウェアに依存しないインタフェースを提供 メモリ管理ハードウェア 仮想アドレスを物理アドレスに変換 ページフォルトを OS に報告 Rohit Dube, 1998, A Comparison of the Memory Management sub -systems in FreeBSD and Linux 図 2-2- 応 -9. 階層化されたメモリ管理システム 2-2- 応 -17

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

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

解説 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 ドメインソケット等のスペシャルファイルがある この二つは主にプロセス間通信の手段として用いられる 2-2- 応 -20