Operating System Lecture 10/30

## 復習 ファイルシステム

## ファイルをアクセスする方法

ファイルのモード

リンク

## gdb の使い方

## デバッガの使い方をマスターしよう

## プロセスとカーネル

## プロセスは、一つのコンピュータに、仕事のまとまりを作る。これは、あたかも、そのプロセスが一台のコンピュータを一人で使っているように見える。プロセスには以下の要素が付属している。

メモリ
CPU時間
コンテキスト

複数のプロセスが互いに、不法な方法で干渉しないように、ハードウェアとオペレーティングシステムが管理を行っている。

## プロセスの作り方

## ここでは、csh からのプロセスの作り方を勉強しよう。

コマンドの起動
停止
並列実行
バックグラウンドで実行
script の取り方

## システムの使い方

## http://rananim.ie.u-ryukyu.ac.jp/~kono/internal/ に
システムの使い方を置いてあります。少なくとも、Mule の日本語チュートリアルを復習しておくこと。

## プロセス

## Operating System上にはいろいろなプロセスがあり、それらを一つのCPUが順に実行していく。 コンピュータの基本的な要素は、計算を行なうCPUと結果を格納するメモリやディスクである。

実際には要求される動作には様々なものがあり、それらが一つ一つ、CPUやメモリを必要とする。これを仮想的なコンピュータにまとめたものがプロセスである。それらを、実際のコンピュータの持つ物理的なCPUやメモリに配分する作業を担当するのがOperating Systemである。

プロセスうち、いくつかの処理は、特別な扱いを受ける。

* Interrupt CPUに信号が伝わった時点で行われる処理
* DMA (direct memory access) CPUを経由しないデータ転送
* Kernel Process Operating System 自身が必要とする仕事

これ以外の処理は、平等に時間分割(Time sharing)されて実行される。

しかし、仕事のないプロセスにCPUを割り当てても意味がない。プロセスには決まった状態があり、そのうち、実行可能な状態のプロセスのみが実行される。

* new プロセスが生成された
* ready 実行可能な状態
* running 実際に実行されている
* waiting 何かを待っている
* terminated 終了中

これらの状態遷移を引き起こす操作には以下のようなものがある。

* new fork system call
* running->waiting wait system call / I/O call (read/write)
* waiting->ready 外部からの入力, I/O 終了
* ready->terminated kill, exit

コマンド top を動かしてみて、プロセスの動きを観察しよう。

### サブルーチンとプロセス生成の違い

### この二つの違いは、メモリ空間の扱いが異なることである。サブルーチン呼び出しでは、メモリ空間は元と同じであるが、プロセス生成では、異なるものが呼び出される。

サブルーチンには、wait に相当するものがないのは何故だろうか? 考えてみよう。

### プロセスとユーザ

### su コマンドは何をするものか?

setuid bit について理解しよう。

プロセス空間の切替え方は?

### ファイル入出力

### プロセスの入出力は、システムコール、特に、ファイルを経由して行われる。プロセスがアクセスしているファイルには、プロセスごとに番号がついている。これをファイル・ディスクリプタという。

ディスクリプタには、open system callによって、ファイルシステム上のファイルを結びつけることができる。ファイルだけなく、他のプロセスとの間を結ぶソケットや、その一方向版であるパイプを結びつけることもできる。

Unix では最初の3つのディスクリプタは、ユーザが持つログイン・シェルの入出力に接続されている。

この切り替えはcloseと dupによって行われる。

### fork と exec

### fork は、同じメモリ空間上で、異なるコンテキスト(context)を生成する。exec は、同じコンテキストで別なプログラムを実行する。

相手のプロセスの待ち合わせ(join)は、Unixではwait というシステムコールを使っておこなわれる。

例えば、

% du /usr/local

とした時には、以下のようなプロセスの状態遷移が起きる。

tcsh du
|
+---- fork --> new
| |
wait running
: |
: v
completion <--interrupt-terminated
|
v
runnning

## 問題

以下のシェルスクリプトを実行した時に、どのようなプロセスの状態遷移が起きるかを記述してみよ。

% ( du -s /usr/local ; echo end ) &

## 宿題

「UNIX のプロセスの観察と簡単な操作」 と「プロセスの生成」をさ来週までに、おこなうこと。

Subject: Practice on Operating System Lecture 10/30

というように、課題を出した日付をサブジェクトに入れたメールで提出して下さい。なお、実験の時間は特に決めませんが、レポートの締め切りは守ること。

この日の課題を

Subject: Report on Operating System Lecture 10/30

というサブジェクトでメールで提出すること。

Operating System Lecture 10/30

復習 ファイルシステム
gdb の使い方
プロセスとカーネル
プロセスの作り方
システムの使い方
* http://rananim.ie.u-ryukyu.ac.jp/~kono/internal/ に
プロセス
サブルーチンとプロセス生成の違い
プロセスとユーザ
ファイル入出力
fork と exec
問題
宿題

Shinji KONO / Tue Oct 30 11:59:40 2001