Linuxカーネルについて 2014/01.

Slides:



Advertisements
Similar presentations
システムプログラミング 第11回 シグナル 情報工学科 篠埜 功. 今回の内容 前回の補足( exit システムコールについ て) プロセス間通信 – シグナルの送信 --- 今回の内容 – パイプによる通信 – ソケットによる通信.
Advertisements

モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
2001年11月更新 2章 Windowプログラムの構成 Windowsプログラムおよび       PiasTkプログラムの基本構造.
ARTLinuxの特徴 ARTLinux: ハードリアルタイム処理機能を拡張したLinuxカーネル 固定優先度に基づくスケジューリング機能
計算機システム概論・3回目 本日のトピック:割込みと入出力制御について 割込み制御について 問題点の明確化 割込みとは
ファイルキャッシュを考慮したディスク監視のオフロード
オペレーティングシステム i386アーキテクチャ(3)
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
ファイルシステムの構造 外部記憶装置のパーティション(区画) ファイルシステムとパーティション(区画) ファイルシステムのmount
Problem A: Radix 3.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
オペレーティングシステム (OSの機能と構造)
組込みシステムとは コンピュータ制御システム?
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
Ibaraki Univ. Dept of Electrical & Electronic Eng.
担当:青木義満、篠埜 功 情報工学科 3年生対象 専門科目 システムプログラミング 第8回、第9回 シグナル処理 担当:青木義満、篠埜 功
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
オペレーティングシステム (割り込み処理)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
割 込 み(1) オペレーティングシステム No.5.
オペレーティングシステム i386アーキテクチャ(2)
割り込み.
割り込み.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
Windowsの内部を知る
シグナル通信 普通の割込みとソフトウェア割込み ソフトウェア割込みとシグナル キーボードからのシグナル 例外 (exception)
Windowsの内部を知る
アスペクト指向プログラミングを用いたIDSオフロード
オペレーティングシステム2005 デバイス管理 (1)
第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法.
型付きアセンブリ言語を用いた安全なカーネル拡張
独習Java ・ 8.1  例外処理 ・ 8.2  catch ブロックの検索  12月 5日    小笠原 一恵.
仮想マシン間にまたがる プロセススケジューリング
前坂 たけし (北大院・理) 其の壱 はじめての BIOS 前坂 たけし (北大院・理)
実行時情報に基づく OSカーネルのコンフィグ最小化
メモリの準備 メモリには、その準備の方法で2種類ある。 静的変数: コンパイル時にすでにメモリのサイズがわかっているもの。 普通の変数宣言
オペレーティングシステム イントロダクション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
オペレーティングシステム 第2回 割り込みとOSの構成
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
情報実験第 7 回(2016/06/17) OS インストール・起動
Intel SGXを用いた仮想マシンの 安全な監視機構
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステムJ/K 2004年11月15日2時限目
オペレーティングシステム i386アーキテクチャ(1)
組込みシステムとは コンピュータ制御システム?
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
オペレーティングシステム (OSの機能と構造)
実装について 前田俊行.
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
システムプログラミング 第6回 システムコールのエラーメッセージ ファイルシステム 情報工学科 篠埜 功.
オペレーティングシステムJ/K 2004年10月4日
Cell/B.E. のSPE上で動作する 安全なOS監視システム
ネットワーク・プログラミング デバイスドライバと環境変数.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
オペレーティングシステム 作成 T21R003 荏原 寛太.
コンパイラ 2012年10月11日
オペレーティングシステム (OSの機能と構造)
プログラミング演習I 2003年6月11日(第9回) 木村巌.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ネットワーク・プログラミング プロセスとファイルシステム管理.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
Presentation transcript:

Linuxカーネルについて 2014/01

Linuxカーネルの役割 ① ハードウェアに対する アプリケーション 操作をアプリケーション が意識しなくてよい システムコールインターフェース カーネル関数 ハードウェア

Linuxカーネルの役割 ② 以下の機能をアプリケーションに提供し、 ハードウェアに対する操作を統一的にする。 ・プロセス管理 ・メモリ管理 ・ファイルシステム ・ネットワーク ・プロセス間通信 etc...

Linuxカーネルのディレクトリ構成 ・kernel - Linxuカーネルの動きを制御する ・mm - 実メモリ管理、仮想記憶等のメモリ管理 ・fs - ファイルシステム関連 ・net - ネットワーク関連 ・init - カーネル起動時に呼び出される初期処理 ・crypto - 暗号処理共通関数 ・block – ブロック型デバイスのための共通処理 ・divers - デバイスドライバ ・sound - サウンドドライバ ・arch - CPUアーキテクチャに依存したコード群 ・include – 各種ヘッダーファイル Etc..

Linuxカーネルの動きを追う ソースが何百万行もあるので、 まずはブートプロセスから見てみる。

起動時の処理 ① CPUアーキテクチャ非依存の処理を見る Init/main.c のstart_kernel関数 asmlinkage void __init start_kernel(void) { char * command_line; extern const struct kernel_param __start___param[], __stop___param[]; smp_setup_processor_id(); lockdep_init(); debug_objects_early_init(); boot_init_stack_canary(); cgroup_init_early(); …

起動時の処理 ② 150行に渡ってひたすら初期化の関数を呼び出している。。。 全て追うと膨大な量になるので、更に読む箇所を絞り、割り込みハンドラを登録している箇所を 読んで見る。割り込みハンドラはtrap_init関数で登録されている。 ※割り込みハンドラとは 現在実行中の処理を一旦中断して、優先的に別の処理を行うこと。 例えばキーボードの入力を検知して、押されたキーに対応する処理を優先的に実行する等。

trap_init void __init trap_init(void) { int i; #ifdef CONFIG_EISA void __iomem *p = early_ioremap(0x0FFFD9, 4); if (readl(p) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24)) EISA_bus = 1; early_iounmap(p, 4); #endif set_intr_gate(0, &divide_error); // 除算エラー set_intr_gate_ist(2, &nmi, NMI_STACK); // NMI割り込み set_system_intr_gate(4, &overflow); // オーバーフロー set_intr_gate(5, &bounds); // BOUN範囲外 ...

割り込みテーブルの仕組み 各割り込み番号毎にセグメントとオフセットが 格納されており、それぞれCPUの CS(コードセグメント) IP (インストラクションポインタ) に格納されて実行される。 ※要するに各割り込みに対応する関数への アドレスが登録され、実行される。

割り込みの種類 ・外部装置割り込み SCSIホストアダプタ、ネットワークカード、端末装置などが生成する割り込み。 ・タイマー割り込み タイマーコントローラが一定周期で割り込みを発生させる。 Linuxでは2種類のタイマー割り込み(グローバルタイマー割り込み、ローカルタイマー割り込み) がある。 ・プロセッサ間割り込み マルチプロセッサ環境において、ほかのCPUへ何らかの事象を通知するために利用される。 割り込み要求を受けたCPUは、その事象に対応する処理を実行する ・NMI(マスク不可割り込み) 緊急時の障害対応目的で利用される

感想 Linuxカーネルはとんでもなく膨大な量なので、 読みたい箇所を絞って読まないと 大変なことになる。 今回は概要と、割り込みの部分しか 紹介できなかったので、 次回は別の部分を深く掘り下げたいと思う。

参考書籍 ・Linuxカーネル2.6解読室 ・Linuxカーネル解析入門 ・Linuxのブートプロセスをみる