オペレーティング システム ---- 授業の目的 ---

オペレーティング
システム
---授業の目的
---(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: }
]]