• 検索結果がありません。

プロセスの状態遷移 2

N/A
N/A
Protected

Academic year: 2021

シェア "プロセスの状態遷移 2"

Copied!
26
0
0

読み込み中.... (全文を見る)

全文

(1)

プロセスの状態遷移 2

復習︓プロセスの3状態とは何か

(2)

2

復習︓プロセスの3状態とは何か

1. 実⾏中 CPUで処理が実⾏中の状態 2. 事象待ち ⼊出⼒などが終わるのを

待っている状態

3. 実⾏可能 CPUが空くのを待っている状態 別名「レディ状態」とも呼ぶ

本節では

「状態遷移」の考え方を 理解しましょう

(3)

4

「状態遷移」とは

状態の「移り変わり」という意味

「状態遷移」とは

状態の「移り変わり」という意味

状態Aから状態Bへ移る(遷移する)

(4)

6

「状態遷移」とは

状態の「移り変わり」という意味

いくつかの(有限個の)状態の間を遷移する

例 単純な信号機

変化のきっかけは、予め決めた時間の 経過

「状態遷移」とは

状態の「移り変わり」という意味

いくつかの(有限個の)状態の間を遷移する

例 単純な信号機

変化のきっかけは、予め決めた時間の

(5)

8

「状態遷移」とは

• 状態の「移り変わり」という意味

• いくつかの(有限個の)状態の間を遷移する

• 例 単純な信号機

状態

「⻩」

状態

「⻘」

状態

「赤」

X秒経過

Z秒経過

Y秒経過

信号機の状態遷移図

「状態遷移」とは

• 状態の「移り変わり」という意味

• いくつかの(有限個の)状態の間を遷移する

• 例 単純な信号機

状態

「⻩」

状態

「⻘」

状態

「赤」

信号機の状態遷移図

・状態を⻑丸で書く

状態の名前を⻑丸の中に書く

(6)

10

「状態遷移」とは

• 状態の「移り変わり」という意味

• いくつかの(有限個の)状態の間を遷移する

• 例 単純な信号機

状態

「⻩」

状態

「⻘」

状態

「赤」

X秒経過

Z秒経過

Y秒経過

信号機の状態遷移図

・状態を⻑丸で書く

状態の名前を⻑丸の中に書く

・状態間の遷移を矢印で書く

遷移を起こす条件を傍に書く

では、プロセスの「状態遷移」は

プロセスの状態の「移り変わり」

(7)

12

では、プロセスの「状態遷移」は

• プロセスの状態の「移り変わり」

• プロセスの状態は︖

では、プロセスの「状態遷移」は

• プロセスの状態の「移り変わり」

• プロセスの状態は そうです︕

「実⾏中」「事象待ち」「実⾏可能」の3つ

状態

「実⾏中」

状態

「実⾏可能」

状態

「事象待ち」

プロセスの3つの状態

(8)

14

では、プロセスの「状態遷移」は

• プロセスの状態の「移り変わり」

• プロセスの状態は

「実⾏中」「事象待ち」「実⾏可能」

• では、状態遷移(移り変わり)は︖ 条件は︖

では、プロセスの「状態遷移」は

• プロセスの状態の「移り変わり」

• プロセスの状態は

「実⾏中」「事象待ち」「実⾏可能」

• では、状態遷移(移り変わり)は︖ 条件は︖

1つ1つよく考えてみましょう︕

(9)

16

では、プロセスの「状態遷移」は

• プロセスの状態の「移り変わり」

• プロセスの状態は

「実⾏中」「事象待ち」「実⾏可能」

• では、状態遷移(移り変わり)は︖ 条件は︖

1つ1つよく考えてみましょう︕

「実⾏中」から他の2つへ移るのは︖

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

どういう時でしょうか︖

(10)

18

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

どういう時でしょうか︖

>そう、写真でタイマーを押してからパシャッ となるのを待っている間の状態

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

どういう時でしょうか︖

>そう、写真でタイマーを押してからパシャッ となるのを待っている間の状態

(11)

20

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

どういう時でしょうか︖

>つまり「事象」を仕掛けたとき、です

プロセスの状態

実⾏中 状態

事象待ち 状態 実⾏可能

状態

事象待ち

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

>「事象」を仕掛けたとき

• では、実⾏可能状態に移るのは︖

(12)

22

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

>事象を仕掛けたとき

• では、実⾏可能状態に移るのは︖

>これは「プロセスからCPUを取り上げる」

ことに相当します

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

>事象を仕掛けたとき

• では、実⾏可能状態に移るのは︖

>これは「プロセスからCPUを取り上げる」

(13)

24

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

>事象を仕掛けたとき

• では、実⾏可能状態に移るのは︖

>これは「プロセスからCPUを取り上げる」

ことに相当します

プリエンプションと呼びます

後で出てくる「CPUスケジューリング」で 使います。ここでは置いておきます

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

>事象を仕掛けたとき

• 実⾏可能状態に移るのは︖

>CPUを取り上げるとき (プリエンプション)

実⾏中 状態

事象待ち 状態 実⾏可能

状態

事象待ち CPU取上げ

(プリエンプション)

(14)

26

「実⾏中」から他の2つへ移るのは︖

• CPUで実⾏していたプロセスを中断して

• 事象待ち (例えば⼊出⼒完了待ち) に移るのは︖

>事象を仕掛けたとき

• 実⾏可能状態に移るのは︖

>CPUを取り上げるとき (プリエンプション)

となりました。では事象待ちの場合は︖

「事象待ち」から他の2つへ移るのは︖

• 事象待ち状態のプロセスは、

待っていた事象が起きるとどうするか︖

• 例えば⼊⼒完了待ちが、⼊⼒が完了すると どうするでしょうか︖

(15)

28

「事象待ち」から他の2つへ移るのは︖

• 事象待ち状態のプロセスは、

待っていた事象が起きるとどうするか︖

• 例えば⼊⼒完了待ちが、⼊⼒が完了すると どうするでしょうか︖

• ⼊⼒を受取って次の処理を始めるでしょう

>つまり、実⾏を始めるわけです

「事象待ち」から他の2つへ移るのは︖

• 事象待ち状態のプロセスは、

待っていた事象が起きるとどうするか︖

• 例えば⼊⼒完了待ちが、⼊⼒が完了すると どうするでしょうか︖

• ⼊⼒を受取って次の処理を始めるでしょう

>つまり、実⾏を始めるわけです では「実⾏状態」にするのか︖

(16)

30

「事象待ち」から他の2つへ移るのは︖

• 事象待ち状態のプロセスは、

待っていた事象が起きるとどうするか︖

• 例えば⼊⼒完了待ちが、⼊⼒が完了すると どうするでしょうか︖

• ⼊⼒を受取って次の処理を始めるでしょう

>つまり、実⾏を始めるわけです

では「実⾏中状態」にするのか︖

実は、「実⾏可能状態」にします

「事象待ち」から他の2つへ移るのは︖

• 事象待ち状態のプロセスは、

待っていた事象が起きるとどうするか︖

• 実⾏可能状態にする

実⾏中 実⾏可能

(17)

32

「事象待ち」から他の2つへ移るのは︖

• 事象待ち状態のプロセスは、

待っていた事象が起きるとどうするか︖

• 実⾏可能状態にする

なぜ「実⾏中」にしないで「実⾏可能」か︖

脱線になりますが、細かく説明します。

脱線

なぜ「実⾏中」にしないで「実⾏可能」か︖

• Aが事象待ちだと、CPUは他の仕事Bをしています つまり、CPU上には実⾏中のプロセスBがいます

(18)

34

脱線

なぜ「実⾏中」にしないで「実⾏可能」か︖

• Aが事象待ちだと、CPUは他の仕事Bをしています つまり、CPU上には実⾏中のプロセスBがいます

• この時、事象待ちだったプロセスAを いきなり「実⾏中」にすると、

今CPUを使っているプロセスBを追い出します

脱線

なぜ「実⾏中」にしないで「実⾏可能」か︖

• Aが事象待ちだと、CPUは他の仕事Bをしています つまり、CPU上には実⾏中のプロセスBがいます

• この時、事象待ちだったプロセスAを いきなり「実⾏中」にすると、

今CPUを使っているプロセスBを追い出します

(19)

36

脱線

なぜ「実⾏中」にしないで「実⾏可能」か︖

• Aが事象待ちだと、CPUは他の仕事Bをしています つまり、CPU上には実⾏中のプロセスBがいます

• この時、事象待ちだったプロセスAを いきなり「実⾏中」にすると、

今CPUを使っているプロセスBを追い出します

• もしAがBと同程度に重要(優先度が同程度)なら わざわざBを追い出すことも無いわけです

Bが済んでからAを続けたってよいでしょう

脱線

なぜ「実⾏中」にしないで「実⾏可能」か︖

• Aが事象待ちだと、CPUは他の仕事Bをしています つまり、CPU上には実⾏中のプロセスBがいます

• この時、事象待ちだったプロセスAを いきなり「実⾏中」にすると、

今CPUを使っているプロセスBを追い出します

• もしAがBと同程度に重要(優先度が同程度)なら わざわざBを追い出すことも無いわけです

• だから実⾏可能でCPUが空くのを待たせるわけです

(20)

38

「実⾏可能」から他の2つへ移るのは︖

• 実⾏可能状態のプロセスは、

次にどういう状態遷移があるか︖

「実⾏可能」から他の2つへ移るのは︖

• 実⾏可能状態のプロセスは、

次にどういう状態遷移があるか︖

• 実⾏可能 → 実⾏中 が考えられます

これはCPUが空いたので、CPUを待っていた プロセスが実⾏を始めるときです

(21)

40

「実⾏可能」から他の2つへ移るのは︖

• 実⾏可能状態のプロセスは、

次にどういう状態遷移があるか︖

• 実⾏可能 → 実⾏中 が考えられます

これはCPUが空いたので、CPUを待っていた プロセスが実⾏を始めるときです

CPUを与えて実⾏を始めさせることを プロセスをディスパッチすると呼びます

「実⾏可能」から他の2つへ移るのは︖

• 実⾏可能状態のプロセスは、

次にどういう状態遷移があるか︖

• 実⾏可能 → 実⾏中 が考えられます

きっかけはCPUが空いてディスパッチされた為

実⾏中 状態

事象待ち 状態 実⾏可能

状態

事象待ち 事象発生

CPU割当て (ディスパッチ)

CPU取上げ (プリエンプション)

(22)

42

「実⾏可能」から他の2つへ移るのは︖

• 実⾏可能状態のプロセスは、

次にどういう状態遷移があるか︖

• 実⾏可能 → 実⾏中 が考えられます

きっかけはCPUが空いてディスパッチされた為

• 実⾏可能 → 事象待ち はあり得ません なぜ︖

「実⾏可能」から他の2つへ移るのは︖

• 実⾏可能状態のプロセスは、

次にどういう状態遷移があるか︖

• 実⾏可能 → 実⾏中 が考えられます

きっかけはCPUが空いてディスパッチされた為

• 実⾏可能 → 事象待ち はあり得ません

(23)

44

全体をまとめると

プロセスの状態遷移は、

全体をまとめると

プロセスの状態遷移は、

• 実⾏中 → 事象待ち(⼊出⼒起動などで待ちを 仕掛けた為)

• 実⾏中 → 実⾏可能(CPUの取上げの為

プリエンプション

• 事象待ち → 実⾏可能(事象が発⽣した為)

• 実⾏可能 → 実⾏中(CPUが空いてディスパッチ された為)

(24)

46

全体をまとめると

プロセスの状態遷移は、

• 実⾏中 → 事象待ち(⼊出⼒起動などで待ちを 仕掛けた為)

• 実⾏中 → 実⾏可能(CPUの取上げの為

プリエンプション

• 事象待ち → 実⾏可能(事象が発⽣した為)

• 実⾏可能 → 実⾏中(CPUが空いてディスパッチ された為)

では、状態遷移図を描いてみましょう

状態遷移図に描くと

実⾏中 → 事象待ち(事象待ちを仕掛けた為)

実⾏中 実⾏可能(CPUの取上げプリエンプションの為)

• 事象待ち → 実⾏可能(事象が発⽣した為)

実⾏可能 実⾏中(ディスパッチされた為)

実⾏中 実⾏可能

CPU割当て (ディスパッチ)

(25)

48

確認の問題です

• 1つ1つのプロセスの「状態」を管理する

• 3つの状態がある

• 状態間の遷移を考える

• 状態遷移図が描ける 自分で描けますね

おまけの状態遷移

• 教科書には「⽣成」と「消滅」がある

• プロセスが無い状態から生成されると実⾏可能になる

実⾏中のプロセスが消滅(=自殺)する

プロセスの状態遷移図

実⾏中 状態

事象待ち 状態 実⾏可能

状態

事象待ち 事象発生

CPU割当て (ディスパッチ)

CPU取上げ (プリエンプション)

生成 消滅

あまり本質でない ので紹介するだけ にしておく

(26)

50

プロセスの状態遷移について 理解できましたか︖

次へ

〇 ×

参照

関連したドキュメント

11) 青木利晃 , 片山卓也 : オブジェクト指向方法論 のための形式的モデル , 日本ソフトウェア科学会 学会誌 コンピュータソフトウェア

線遷移をおこすだけでなく、中性子を一つ放出する場合がある。この中性子が遅発中性子で ある。励起状態の Kr-87

CPU待ち時間 PCとPSWを 専用レジスタ

屋外工事から排出される VOC については、低 VOC 資材を選択するための情報を整理した「東京都 VOC 対策ガイド〔建築・土木工事編〕 」 ( 「同〔屋外塗装編〕

交通事故死者数の推移

夫婦間のこれらの関係の破綻状態とに比例したかたちで分担額

今回のスマートメーター導入の期待効果の一つには、デマンドレスポンス による

通関業者全体の「窓口相談」に対する評価については、 「①相談までの待ち時間」を除く