軽量プロセスは、Threads または LWP (Light weight process )と 呼ばれる、メモリ空間を切り替えない仮想プロセッサのみのプロセス である。これは仮想的に複数の計算の流れを実現する 並行プログラム(Concurrrent Programming)を高速に 実装することができる。最近のOSでは必ず採用されている重要な 機能である。
Windows | Win32 APIに Threads が含まれている |
Mach | Threads を採用したOSの元祖 C-Threads |
Solaris | Kernel Threads を実装している。Pthreads APIもある |
BSD/OS | Posix 準拠 PThreads を ユーザレベルで実装している |
Java | User level threads を VM により実装している |
MP | 前琉大講師の新城先生が実装したLWP |
種類 | 実装 | スケジュール |
User level threads | プロセス内部でCPUコンテキストを手動切り替えるライブラリを提供する | 手動 non-preemptive |
Kernel level threads | OSのKernelによりthreadsを管理する | Kernel によるpreemptive |
Parallel threads | Threadsを複数のCPUに割り当てる | Kernel による |
Process は、独立したメモリ空間を持つために、他のProcessの影響を受けにくい。 しかし、Processの切り替えにはメモリ空間の切り替えを伴うために、複数の 並行プログラムの同期、通信は一般的に遅い。したがって、Bufferring を中心 としたThrourghput 優先のプログラムを行う必要がある (select/socket/pipe) Process は、他のプロセスにより実行の優先順位や、singalによる状態切り替えを 行うことができる。
Threads は、一つのメモリ空間/Processの中に複数存在し、お互いの切り替えは 関数呼び出しより若干重い程度で可能である。お互いの同期や通信もメモリを 通して直接行うことができるので高速である。例えば、JavaやNetscapeで絵を 動かす場合などに使うこともできる。しかし、User level threadsでは、 外からのThreadsの制御をおこなうことはできない。
Threadsからは通常のライブラリ (libc など) を呼び出すことになるが、 そのライブラリが固有の状態を持っていると、複数のThreadsから呼び出した 時に不都合なことになる。そういう不都合が起きないライブラリを Re-entrant (自己再入可能) または、Threads safe という。printf は一般には Threads safeでないことが 多い。また、I/O関係のライブラリもThreads safeでない場合がある。User level threads では、Re-entry は起きないので、このような問題は生じない。
Processのスケジューリングは、一般的におこなう必要があるためユーザが 制御できる部分は限られている。しかし、Threadsでは、一つのプロセス内部 に閉じているっため、その内部でのスケジューリングを自由に管理することが できる。
CPU-I/O Burst cycle
スケジューリングの種類
Gantt Chart
きたものから順に処理する
一番早く終わるものから処理する
順番を決めておく
Quantum の時間で一旦中断し、公平に処理する
Priorityをより一般的にする
Priorityを可変にする
Write Gantt charts for a set of processes below using scheduling algorithms: FIFO, SJF, Priority, RR. In case of RR, use priority and quantum 12, 6 and 1.
Process CPU time Priority 1 10 3 2 1 1 3 2 3 4 1 4 5 5 2
以下の定期的に要求されるPeriodical プロセスをRate monotonic shcedulingと Dead line scheduling により実行するとどうなるかをGunt chartを 使って表せ。
Process Period CPU unit 1 10 3 2 5 1 3 4 3 4 7 23除いた場合はどうなるか?
情報実験Iの一部として、 5 プロセスの概念とその基本操作 の
Subject: Report on Operating System Lecture 5/15として提出すること。授業に出席しなかったものは、この授業の問題を
Subject: Practice on Operating System Lecture 5/15E-Mailで提出すること。