자식 프로세스는 현재 수행중이던 프로세스에서 새로운 프로세스를 실행시키는 것을 말합니다.
예를들어 아래 그림을 보면......
explorer.exe 아래 KakaoTalk.exe, PotPlayerMini.exe, Procexp.exe 등등이 수행되고 있음을 알 수 있는데요
바로 explorer.exe가 부모 프로세스
그 explorer.exe가 실행시킨 KakaoTalk.exe, PotPlayerMini.exe, Procexp.exe들이 자식 프로세스라고 볼 수 있습니다.
여기서 부모/자식간의 연관관계와 독립관계가 있는데요.
- 연관관계 : procexp.exe => procexp64.exe
- 독립관계 : explorer.exe => 하위 자식 프로세스들
연관관계와 독립관계는 프로세스간 공유하는 자료가 있고 서로 자료를 주고받는지 생성/종료에 따라 연관을 갖고 동작하는지에 따라 분류되게 됩니다.
이렇게 자식 프로세스를 만들어서 수행시키는 이유는
멀티 태스킹 작업을 수행할 때 이점을 얻을 수 있기 때문입니다.
한 프로세스 내에서 새로운 스레드를 수행시켜서도 구현 가능하지만 필요에 따라 새로운 프로세스를 생성하는게 동기화 이슈들을 비롯한 이 있을 수 있습니다.
- 모든 경우에 자식 프로세스를 생성하는게 옳다는 이야기는 아닙니다! 상황에 따라서 알맞게!
위 그림 같은 경우에는 부모 프로세스인 explorer.exe와 하위에 있는 자식 프로세스들이 독립적인 관계이지만 procexp.exe의 자식 프로세스인 procexp64.exe는 서로 자료를 주고 받으며 수행되는 부모/자식 관계입니다.
부모/자식 프로세스간에는 하나의 프로세스에서 수행되는 것이 아니기 때문에 서로 메모리 주소 공간이 각각 별도로 존재하게 됩니다.
이런 경우에는 부모 프로세스의 자료를 자식 프로세스가 참조할 수 있도록 해주어야 하는데요.
이럴 때 사용되는 것들이 DDE, OLE, 파이프, 메일슬롯, 메모리 맵 파일 등등의 방법으로 자료를 전송할 수 있도록 해줍니다. (이것들은 나중에.. 포스팅하겠습니다.)
어떤 프로세스에서 새로운 프로세스를 생성하고 결과를 기다리는 코드를 작성한다고하면 아래와 같이 작성할 수도 있습니다.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx
위 코드에 대해서 설명을 드리자면..
CreateProcess 함수는 이전 포스팅을 참고! 새로운 프로세스를 생성하는 함수입니다.,
- 프로세스의 생성 1 : http://wonjayk.tistory.com/277
- 프로세스의 생성 2 : http://wonjayk.tistory.com/278
'Windows > Windows Programming' 카테고리의 다른 글
잡 (Job) (0) | 2016.05.07 |
---|---|
프로세스 권한 상승 - ShellExecuteEx() (0) | 2016.04.16 |
프로세스의 종료 (0) | 2016.04.02 |
파일/디렉토리 접근 권한 (FILE_READ_DATA, FILE_WRITE_DATA ......) (0) | 2016.02.27 |
프로세스의 생성 2 - CreateProcess() (2) | 2016.02.13 |