担当:青木義満 yaoki@sic.shibaura-it.ac.jp 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満 yaoki@sic.shibaura-it.ac.jp.

Slides:



Advertisements
Similar presentations
システムプログラミング 第11回 シグナル 情報工学科 篠埜 功. 今回の内容 前回の補足( exit システムコールについ て) プロセス間通信 – シグナルの送信 --- 今回の内容 – パイプによる通信 – ソケットによる通信.
Advertisements

ネットワーク・プログラミ ング カーネルの役割とプロセス生成. 1.1 OS の役割 仮想マシン OS はハードウェアの多様性 をカプセル化し、利用者を 複雑な処理から開放する。 プロセス管理 時間多重化により各プロセ スに CPU を割当てる。 メモリ管理 メモリ空間の多重化により、 各プロセスにメモリを割当.
プロセスの生成とコマンドの実行 プロセスの生成とコマンドの実行 プロセス生成のシステムコール プロセス生成のシステムコール プロセス生成のプログラム例 プロセス生成のプログラム例 プログラム実行のシステムコール プログラム実行のシステムコール 子プロセスの終了を待つシステムコール 子プロセスの終了を待つシステムコール.
システムプログラミング 第10回 情報工学科 篠埜 功. 今回の内容 プロセス(続き) – execve システムコール 現在のプロセスを、引数に与えられたファイル(実行 形式ファイルあるいはシェルスクリプト等の実行可能 なファイル)を受け取り、現在のプログラムをそれで 置き換える(変身)。 fork.
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
計算機システム概論・3回目 本日のトピック:割込みと入出力制御について 割込み制御について 問題点の明確化 割込みとは
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
1.コンピュータと情報処理 p.20 第1章第1節 3.ソフトウェア ソフトウェア 基本ソフトウェア
システムプログラミング 第6回、7回 main関数の引数 usageメッセージ システムコールのエラーメッセージ ファイル
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
オペレーティングシステム (OSの機能と構造)
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第1回 イントロダクション 担当:青木義満
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
計算機システム概論・2回目 本日のトピック:プロセスについて プロセスとは プロセスのスケジューリングについて 多重プロセスの問題 排他制御
App. A アセンブラ、リンカ、 SPIMシミュレータ
2006年度 計算機システム演習 第4回 2005年5月19日.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
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.
オペレーティングシステム i386アーキテクチャ(2)
割り込み.
割り込み.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
シグナル通信 普通の割込みとソフトウェア割込み ソフトウェア割込みとシグナル キーボードからのシグナル 例外 (exception)
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
情報コミュニケーション入門b 第6回 Part1 オペレーティングシステム入門
スレッドとプロセス 本題: スケジューリング
情報コミュニケーション入門e 第11回 Part1 オペレーティングシステム入門
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第10回 プロセス間通信3 担当:青木義満
システムプログラミング 第9回 、10回 ハードリンク、シンボリックリンク プロセスの生成
システムプログラミング 第12回 プロセス間通信 情報工学科 篠埜 功.
OSの仕組みとその機能 1E16M001-1 秋田 梨紗 1E16M010-2 梅山 桃香 1E16M013-3 大津 智紗子
実行時情報に基づく OSカーネルのコンフィグ最小化
オペレーティングシステム イントロダクション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
情報コミュニケーション入門b 第6回 Part1 オペレーティングシステム入門
情報コミュニケーション入門e 第11回 Part1 オペレーティングシステム入門
オペレーティングシステム 第2回 割り込みとOSの構成
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステムJ/K 2004年11月15日2時限目
組込みシステムとは コンピュータ制御システム?
コンピュータの仕組み ~ソフトウェア~ 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
オペレーティングシステム (OSの機能と構造)
システムプログラミング 第12回 プロセス間通信 情報工学科 篠埜 功.
実装について 前田俊行.
システムプログラミング 第6回 システムコールのエラーメッセージ ファイルシステム 情報工学科 篠埜 功.
オペレーティングシステムJ/K 2004年10月4日
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第12回 システムプログラミング 反復サーバと並行サーバ 担当:青木義満
コンピュータアーキテクチャ 第 4 回.
ネットワーク・プログラミング デバイスドライバと環境変数.
システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功
第5回 プログラミングⅡ 第5回
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
システムプログラミング 第9回 、10回 ハードリンク、シンボリックリンク プロセスの生成
オペレーティングシステム (OSの機能と構造)
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ネットワーク・プログラミング プロセスとファイルシステム管理.
Presentation transcript:

担当:青木義満 yaoki@sic.shibaura-it.ac.jp 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満 yaoki@sic.shibaura-it.ac.jp

システムプログラミングへの準備 システムコールとは? システムコールの仕組み,働きの理解

システムコールの役割 システムコール ライブラリ関数の行き着く先 例 printf関数 → writeシステムコールを呼び出し 画面に文字を表示 HDDにデータを書き込み ネットワークにデータを伝送 etc…..

Unixシステムの構成

1.カーネル層 メモリに常駐しているプログラム,ハードウェアとの接点,システム層以上の上位層をハードウェアに依存しない独立したものとする役割 ハードウェアを抽象化して統一的に扱える機構を提供 システム資源の管理 メモリ,入出力,ファイル,プログラム

2.システム層 Unixが動くのに最低限必要となるプロセス,ディレクトリ,ファイルから構成 あらかじめ用意されているソフトウェア群 シェル(CLI), GUIもここに属する

3.ユーティリティ層 ユーザにより,必要に応じて導入されるソフトウェア群 ソフトウェア開発用コマンド,テキスト文書作成,データ処理 等

4.ユーザ層 下位のユーティリティ,システム又はカーネル層の機能を用いて実現されるアプリケーションプログラムやシェルスクリプト 利用者自身の作成したプログラム,フリーソフトなど

カーネル+システム層まで カーネル層からユーティリティ層まで → オペレーティングシステム(OS) カーネル最小化の傾向へ → システムソフトウェア カーネル層からユーティリティ層まで → オペレーティングシステム(OS) カーネル最小化の傾向へ カーネル内のほとんどの機能をプロセスとして実現,カーネルから追い出し カーネルを軽くする カーネライズド・カーネル(核化したカーネル)

システムコールの役割 システム層以上のソフトウェアがカーネル層の機能を呼び出す カーネルが管理しているシステムのリソース(資源)をアクセスする手段 システムコール関数 write()の例 write自身が機能提供するわけではなく,単にカーネルを呼び出している 呼ばれたカーネル内で対応する処理を実行,結果をwrite()に返す システム層以上のソフトウェアとカーネル層との情報伝達手段 カーネル層の機能を呼び出して結果を得る カーネル層と上位層との間でデータ交換を行う機能を提供

システムコールの仕組み 例)ファイルからのデータ読み出し 2つの実行モード ユーザプログラムから直接ファイルアクセスしない システムコールに対応するカーネル層のプログラム 2つの実行モード ユーザプログラム自身のコードの実行 ユーザモード 2.カーネル層のプログラムコードの実行 カーネルモード

ユーザモードとカーネルモード カーネルモード ユーザモード 割り込みなどの例外が発生したときに制御が移るモード。 ユーザ,ユーティリティ,システム層のプログラム 直接,あるいは間接的にライブラリ関数を用いてシステムコールを呼ぶと,システムコール関数内で実行モードをカーネルモードに変更する命令を発令(trap命令:ソフトウェア割り込み)

システムコールの実行過程 OSがシステムコールに番号を割当て,これによりシステムコールを識別 手順 システムコール関数内で自分自身に割り当てられた番号をCPU毎に規定されている方法に従ってカーネル層に渡す カーネル層では,受け取ったシステムコール番号をインデックスとし,切り替え表を検索,実行

図3.2

システムコールの種類と機能 機能 ファイルの入出力 端末入出力 プロセスの生成と実行 シグナル処理 プロセス間通信

システムプログラミング プロセスの生成

システムコールの種類と機能 機能 ファイルの入出力 端末入出力 プロセスの生成と実行 シグナル処理 プロセス間通信

プロセスとは? 「プログラム」:実行形式ファイル プログラムを実行するには? いわゆる「プログラム」のみでは実行不可能! ユーザプログラムは直接or間接的にシステムコールを呼ぶ → カーネル内関数が必要 CPUやメモリ,ディスクなど,ハードウェア資源を割り当ててもらう必要 いわゆる「プログラム」のみでは実行不可能!

プロセスとは? 「プロセス」 プロセスモデル =プログラム+ソフトウェア資源+ハードウェア資源 (プログラムを実行する環境) =プロセッサ+実行環境(イメージ)から構成 プロセスモデル P:プロセッサ   I:イメージ P I P I P I 初期状態 終了状態 ※プロセッサと作用するイメージの行動状態が時間的に変移

ユーザリングとカーネルリング 1つのプロセス 「リング切り替え」が起こる2事象 ユーザプロセス⇔カーネルプロセス 両者の切り替え(リング切り替え) 「リング切り替え」が起こる2事象 システムコール及び内部割込み からなるトラップ命令の呼び出しと復帰 ユーザプロセスでの割り込み (インタラプト,タイマーやハードウェア)

プロセスの木構造 UNIXプロセス プロセスの区別 fork()システムコールにより生成 親プロセスと子プロセス 親から生成された子プロセスは親の分身 exec()システムコールにより,別のプロセスへ変身 プロセスの区別 カーネルは各プロセスをプロセスID(PID)により識別

プロセスの生成と変身

プロセスの木構造 プロセス0:カーネルプロセス プロセス1:init システム起動時に生成される特別なプロセス プロセス1をfork()で生成後,スケジューラとなる プロセス1:init システムにおけるすべてのプロセスの先祖 initから始まるプロセス生成の繰り返しにより,プロセスの木構造を形成

実際のUNIXプロセス木

プロセスの状態 生成プロセスの生涯 定められた規則に従い,5つの状態を遷移 実行状態:現在CPUで実行中の状態 休眠状態:入出力の終了待ちなどで実行を継続できない状態 生成状態:fork()システムコールにより生成された状態 ゾンビ状態:exit()システムコールにより終了した状態

プロセスの状態遷移図 入力待ちにより実行状態→休眠状態へ CPU占有時間経過による実行状態→実行可能状態への遷移 他のプロセスへ実行権を譲る 多重プログラミング機能の実現 CPU占有時間経過による実行状態→実行可能状態への遷移 OSのTSS(Time Sharing System)機能の実現

プロセスの管理 プロセスIDとプロセスグループID プロセスID プロセスグループID プロセスを一意に識別するための番号 共通のプロセスを先祖に持つ複数のプロセスを親族とし,プロセスグループとして管理 例) ログインシェル → ウインドウを開く     → コマンドを実行     ・・・・・

プロセスの優先度 実行可能状態にあるプロセスに対して優先度を定義 スケジューラにより,優先度の高い順に選択されて実行 カーネル プロセス優先度を自律的制御で刻々と変化 プロセス実行の機会均等を実現 優先度を変更するシステムコール nice()

端末上で動いているプロセスを表示してみよう ps コマンドでプロセスを表示 様々なオプション ps –ef でプロセスを表示してみる

子プロセスの生成 int 親プロセスの分身が子プロセスとして生成(PID)は異なる Fork()終了後,全く同じプロセスが平行して実行

親プロセスと子プロセスの切り分け forkの戻り値 0: 子プロセスに返される。子プロセスの動作を記述 1以上:子プロセスのプロセスIDが親プロセスに返される。親プロセスの動作を記述 -1: 親プロセスに返される。エラー処理 execシステムコールにより, 他プロセスに変身!

子プロセス生成後,親プロセスはwait()を呼んで子プロセスの終了を待つ 子プロセスの終了ステータス情報を得るため,引数statusをアドレス渡し 子プロセスの終了ステータス情報が,statusの指すintの領域の下位16ビットに格納 ステータス情報でわかること ・子プロセスが終了したのか,停止したのか ・子プロセスが終了した場合の終了の原因