プロセスの生成とコマンドの実行 プロセスの生成とコマンドの実行 プロセス生成のシステムコール プロセス生成のシステムコール プロセス生成のプログラム例 プロセス生成のプログラム例 プログラム実行のシステムコール プログラム実行のシステムコール 子プロセスの終了を待つシステムコール 子プロセスの終了を待つシステムコール.

Slides:



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

システムプログラミング 情報工学科 篠埜 功 情報工学科 3 年生対象 専門科目 第5回 シェルスクリプトの続 き レポート課題 main 関数の引数 usage メッセージ.
ネットワーク・プログラミ ング カーネルの役割とプロセス生成. 1.1 OS の役割 仮想マシン OS はハードウェアの多様性 をカプセル化し、利用者を 複雑な処理から開放する。 プロセス管理 時間多重化により各プロセ スに CPU を割当てる。 メモリ管理 メモリ空間の多重化により、 各プロセスにメモリを割当.
オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
システムプログラミング 第10回 情報工学科 篠埜 功. 今回の内容 プロセス(続き) – execve システムコール 現在のプロセスを、引数に与えられたファイル(実行 形式ファイルあるいはシェルスクリプト等の実行可能 なファイル)を受け取り、現在のプログラムをそれで 置き換える(変身)。 fork.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
コンピュータリテラシー 第3回授業の復習 基本的なUNIXコマンド
システムプログラミング 第6回、7回 main関数の引数 usageメッセージ システムコールのエラーメッセージ ファイル
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
ファイルシステムの構造 外部記憶装置のパーティション(区画) ファイルシステムとパーティション(区画) ファイルシステムのmount
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
ネットワークプログラミング 第9回「応用ネットワークプログラミング(1)」
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
12: コマンドライン引数 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
第8回ネットワークプログラミング 中村 修.
12: コマンドライン引数 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
第8回 プログラミングⅡ 第8回
アルゴリズムとデータ構造 補足資料6-3 「サンプルプログラムcat3.c」
担当:青木義満、篠埜 功 情報工学科 3年生対象 専門科目 システムプログラミング 第8回、第9回 シグナル処理 担当:青木義満、篠埜 功
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
シグナル通信 普通の割込みとソフトウェア割込み ソフトウェア割込みとシグナル キーボードからのシグナル 例外 (exception)
第20章 Flyweight ~同じものを共有して無駄をなくす~
オペレーティングシステム2004 プロセス (1) 2004年10月8日 海谷 治彦.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
オペレーティングシステム2004 プロセス (2) および カーネルモード・システムコール
プログラミング論 ファイル入出力
システムプログラミング 第9回 、10回 ハードリンク、シンボリックリンク プロセスの生成
システムプログラミング 第12回 プロセス間通信 情報工学科 篠埜 功.
マルチスレッド処理 マルチプロセス処理について
iioLoadFile()とiioMallocImageBuffer()の補足
iioLoadFile()とiioMallocImageBuffer()の補足
iioLoadFile()とiioMallocImageBuffer()の補足
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
プログラミング演習I 2003年6月25日(第10回) 木村巌.
デバッガ dbx の使い方.
プログラミング入門2 第11回 情報工学科 篠埜 功.
演習1の解答例の解説 2004年10月21日 海谷 治彦.
プログラミング論 ファイル入出力
演習1の解答例の解説 2006年11月8日 海谷 治彦.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
2013年度 プログラミングⅡ ~ はじめてのプログラミング ~.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
ネットワーク・プログラミング ソケットオプションとスレッド.
2005年度 データ構造とアルゴリズム 第6回 「ハッシュ法を用いた探索」
C言語演習 情報ネットワーク特論.
情報工学科 3年生対象 専門科目 システムプログラミング 第4回 シェルスクリプト 情報工学科 篠埜 功.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
B演習(言語処理系演習)第2回 田浦.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
システムプログラミング 第12回 プロセス間通信 情報工学科 篠埜 功.
システムプログラミング 第6回 システムコールのエラーメッセージ ファイルシステム 情報工学科 篠埜 功.
システムプログラミング 第12回 プロセス間通信 情報工学科 篠埜 功.
ネットワーク・プログラミング デバイスドライバと環境変数.
ネットワーク・プログラミング 非同期I/Oとスレッド同期制御.
システムプログラミング 第9回 、10回 ハードリンク、シンボリックリンク プロセスの生成
ネットワーク・プログラミング TCPサーバ.
アルゴリズムとデータ構造 補足資料6-1 「サンプルプログラムcat1.c」
ネットワーク・プログラミング 1対多のプロセス間通信.
C言語プログラミング・課題 ファイルを読み込んで、その内容を表示するプログラムを作成せよ。
ネットワーク・プログラミング パイプライン通信とシグナル.
岡村耕二 UDP通信プログラム 課題と回答例 岡村耕二 情報ネットワーク.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
ネットワーク・プログラミング マルチタスク.
情報処理Ⅱ 2005年11月25日(金).
ネットワーク・プログラミング プロセスとファイルシステム管理.
モバイルプログラミング第3回 Cプログラミングの基礎( 2 )
12: コマンドライン引数 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
Presentation transcript:

プロセスの生成とコマンドの実行 プロセスの生成とコマンドの実行 プロセス生成のシステムコール プロセス生成のシステムコール プロセス生成のプログラム例 プロセス生成のプログラム例 プログラム実行のシステムコール プログラム実行のシステムコール 子プロセスの終了を待つシステムコール 子プロセスの終了を待つシステムコール 簡単なシェルの仕様 簡単なシェルの仕様 簡単なシェルの作成 簡単なシェルの作成

プロセスの生成とコマンドの実行 プロセス生成のシステムコール fork 子プロセスを生成する インクルードファイル #include #include 書式 pid_t fork (void); 戻値成功時 親プロセス : 子プロセス ID 子プロセス : 0 失敗時 -1 説明子プロセスは、親プロセスの複製 戻値によってプロセスは親か子かを 判断する。 親プロセス pid=100 fork(); 戻値 102 子プロセス pid=102 fork(); 戻値 0 子プロセスの生成

プロセスの生成とコマンドの実行 プロセス生成のプログラム例 lv.c #include int main(int argc,char *argv[]) { int dep_time; dep_time=atoi(argv[1])*60-5; if (fork()==0) { // 子プロセスの生成 sleep(dep_time); fprint(stderr, " Leave in 5 sec\n " ); } return EXIT_SUCCESS; } % gcc lv.c –o lv %./lv 1 ( 1 分後に予定あ り) % % Leave in 5 sec ( 5 秒前にアラー ム)

プロセスの生成とコマンドの実行 プログラム実行のシステムコール execl プログラムをロードし 実行 インクルードファイル #include 書式 int execl(const char *path, const char *arg,..); 戻値成功時 なし 失敗時 -1 説明 execl の引く数で指定したプログラムが execl を呼出たプロセスを上書きする プロセス execl( " /bin/ls ", " /bin/ls ", " -l ", NULL); / bin ls usr

プロセスの生成とコマンドの実行 子プロセスの終了を待つシステムコール wait 子プロセスの終了を待つ インクルードファイル #include #include 書式 pid_t wait (int *status); 戻値成功時 子プロセス ID 失敗時 -1 親プロセス fork(); wait(); 子プロセス exit(); 子プロセスの生成 子プロセスの 終了を待つ

プロセスの生成とコマンドの実行 簡単なシェルの仕様 簡単なシェルの仕様 シェルとは、 (1) 文字列を入力する (2) 入力された文字列で示されるコマンド(プログラム)を 実行 (3) コマンドの実行が終ったら (1) へ シェルプログラムの動作 プロンプトを表示 標準入力がなくなるまで以下を繰返す (1) 親プロセス ( シェル)は、文字列を入力する (2) 子プロセスを生成する (3) 子プロセスは、入力された1行をコマンドとして実行 する (4) 親プロセスは、子プロセスの処理が終るのを待つ (5) 親プロセスは、再び、プロンプトを表示する (6) 親プロセスは、再び、標準入力から次の1行入力を待 つ

プロセスの生成とコマンドの実行 簡単なシェルの作成 簡単なシェルの作成 nsh. c #include int main() { char command[256],line[256]; int st; static char prompt[64]= " > " ; fprintf(stderr, " %s ",prompt); while (fgets(line,sizeof(line),stdin)!=NULL { if (sscanf(line, " %s ",command)>0) { if (fork()==0) { if (execl(command,command,NULL)<0) { exit(EXIT_Failure); } } else { wait(&st); } fprint(stderr, " %s ",prompt); } return EXIT_SUCCESS; } %./nsh > /bin/ls ファイル名一覧が表示される > ( Ctrl-D を押すと、もとのシェ ルに戻る) %