Process   프로세스

(2020-03-02)

PID, PPID, 프로세스 ID

1. 프로세스 (Process)

  ㅇ 실행중인 프로그램


2. 프로세스 특징

  ㅇ 시분할 작업의 단위
     - 시분할 시스템에서 볼 때, 분할 시간 마다 그 대상이 되는 작업 단위
  ㅇ 하나의 프로그램이 여러 프로세스를 만들 수 있음         ☞ fork 등 참조
     - (프로그램 : 실행시 프로세스에 관한 광범위한 정보를 갖는 파일)
     - 단일 프로그램이 여러 프로세스를 생성 가능
     - 즉, 여러 프로세스들이 동일 프로그램으로 실행 가능
  ㅇ 자원이 할당된 추상적인 존재
     - 운영체제커널 관점에서, 프로세스 구성은,
        . 프로그램의 실행 코드,변수,상수 등의 데이터를 담고있는 사용자 메모리 공간과,
        . 프로세스 상태 정보를 관리하는 커널 메모리 공간으로 구성됨
     - 프로세스메모리 격리
        . 프로세스는 타 프로세스,커널로부터 격리되어, 이들 메모리에 읽기/쓰기가 제한됨 
  ㅇ 병행 실행이 가능                                       ☞ 병행 프로세스 참조
     - 이때, 프로세스 간 통신 필요 ☞ IPC 참조


3. [Unix/Linux]  프로세스의 특징

  ㅇ 부모 프로세스가 있게됨
     - 자식 프로세스가 종료되면, 그 사실이 부모 프로세스에게 알려지게됨
     - 한편, 커널은, 스스로가 자신의 부모 프로세스임

  ㅇ 소유자가 있음
     - 특정 사용자 권한으로 실행되고,
     - 취급 파일에 대한 퍼미션(접근권한)에 따라 읽기,쓰기 등 권한을 달리함

  ㅇ 프로세스별 식별을 위해 16 비트 PID를 사용  ☞ 아래 5.항 참조

  ㅇ 커널에 의해 관리됨


4. [Unix/Linux]  개별 프로세스의 메모리 구성텍스트 섹션
     - 적재된 프로그램 코드
     - 여러 프로세스가 동일 프로그램으로 실행 가능하므로,
       텍스트 섹션은 공유될 수 있음
  ㅇ 데이터 섹션
     - 전역 변수, 정적 변수프로세스  섹션
     - 함수 매개변수, 복귀 주소, 지역변수와 같은 임시 자료
  ㅇ 프로세스 스택 섹션
     - 동적인 메모리 할당영역

      

  ※ 한편, 각 프로세스가 자신 만의 주소공간을 갖음
     - 따라서, 그에 상응하는 메모리를 필요로 함  ☞ 가상 메모리 참조


5. [Unix/Linux]  개별 프로세스 ID

  ㅇ (Process ID, PID)
     - 프로세스 식별용 ID
     - 양의 정수 (16 비트, 최대 216)
        .  1 ~ 32,767 (기본 상한, 조정 가능)
     - 시스템호출 에서,
        .  프로세스 식별용 숫자로써, 인자,리턴값으로 사용됨

  ㅇ (Parent Process ID, PPID)
     - init 프로세스를 제외한 모든 프로세스는,
     - 부모 프로세스를 갖으며, 이의 식별용 ID 를 갖음

  ㅇ [참고]
     - pid,ppid 확인용 시스템호출 : getpid(), getppid()
     - 응용 프로그램 내 pid 참조 방법 : sys/types.h 내 정의된 pid_t(typedef 별칭)를 이용하면 됨
     - 현재 에서 프로세스 확인 명령어 : ps


6. [Unix/Linux]  개별 프로세스의 복제 (시스템콜)forkexec
  ㅇ spawn


[UNIX 프로세스] 1. 프로세스 2. 시스템 호출 3. init,exec,fork 4. 시그널 5. 좀비

 
        최근수정     요약목록     참고문헌