1 / 31

計算機システム概論・2回目

計算機システム概論・2回目. 本日のトピック:プロセスについて プロセス とは プロセスの スケジューリング について 多重プロセス の問題 排他制御 プロセス間通信. 遂次処理. 時分割処理. 時間経過. 時間経過. 実際の 計算機. 仮想計算機. 前回の復習:時分割処理. 時分割処理(タイムシェアリング) プロセッサが, 複数のプログラムを少しずつ実行 する 短い時間(タイムスライス)で,プログラムを 切替える. 考え方次第で は ... ユーザに 仮想計算機 を 割り当て, 仮想計算機の動作を,少しずつ シミュレート して進めていく. V.

Download Presentation

計算機システム概論・2回目

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  20. スケジュール戦略:やや複雑な方式 • 横取りのある戦略(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の優先度が高い場合

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

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

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

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

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

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

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

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

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

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

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

More Related