180 likes | 338 Views
オペレーティングシステム J/K. 2004 年 10 月 4 日 酒居敬一 ( sakai.keiichi@kochi-tech.ac.jp ) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS2004/. 連絡先. 酒居 居室 : A468 メイル : sakai.keiichi@kochi-tech.ac.jp TA( 福家君 ) メイル : fuk@kikuken.org. 専門科目演習日程. 講義と同じ部屋 A107 で行います。
E N D
オペレーティングシステムJ/K 2004年10月4日 酒居敬一(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS2004/
連絡先 • 酒居 • 居室: A468 • メイル: sakai.keiichi@kochi-tech.ac.jp • TA(福家君) • メイル: fuk@kikuken.org 専門科目演習日程 • 講義と同じ部屋A107で行います。 • 演習日10月14日、10月21日、11月1日(中間試験)、11月11日、11月18日 • 教科書を必ず持ってくること。
予定 • 第1回講義 10月 4日2時限目 • 第2回講義 10月 7日2時限目 • 第1回演習 10月14日2時限目 • 第3回講義 10月18日2時限目 • 第4回講義 10月18日5時限目 • 第2回演習 10月21日2時限目 • 第5回講義 10月25日2時限目 • 第6回講義 10月28日2時限目 • 第7回講義 11月 1日2時限目 • 中間試験 11月 1日5時限目 • 第8回講義 11月 4日2時限目 • 第9回講義 11月 8日2時限目 • 第3回演習 11月11日2時限目 • 第10回講義 11月15日2時限目 • 第11回講義 11月15日5時限目 • 第4回演習 11月18日2時限目 • 第12回講義 11月22日2時限目 • 第13回講義 11月25日2時限目 • 第14回講義 11月29日2時限目 • クオータ末試験 11月29日5時限目※これらは予定なので、変更の可能性があります。
コンピュータのハードウェア • CPU • メモリ • システムデバイス(チップセット、スーパーI/O) • 外部記憶装置(HDD、FDD、USBメモリ) • 通信装置(イーサネット) • 入力装置(キーボード、マウス、タブレット、カメラ) • 表示装置(ビデオカードとディスプレイ)
ルネサスSH2/7144 • CPU • RAM • ROM • Timer • Serial • A/D Converter [RENESAS, 2003]
OSが無ければ… • ハードウェアをすべて制御しなければならない。 • ファイル操作どころか、キー入力すらままならない。 • 異なるアプリケーションを使えない。 • 共通のインターフェースがないから。 • ハードウェア構成を変えられない。 • プログラムの改造しかないけど、それは困難。 共通の下地を作れば…
OSの位置付け ユーザー アプリケーションソフトウェア 共通のインターフェースを提供 オペレーティングシステム 抽象化 ハードウェア
OSの基本概念 • CPUの抽象化 • プロセスとスレッド • メモリの抽象化 • 仮想記憶 • デバイスの抽象化 • ファイルシステム • ネットワークの抽象化 • ソケット → 仮想計算機を提供
OSの構成 • カーネル • デバイスドライバ(割込み・入出力・タイマ管理) • 記憶管理 • プロセス管理(生成・消滅・スケジュール) • 同期と通信制御 • ファイルシステム • 管理コマンド • 利用者管理 • ユーザーインターフェース
タスクとジョブ • タスクはコンピュータからみた仕事の単位 • シングルタスクOS • ひとつのタスクしか扱わないOS • マルチタスクOS • 複数のタスクを扱えるようにしたOS • ジョブは人間からみて目的のある一区切りの仕事 • シングルジョブ • シングルタスクOSでもマルチタスクOSでも処理できる • マルチジョブ • マルチタスクOSでないと処理できない
プロセスはプロセッサを抽象化 • プロセスどおしは互いに影響を及ぼさないほうがよい • デバイスはカーネルの管理下に置きたい
OSの構成法 • 情報隠蔽 • モジュール化あるいはカプセル化 • 方針と機構の分離 • スケジューラとディスパッチャ • ページ管理とページング • 階層化
情報隠蔽の例 struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long,unsigned long); };
モノリシックカーネル • ユーザープログラムからシステムコールによりカーネル内の処理を呼ぶ。 • カーネル内部はモジュール化されている。 • ひとつのプログラムとしてリンクされている。 • 不要なものまで含んでいるため、巨大になる。 • モジュール間は関数呼び出しである。 • オーバーヘッドが少ない。 • デバイスドライバの変更=カーネルの再構成 • 最近は Loadable Kernel Module という機構がある。 • DLLと同じように、動的にオブジェクトファイルをリンクする
マイクロカーネル • カーネルに実装される処理は必要最低限。 • モジュールはシステムサーバーとして実装。 • 各機能は各々プロセスとして実現される。 • モジュールが分離していてシステム設計が容易。 • モジュール間はプロセス間通信である。 • オーバーヘッドが多い。 • デバイスドライバの変更≠カーネルの再構成 • 機能変更や拡張が容易。
タスクとユーザー • マルチタスク・マルチユーザー • 複数の人が同時に並行処理を行うことができる。 • いわゆるUNIX系のOS。 • マルチタスク・シングルユーザー • 利用者という概念がない。並行処理はできる。 • 初期のWindows。組み込み用RTOS。 • シングルタスク・シングルユーザー • 利用者という概念がない。単一処理しかできない。 • PC用ではWindowsより前、DOSなど。
ハードウェアのリセット処理によりプロセッサが働き始める。つまり、リセットベクタで指定されたプログラムを実行するハードウェアのリセット処理によりプロセッサが働き始める。つまり、リセットベクタで指定されたプログラムを実行する 初期化中 稼動状態 電源オン POST I/Oのチェック メモリチェック 初期化 ブートストラップ IPL OS IPLを読み込む コマンドインタプリタ OSを読み込みシステムタスクとして稼動 ユーザ・タスク1 ユーザ・タスク2 OSの初期化終了後、コマンド・インタプリタを起動 ユーザーからのコマンドを処理する ユーザ・タスクn