計算機システム概論・2回目 本日のトピック:プロセスについて プロセスとは プロセスのスケジューリングについて 多重プロセスの問題 排他制御

Slides:



Advertisements
Similar presentations
第3回 並列計算機のアーキテクチャと 並列処理の実際
Advertisements

第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
コンピュータ概論B ー ソフトウェアを中心に ー #03 プログラムの実行形態 (前回の復習+残り)
オペレーティングシステム 第3回 プロセスの管理とスケジューリング
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
計算機システム概論・3回目 本日のトピック:割込みと入出力制御について 割込み制御について 問題点の明確化 割込みとは
コンピュータプラクティス I 再現性 水野嘉明
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
記 憶 管 理(1) オペレーティングシステム 第9回.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
オペレーティングシステムJ/K 2004年10月7日
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
計算機システム概論 コンピュータアーキテクチャの基本について学ぶ 前半部分(中島先生)...主としてハードウェアに関するお話 後半部分(楫)...オペレーティングシステム(OS)について.
オペレーティングシステム (OSの機能と構造)
組込みシステムとは コンピュータ制御システム?
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
小型デバイスからのデータアクセス 情報処理系論 第5回.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
担当:青木義満、篠埜 功 情報工学科 3年生対象 専門科目 システムプログラミング 第8回、第9回 シグナル処理 担当:青木義満、篠埜 功
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
オペレーティングシステム (割り込み処理)
Linuxカーネルについて 2014/01.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
割 込 み(1) オペレーティングシステム No.5.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
ネストした仮想化を用いた VMの安全な帯域外リモート管理
シグナル通信 普通の割込みとソフトウェア割込み ソフトウェア割込みとシグナル キーボードからのシグナル 例外 (exception)
Linux リテラシ2006 第6回 デーモン CIS RAT.
第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令
スレッドとプロセス 本題: スケジューリング
Occam言語による マルチプリエンプティブシステムの 実装と検証
型付きアセンブリ言語を用いた安全なカーネル拡張
オペレーティングシステム 第3回( ) デッドロックと排他制御.
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
オペレーティングシステム (プロセス管理)
マルチスレッド処理 マルチプロセス処理について
OSの仕組みとその機能 1E16M001-1 秋田 梨紗 1E16M010-2 梅山 桃香 1E16M013-3 大津 智紗子
オペレーティングシステム イントロダクション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステム 第3回 プロセスの管理とスケジューリング
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータ概論B ー ソフトウェアを中心に ー #02 システムソフトウェアと アプリケーションソフトウェア
オペレーティングシステム 第2回 割り込みとOSの構成
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
計算機工学III オペレーティングシステム #4 並行プロセス:排他制御基礎 2006/04/28 津邑 公暁
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステムJ/K 2004年11月15日2時限目
オペレーティングシステム (ファイル) 2009年11月9日
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
組込みシステムとは コンピュータ制御システム?
アクセス集中時の Webサーバの性能に対する OSの影響
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
オペレーティングシステム (OSの機能と構造)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステム (プロセススケジューリング)
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
オペレーティングシステムJ/K 2004年10月4日
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
ネットワーク・プログラミング デバイスドライバと環境変数.
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
オペレーティングシステム (プロセススケジューリング)
強制パススルー機構を用いた VMの安全な帯域外リモート管理
オペレーティングシステム (OSの機能と構造)
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

計算機システム概論・2回目 本日のトピック:プロセスについて プロセスとは プロセスのスケジューリングについて 多重プロセスの問題 排他制御 プロセス間通信

前回の復習:時分割処理 時分割処理(タイムシェアリング) プロセッサが,複数のプログラムを少しずつ実行する 短い時間(タイムスライス)で,プログラムを切替える 時間経過 遂次処理 時分割処理 仮想計算機 実際の 計算機 考え方次第では... ユーザに仮想計算機を割り当て, 仮想計算機の動作を,少しずつ シミュレートして進めていく

シミュレートとは シミュレート = 模擬,真似 仮想計算機をシミュレートするとは... 計算機の中に別の仮想計算機(V)があると想定する Vは独自のプログラムを持っている Vがどのような振る舞いをするか,Vのプログラムに 従って(外部の計算機)が計算する (必要であれば)ユーザとVと の間で,入出力の中継を行う V

仮想計算機とプロセス 仮想計算機が保持すべきもの 独自のプログラム 独自のメモリ状態 独自のレジスタ状態 独自の入出力管理状態 その仮想計算機の状態 その仮想計算機のユーザ名 他の仮想計算機との関係 : プロセス=仮想計算機 (他の意味づけも可能) 仮想計算機 実際の 計算機 プロセス

プロセスを「見る」 身近なOSで,実際にプロセスを見てみる Windows: タスクマネージャを起動 UNIX系OS: ps コマンドを利用 確認できること 多くのプロセスが同時並行的に実行されている ユーザのプロセス以外に,システムのプロセスが存在 システムプロセスは,OSの機能をサポートするもの

プロセスの一生 プロセスは,動的に生成されたり消滅したりする プロセスの典型的な一生: ユーザまたはOSにより生成(起動)される (正確には,ユーザやOSのプロセスにより生成...後述) 必要な処理や計算を行う [活動中] 自主的に終了する, または外部から強制的に終了させられる

プロセスの状態 活動中のプロセスが取りうる状態は3種類ある: 実行中状態 プロセッサの時分割処理の順番がまわってきて, 処理が実際に進んでいる状態 実行待ち状態 プロセッサがまわってくるのを待っている状態 入出力待ち状態 入出力処理が終わるのを待っている状態 プロセスの状態は,OSによって変更される

プロセスの状態遷移 強制終了 プロセス生成 実行待ち状態 順番がまわってくる タイムスライス終了 実行中状態 プロセス終了 入出力処理完了 入出力処理開始 入出力待ち状態 強制終了

プロセススケジューラ システムには,一般に複数のプロセスが存在する プロセスの交通整理が必要 プロセススケジューラ: プロセスの状態を制御するための,OSの「部品」 どのプロセスを,どの状態にするか管理する 別のプロセスに切り替えるときに,プロセスを 実行する環境のセットアップを行う 現在実行中プロセスの状態を退避 新しく実行されるプロセスの状態を復帰

プロセススケジューラの動作概念図 スケジューラにより,プロセス状態が同期的に変更される 実行中状態にあるプロセスは一個だけ (プロセッサが複数あるシステムは除く) スケジューラの動作 P1 時間経過 入出力処理中 P2 P3 入出力処理中 P4 P5 実行中 実行待ち 入出力待ち

プロセススケジューラの仕組み 交通整理のために,スケジューラはプロセスを分類管理 実行中プロセス 実行待ちプロセス 入出力待ちプロセス P4 a c b プロセススケジューラの行う操作: 実行中プロセスを入出力待ちプロセスに(sleep) 入出力待ちプロセスを実行待ちプロセスに(wakeup) 実行中プロセスを切り替え (switch)

プロセススケジューラの動作イメージ プロセススケジューラは... 常にプロセスを監視しているわけではない 普段は眠っていて,何かのキッカケで起きて来て操作を行う プロセス スケジューラ タイマー 外部装置 キッカケ = 割り込み 割り込みも何種類かある

割り込み1:API呼び出し 入出力処理依頼 プロセスは,入出力装置に直接アクセスできない API (Application Program Interface)を介し,OS に処理を依頼 ⇒ 仕事を依頼したら,自分は「スリープ」状態に入る ...正確には,プロセススケジューラが,プロセスを「眠らせる」 OSの入出力処理部 プロセスA プロセスB API 入出力開始 実行中 実行待ち 入出力待ち 呼出元sleep switch

割り込み2:入出力完了 入出力完了 「Aさんに頼まれた仕事,終わったよ」 ⇒ プロセス A を「起こし」,順番待ち行列に並ばせる 入出力 プロセスB OSの割込み処理部 割込 制御横取り 2 1 wakeup 実行中 実行待ち 入出力待ち 3 制御返却 4

割り込み3:タイマー タイマ割込み処理からの呼び出し タイマ...タイムスライスの終了を知らせる プロセスA プロセスB OSの割込み処理部 制御横取り 2 1 switch 3 実行中 実行待ち

プロセススケジュールの戦略 プロセススケジューラの仕事: プロセスや入出力の進行にあわせ,交通整理をすること プロセスの切り替え(switch)を行うとき, どの実行待ちプロセスを処理するか決定すること ...いくつかの戦略が知られている スケジュール戦略を変えると,システムの振舞いが変わる

スケジューリングの性能指標(1) スケジュール戦略を考えるときに考慮すべき要素: CPU利用率 スループット:単位時間あたりの仕事量 ターンアラウンド時間: プロセスを起動してから完了するまでの時間 時間 プロセス起動 プロセス終了 ターンアラウンド時間

スケジューリングの性能指標(2) スケジュール戦略を考えるときに考慮すべき要素: 待ち時間: プロセスが,実行待ち状態で過ごす時間の合計 応答時間: 最初の処理が行われるまでの時間 時間 プロセス起動 プロセス終了 待 待ち時間 応答時間 平均値,最大値,最小値のどれに着目するかも重要

スケジュール戦略:単純な方式 横取りのない戦略(non-preemptive, 時分割処理は不要) 先着順 大きなプロセスの後ろは,長時間待たされる 早く終わりそうなものを先に済ます 実行時間をあらかじめ見積もるのは難しい 優先度順 優先度の決め方が問題 優先度の低いプロセスが,なかなか終わらない ⇒エージングによる優先度の調整: 長時間待っているプロセスの優先度を上げる

スケジュール戦略:やや複雑な方式 横取りのある戦略(preemptive, 時分割処理が必要) 「タイムスライスをどのように割り当てるか」 ラウンドロビン 実行待ちプロセスに公平に割り当てる A B C A B C A B C A B C 優先度順+ラウンドロビン 優先度の高いプロセスは,割当の頻度を上げる A B A C A B A C A B A C ...プロセスAの優先度が高い場合

スケジュール戦略:さらに複雑な方式 横取りのある戦略(preemptive, 時分割処理が必要) 多段フィードバック方式 プロセスを優先度ごとにまとめる 同じ優先度の中ではラウンドロビン 一定時間内に実行が終わらなければ, プロセスの優先度が下げられる B C A E F D 優先度 高 低

多重プロセスの問題 ここまでの話: 個々のプロセスは,互いに独立している...という立場 ここからの話: 複数のプロセスが存在する場合特有の問題 (多重プロセスの問題) プロセスの生成について プロセスが互いに邪魔をしないための仕組み プロセスが互いに協力するための仕組み

プロセスの生成 プロセスは誰が作るのか... 基本的には,プロセスが新しいプロセスを作る プロセス1 プロセス2 プロセス3 プロセス4 プロセス5 プロセス6 ...プロセス3の親プロセス ...プロセス1の子プロセス

プロセスの構成例 RedHat Linux: ps – eo “%p %c %P” で表示された情報の一部を抜粋して図示 ユーザのプロセス 0: init 722: syslogd 747: portmap 775: rpc.statd 2: keventd 870: rpciod 3: ksoftirqd 871: lockd 4: kswapd 1031: xinetd 31840: in.telnetd 5: bdflush 1086: lpd 6: kupdated 1320: smbd 30676: smbd 7: jfsIO 1325: nmbd 1388: gdm 1396: gdm 1397: X 18169: tcsh 32097: ps ユーザのプロセス

UNIXにおけるプロセスの生成 forkシステムコールによるプロセス複製 execシステムコールによるプログラム切り替え fork fork : child = fork(); if (child == 0) exec(子プロセス); 親プロセスの処理 fork fork fork 複製 親 子 親 子 親プロセス 子プロセス

排他制御 複数のプロセスに共用される資源: 複数プロセスにより同時に参照される可能性がある 例:「整数値が書かれたファイルを参照し,値を1増やす」 3 3 P1 P1 P2 4 4 P2 5 4 期待する動作 少しタイミングがずれた場合 読んでから書くまで,他のプロセスにファイルを参照させない ようにプロセスを制御する必要がある ... 排他制御

クリティカルセクション クリティカルセクション(CS): 他のプロセスとは,排他的に実行しなければならない部分 排他制御を適切に実行するためには... CSの最初と最後で,他プロセスに “stop”, “go”をかける CSに入るときは,“go” が出るまで待機する プロセス1 プロセス2 CS 待機 CS

排他制御を実現する仕組み 排他制御のため,stop, go をかける必要がある stop, go をかける操作も,排他的に実行の必要あり OSが stop, go の操作を提供することで,ジレンマを解決 stop, go 操作の実現方法:何通りか知られている lock, unlock セマフォ モニタ

デッドロック 同時に複数のstop, go が必要になる場合も ファイルAをオープン プロセス1 ファイルBをオープン ファイルAをクローズ ファイルBをクローズ プロセス2 A B × どちらのプロセスも永久に進めない ⇒ デッドロック状態 stopのかけ方に順番を定める等,運用で回避する必要アリ

プロセス間の協調機構 排他制御と同じ仕組みを利用する方式: 排他制御:CSか否かの1ビットを他プロセスに伝える 基本的に同じ仕組みで,より大きな情報を伝達可能 ソケット: プロセスとプロセスをつなぐ「仮想通信路」 パイプ: ソケットの特殊な用法 UNIXで頻繁に利用される

本日のまとめ プロセスとは OSにおけるプロセスの取り扱い プロセススケジューラについて 排他制御と協調機構 次回の講義...入出力機構について 課題(結果の提出不要): 自分が普段使っているコンピュータで,どのような プロセスが走っているか確認せよ