달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2012. 1. 4. 21:50

프로세스 관리 - execv() fork() OS이야기2012. 1. 4. 21:50

fork()
PGID는 프로세스 그룹 ID를 의미한다. 한 프로세스에서 fork() 함수를 이용해서 자식 프로세스를 생성하면, 같은 프로세스 그룹을 갖게 된다.
bash쉘은 다른 명령들의 부모 프로세스가 된다. ls명령어와 같은...

SID는 세션 그룹을 의미한다. 리눅스는 프로세스들을 세션 그룹, 프로세스 그룹, 프로세스로 관리한다. 프로세스 그룹 ID를 이용해서 종료하면 해당 프로세스 그룹에 속한 프로세스들을 정리할 수 있으며, 세션 그룹을 이용해서 프로세스를 종료하면 그 안에 속한 프로세스 그룹들의 프로세스들을 모두 종료하게 된다. 한마디로, 세션이 프로세스 그룹보다 더 큰 개념

execv()
- exec 계열 함수중 하나
- 완전히 다른 프로세스 이미지가 실행되도록 한다.
- argv = {"ps", "aux"}; execv("/bin/ps", argv);
- 이 프로그램은 ps aux를 실행하는 프로세스 이미지가 됨.

fork() 함수로 자식 프로세스를 생성하면, 부모 프로세스가 자식 프로세스를 기다려주지 않는다.
wait()를 사용하면 자식 프로세스의 실행이 끝나는 것을 기다려줄 수 있다.
실제 처리는 커널 2.4는 sys_wait4(), 커널 2.6은 do_wait()함수에서 담당

SysV스타일의 wait()함수는 BSD스타일의 wait3()에 매핑
SysV 스타일의 waitpid()함수는 BSD스타일의 wait4()에 매핑
 

'OS이야기' 카테고리의 다른 글

프로세스 종료  (0) 2012.01.04
프로세스 생성 (2.4)  (0) 2012.01.04
프로세스 관리 - 파일시스템 & 파일  (0) 2012.01.04
C 컴파일러 과정  (0) 2012.01.04
페이지 벡터  (0) 2012.01.04
:
Posted by НooпeУ


Code Start Code End