Process Management
8544 ワード
プロセスの作成
コピー-書き込み(COW)テクノロジー:子プロセスが親プロセスのみを共有し、変更が発生した場合は、コピーの作成ではなくその部分のみをコピーします.
親プロセスサブプロセスの作成(コピーの作成)
プロセスツリーの作成(階層)
プロセス実行に必要なリソース
リソース共有
修行する
アドレス空間
Unixの例
プロセスの終了
fork()システムコール
プロセスはfork()システムプロトコルによって作成されます.
int main(){
int pid;
printf("\n 부모 프로세스만 출력할 수 있는 부분");
pid= fork(); //fork 시점 이후부터 자식 프로세스가 실행됨(부모 프로세스의 PC를 자식이 알고 있기 때문에(문맥을 복사했기 때문))
//fork()의 리턴으로 pid가 오는데, 부모 프로세스의 pid는 양수이고, 자식 프로세스 는 0(구분가능)
if(pid==0)
printf("\n Hello, I'm Child Process");
else if(pid>0)
printf("\n Hello I'm Parent Process");
...
}
exec()システムコール
プロセスはexec()システムプロトコルで他のプログラムを実行できます.
int main(){
int pid;
pid= fork();
if(pid==0){
printf("Hello I'm Child");
execlp("/bin/date", "/bin/date",(char*)0);//이 함수가 exec() 시스템 콜을 함
//자식 프로세스는 date라는 프로그램을 덮 어씌우게 됨(새로운 프로그램 실행). 자식 프로세스는 해당 프로그램이 종료되면 수행을 다함. 다시 이곳으로 돌아올 수는 없음
}
else if(pid>0) printf("Hello I'm parent");
...
}
wait()システムコール
親プロセスをサブプロセスが終了するまでスリープ状態にします.
子プロセスの終了時に親プロセスを起動(準備完了ステータス)
int main(){
int childPID;
childPID= fork();
if(childPID==0){
...
}else{
wait()
}
...
}
ex)Linuxのコマンドプロンプトで特定のプログラムの名前を入力すると、コマンドプロンプトという親プロセスが特定のプログラムの子プロセスを作成し、プログラムの終了を待ってからコマンドライン(サブプロセスの終了前にコマンドラインxを入力)を入力できます.
exit()システムコール
非自発的終了
プロセス間コラボレーション
独立プロセス
コラボレーションプロセス
プロセス間コラボレーションメカニズム
リファレンス
https://core.ewha.ac.kr/publicview/C0101020140307151724641842?vmode=f
Reference
この問題について(Process Management), 我々は、より多くの情報をここで見つけました
https://velog.io/@alwayslee_12/Process-Management
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Process Management), 我々は、より多くの情報をここで見つけました https://velog.io/@alwayslee_12/Process-Managementテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol