オペレーティングシステム (プロセス管理とスケジューリング)

Slides:



Advertisements
Similar presentations
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
Advertisements

第3回 並列計算機のアーキテクチャと 並列処理の実際
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
オペレーティングシステム 第3回 プロセスの管理とスケジューリング
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
Ibaraki Univ. Dept of Electrical & Electronic Eng.
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
全体ミーティング (4/25) 村田雅之.
オペレーティングシステム (プロセス管理)
オペレーティングシステム 第5回 プロセスの相互排除
オペレーティングシステムJ/K 2004年10月7日
JTAG ICEによる 組み込みLinuxデバッグ
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
オペレーティングシステム (OSの機能と構造)
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
オペレーティングシステムJ/K 2004年11月4日
計算機システム概論・2回目 本日のトピック:プロセスについて プロセスとは プロセスのスケジューリングについて 多重プロセスの問題 排他制御
オペレーティングシステム 第12回 仮想記憶管理(3)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
オペレーティングシステム (割り込み処理)
Linuxカーネルについて 2014/01.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
CONCURRENT PROGRAMMING
Linux リテラシ2006 第6回 デーモン CIS RAT.
オペレーティングシステム2004 プロセス (1) 2004年10月8日 海谷 治彦.
第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令
オペレーティングシステムとは オペレーティングシステム 第3回.
Occam言語による マルチプリエンプティブシステムの 実装と検証
型付きアセンブリ言語を用いた安全なカーネル拡張
オペレーティングシステムJ/K (実時間処理システム)
P2P方式によるオンラインゲームの研究、開発
オペレーティングシステムJ/K 2004年10月25日
仮想マシン間にまたがる プロセススケジューリング
オペレーティングシステム (プロセス管理)
オペレーティングシステム (プロセス管理)
オペレーティングシステム (プロセス管理とスケジューリング)
オペレーティングシステム 第4回 プロセス生成とスレッド
OSの仕組みとその機能 1E16M001-1 秋田 梨紗 1E16M010-2 梅山 桃香 1E16M013-3 大津 智紗子
仮想マシン間プロセススケジューリングの 実環境への適用にむけて
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Linux Device Driver 輪講 7. 時の流れ
オペレーティングシステム 第3回 プロセスの管理とスケジューリング
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
オペレーティングシステム 第2回 割り込みとOSの構成
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステムJ/K 2004年11月15日2時限目
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
オペレーティングシステム (OSの機能と構造)
オペレーティングシステム (プロセススケジューリング)
オペレーティングシステムJ/K 2004年10月4日
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
オペレーティングシステムJ/K (管理のためのデータ構造)
アルゴリズムとデータ構造1 2009年6月15日
6.5 セマフォ セマフォ(semaphore): 複数のタスク(もしくはスレッド)が「同期」または「相互排除」の制御のために取得(acquire)・リリース(release)できるカーネルオブジェクトの総称.
ネットワーク・プログラミング デバイスドライバと環境変数.
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
オペレーティングシステム (プロセススケジューリング)
アルゴリズムとデータ構造 2010年6月17日
オペレーティングシステム (OSの機能と構造)
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ネットワーク・プログラミング プロセスとファイルシステム管理.
オペレーティングシステム (プロセス管理)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

オペレーティングシステム (プロセス管理とスケジューリング) 2009年10月5日 酒居敬一(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS/2009/

初期化中 稼動状態 電源オン POST ブートストラップ IPL OS コマンド インタプリタ ユーザ・ タスク1 ユーザ・ タスク2 ハードウェアのリセット処理によりプロセッサが働き始める。つまり、リセットベクタで指定されたプログラムを実行する 初期化中 稼動状態 電源オン POST I/Oのチェック メモリチェック 初期化 ブートストラップ IPL OS IPLを読み込む コマンド インタプリタ OSを読み込み システムタスクとして稼動 ユーザ・ タスク1 ユーザ・ タスク2 OSの初期化終了後、コマンド・インタプリタを起動 ユーザーからのコマンドを処理する ユーザ・ タスクn

プロセスの概念(23ページ) プロセッサを抽象化したもの 固有の記憶空間が与えられる 実行のひとつの単位 プログラム、データ、レジスタの中身… を含む 固有の記憶空間が与えられる 記憶空間などを共有しているもの→スレッド スレッドとプロセスを明確に区別しない→タスク 実行のひとつの単位 プロセスは(理想的には)複数が同時に走行 (現実にはプロセッサはプログラムを処理するために使われる資源で、複数のプロセスで共有)→次回

並行処理と並列処理 並行処理(Concurrent Processing) 並列処理(Parallel Processing) 複数のプロセスにより処理すること 複数のジョブが互いに独立したプロセスになる 並列処理(Parallel Processing) ひとつのジョブを複数のプロセスに分割

タスクとジョブ タスクはコンピュータからみた仕事の単位 ジョブは人間からみて目的のある一区切りの仕事 シングルタスクOS ひとつのタスクしか扱わないOS マルチタスクOS 複数のタスクを扱えるようにしたOS ジョブは人間からみて目的のある一区切りの仕事 逐次的なジョブ処理 シングルタスクOSでもマルチタスクOSでも処理できる 並行的なジョブ処理 マルチタスクOSでないと処理できない ※ タスクはプロセスとスレッドを区別しない言い方

ジョブ管理とタスク管理の関係 ジョブ実行のスケジューリング タスク実行のスケジューリング 並行的(マルチジョブ) 逐次的(シングルジョブ) 資源の量と全体の処理時間をもとに、優先度をつけて処理 逐次的(シングルジョブ) ただ順番に処理する。スケジューリングの必要がない。 タスク実行のスケジューリング 機械的に処理される。 タスクはOSからみた仕事の単位であるから。 OSが資源の利用状況を見ながら、スケジューリング

ハードウェアの管理 Uni-Processor Multi-Processor 管理する主体(=プロセッサ)がひとつ 管理する主体が複数ある つまり、プロセスの実行管理だけを考えればよい Multi-Processor 管理する主体が複数ある どのプロセッサが何を管理するか、という管理も必要! 計算機の実装方式が複数ある OS内部の管理表は唯一でなければならないが、 複数プロセッサ間で管理のための方法が単一ではない!

プロセスの構造(25ページ) テキストセグメント データセグメント ヒープ領域 スタックセグメント 共有セグメント レジスタコンテキスト

レジスタコンテキスト プロセッサの持つレジスタの内容 汎用レジスタ 浮動小数点数レジスタ プログラムカウンタ、リンクレジスタ スタックポインタ、フレームポインタ ステータスレジスタ マルチメディア拡張のためのレジスタ

プロセス管理 プロセス制御ブロックPCB(Process Control Block) プロセスの状態 コンテキスト 優先順位 実行可、待ち、消滅中、など コンテキスト レジスタ、資源管理表 優先順位 タイムスライス、実行優先度、経過時間、など PCBは線形リストを形成する 線形リストによりキューを実現 線形リストはタスクの状態ごとに存在する

タスク構造体 プロセスやスレッドの状態 スケジューリングポリシー 仮想記憶 スレッドの情報 /usr/src/linux/include/linux/sched.h struct task_struct がLinux OSのタスク構造体 current が参照するタスクが現在実行中のタスク タスク構造体型のデータはカーネル空間に存在 タスク構造体から参照される管理表は多い

プロセスの存在形態(27ページ) 実行中タスク 実行可能タスク 実行待ちタスク 入出力 仮想記憶処理 登録済タスク 条件待ちタスク 通信 異常停止タスク 同期 未登録タスク 実行不可能タスク 生成中タスク その他条件 消滅中タスク

プロセスの状態 [sakai@star linux]$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1368 444 ? S Sep03 0:04 init [3] root 1300 0.0 0.1 1444 580 ? S Sep03 0:02 syslogd -m 0 root 1304 0.0 0.0 1364 420 ? S Sep03 0:00 klogd -x rpc 1314 0.0 0.1 1544 600 ? S Sep03 0:00 portmap root 1403 0.0 0.1 1484 536 ? S Sep03 0:00 /usr/sbin/automou named 1417 0.0 0.7 39980 3836 ? S Sep03 0:00 /usr/sbin/named - root 1456 0.0 0.1 2076 856 ? S Sep03 0:00 xinetd -stayalive ntp 1469 0.0 0.4 2392 2384 ? SL Sep03 0:08 ntpd -U ntp -g lp 1487 0.0 0.8 11800 4412 ? S Sep03 0:13 lpd Waiting root 1563 0.0 0.2 2520 1528 ? S Sep03 0:01 /usr/sbin/dhcpd e root 1630 0.0 0.1 1416 552 ? S Sep03 0:02 crond xfs 1688 0.0 0.9 9780 4944 ? S Sep03 0:21 xfs -droppriv -da root 1697 0.0 0.2 5800 1532 ? S Sep03 0:00 smbd -D root 1701 0.0 0.2 4636 1312 ? S Sep03 0:14 nmbd -D daemon 1719 0.0 0.0 1408 508 ? S Sep03 0:00 /usr/sbin/atd root 1857 0.0 0.1 2280 752 ? S Sep03 0:00 login -- sakai root 1858 0.0 0.0 1344 340 tty2 S Sep03 0:00 /sbin/mingetty tt sakai 1881 0.0 0.1 5352 980 tty1 S Sep03 0:00 -bash sakai 1910 0.0 0.0 2332 484 tty1 S Sep03 0:00 xinit root 1911 0.5 9.2 95476 47424 ? S Sep03 344:10 X -auth /home/sak sakai 1915 0.0 0.3 7076 1560 tty1 S Sep03 0:00 kterm -fn 8x16 -f sakai 1921 0.0 1.0 13416 5304 tty1 S Sep03 1:43 gkrellm -g -0+0 sakai 1931 0.0 1.6 25148 8668 tty1 S Sep03 0:14 twm sakai 1943 0.0 0.1 5348 972 pts/4 S Sep03 0:00 bash root 436 0.0 0.4 6220 2544 ? S Sep13 0:00 sendmail: accepti smmsp 444 0.0 0.4 6016 2308 ? S Sep13 0:00 sendmail: Queue r sakai 18193 0.0 0.5 8960 2628 tty1 S Oct09 0:01 aumix-X11 sakai 30076 0.1 8.8 121468 45784 tty1 R Oct19 1:54 /usr/lib/mozilla- sakai 32189 0.0 0.1 2724 776 pts/12 R 11:44 0:00 ps aux

例: プロセスの待ち状態 入出力待ちの場合、デバイスのほうにキューを持たせる struct lp_struct { struct pardevice *dev; unsigned long flags; unsigned int chars; unsigned int time; unsigned int wait; char *lp_buffer; #ifdef LP_STATS unsigned int lastcall; unsigned int runchars; struct lp_stats stats; #endif wait_queue_head_t waitq; unsigned int last_error; struct semaphore port_mutex; wait_queue_head_t dataq; long timeout; unsigned int best_mode; unsigned int current_mode; unsigned long bits; }; struct __wait_queue { unsigned int flags; #define WQ_FLAG_EXCLUSIVE 0x01 struct task_struct * task; struct list_head task_list; #if WAITQUEUE_DEBUG long __magic; long __waker; #endif }; typedef struct __wait_queue wait_queue_t; struct __wait_queue_head { wq_lock_t lock; long __creator; typedef struct __wait_queue_head wait_queue_head_t;

スケジューリング(28ページ) 現実にはCPU数がプロセス数より少ない プロセスにCPUを割付たり取り上げたりする プロセススケジューリングのアルゴリズム プロセスにCPUを割付たり取り上げたりする プロセスのディスパッチャー B-sh系 /usr/bin/time gogo -test 1000 >a 2>&1 & nice -19 /usr/bin/time gogo -test 1000 >b 2>&1 & C-sh系 /usr/bin/time gogo -test 1000 > & a & nice +19 /usr/bin/time gogo -test 1000 > & b &