オペレーティング システム ---授業の目的 ---(1)OSの基礎概念 (2)OSの実現方法 を理解 ---カリキュラム内の 位置付け ↓ 学習・教育目標の (5)に対応 ---コンピュータと 情報ネットワークに 関する 基礎知識と その応用能力を 身につける ---達成目標/評価基準 (1)OSの役割と基本構造 (2)プロセス管理 (3)主記憶管理 (4)ファイルシステム (5)入出力デバイス管理 ---評価方法 ---[[EM:シラバス修正]] 小テスト20% 定期試験80% ↓ 定期試験100% ---OSを学ぶと 得意になるもの ---- (1) コンピュータ アーキテクチャ に関わる プログラミング ---例 並列プログラミング ネットワークプログラミング 組み込み機器用プログラミング ---(2) プログラミング全般 ↓ OSは ソフトウェア技術の 集大成 ---講義の 進め方 ---教科書中心 適宜補足 ---講義資料 [[http://nu.ike.tottori-u.ac.jp/kawamura/]] ---第1回 オペレーティング システムの概要 ---オペレーティング システム (OS) とは何か ---OSの機能 ---(1)拡張マシンの提供 ハードウェアを隠蔽 Windowsマシン Linuxマシン ---拡張マシンの命令(機械語) [[EM:システムコール]] [[EM:スーパバイザコール]] 例:画面に文字を表示 ---(2)[[EM:リソース]]管理 リソースの確保,保護 リソース利用効率の向上 (ハードウェア)リソースの例 CPU、メモリ、ディスク ---オペレーティング システム (OS) とは何か ---ハードウェアとしての コンピュータを アプリケーション プログラムにとって より容易に,より効率的に 利用可能とする 一連のプログラム ---(コンピュータから見た) プログラムの処理形態 ---1.バッチ処理 ユーザのジョブを一括処理 プログラム実行中に ユーザがデータ入力したり ユーザ向けに出力したりしない ---ジョブ ユーザから見た 仕事の単位 ---プロセス リソース割り当て単位 一般に1ジョブnプロセス ---2.対話処理 プログラム実行中に ユーザとの入出力をする ---CPUの仮想化 プロセス ---プロセスとは ---CPU以外の リソースの割り当てを 受ける単位 ---おおまかに言うと プロセスとは 実行中のプログラム ---ディスク上 a.out ↓ メモリ上 プロセス3214番 ---プロセス処理形態 ユニプロセッサ・ユニプログラミング (1CPU(コア) 1プロセス) [[EM:ユニプロセッサ・マルチプログラミング]] (1CPU Nプロセス) マルチプロセッサ・マルチプログラミング (N CPU Nプロセス) ---なぜ マルチプログラミング? ---疑似並列実行したい 複数人が同時に使う 複数プログラムを同時に使う ---プロセスは 実行中のプログラム ↓ プロセスは 生きている ---プロセスの誕生 ---プロセスは自然発生しない 他のプロセスに作られる 作った側→親プロセス 作られた側→子プロセス ---親は一人(二人ではない) 子は何人でも ↓ プロセス階層は ツリーになる ---プロセスの作り方 システムコールで OSに依頼 ---UNIXの場合 fork()でプロセスコピー execl()(など)で変身 ---[[PRE: 01: #include <sys/types.h> 02: #include <sys/wait.h> 03: #include <unistd.h> 04: #include <stdio.h> 05: #include <stdlib.h> 06: 07: int main(void) 08: { 09: char *cmd = "/bin/ls"; 10: pid_t child; 11: 12: child = fork(); 13: if (child < 0) { 14: perror(NULL); 15: exit(1); 16: } else if (child == 0) { 17: printf("C: child=%d, PID=%d\n", child, getpid()); 18: execl(cmd, cmd, NULL); 19: printf("Oops!\n"); 20: } else { 21: printf("P: child=%d, PID=%d\n", child, getpid()); 22: waitpid(child, NULL, 0); 23: printf("My child was dead.\n"); 24: } 25: exit(0); 26: } ]]
© Copyright 2024 ExpyDoc