12 -(2) process create

2018. 11. 20. 14:31임베디드sw공학

1, Process Management (Linux/Unix 에서의)

  1) 처음 UNIX를 시작하면, 한 개의 프로세스만 존재한다. "init"이란 프로세스. 이것의 PID는 '1'이다.

  2) UNIX에서 새로운 프로세스를 만드는 유일한 방법은 존재하는 프로세스를 복제하는 것이다. - 그래서 모든 프로세스의 조상은 'init'이다.

   예로 처음 만들어지는 child process의 parent process의 ID (PPID) 는 '1'이다.

  3) 복제는 fork() 을 사용한다.

  4) 복제된 프로세스는 PID, PPID, runtime을 제외하고 code, data, stack은 부모 프로세스와 같다.

 

  5) execve() 를 이용하여 복제된 프로세스의 코드를 바꿀 수 있다.

  6) fork() , execve(getty(PID X)) :

  7) getty() 는 log in하라는 창이 뜨고 User ID와 비밀번호를 입력하면, bash 셀 promth를 생성한다. 여기서 다시 fork(), execve(bash)를 하면 bash 프로세스가 생성된다.

 

 

  8) shell process가 실행되고 있는 상황에서 명령을 실행하면, fork()와 자기자신을 이용하여 쉘 프로세스가 복제되어진다.

  9) 생성된 child-shell process의 code 부분을 지정한 실행 파일의 code로 바꾼다. 그리고 parent shell은 child process가 종료될 떄까지 기다린다. ( wait()를 사용하여 )

 10) 수행된 child process가 종료되면, parent process는 깨어나서 child process의 뒷처리를 해주고 shell prompt를 깜빡깜빡 거린다.

 

 11) child process가 실행되는 와중에도 parent process 또한 작동 중이다.

 

 

'임베디드sw공학' 카테고리의 다른 글

9.시그널  (0) 2018.11.27
12 - (3) fork(), execve(), exit(), wait()  (0) 2018.11.20
12-(1) Process 의 개요.  (0) 2018.11.20
7. 리눅스시스템 프로그래밍: File I/O  (0) 2018.11.06