CS지식 쌓기

프로세스 상태와 계층 구조

류도토리 2024. 1. 2. 17:19
  1. 프로세스 상태
    1. 생성 상태
      1. 이제 막 메모리에 적재되어 PCB를 할당 받은 상태
      2. 준비가 완료되었다면 준비 상태로
    2. 준비 상태
      1. 당장이라도 CPU를 할당받아 실행할 수 있음
      2. 자신의 차례가 아니기에 기다리는 상태
      3. 자신의 차례가 되면 실행 상태로 바뀜(=디스패치)
    3. 실행 상태
      1. CPU를 할당 받아 실행 중인 상태
      2. 할당된 시간 모두 사용 시 준비 상태로
      3. 실행 도중 입출력 장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태
    4. 대기 상태
      1. 프로세스가 실행 도중 입출력 장치를 사용하는 경우
      2. 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듬
      3. 입출력 작업이 끝나면(입출력 완료 인터럽트를 받으면) 준비 상태로
    5. 종료 상태
      1. 프로세스가 종료된 상태
      2. PCB, 프로세스의 메모리 영역 정리
  2. 프로세스 상태 다이어그램
  3. 프로세스 계층 구조
    1. 프로세스 실행 도중 (시스템 호출을 통해) 다른 프로세스 생성 가능
    2. 새 프로세스를 생성한 프로세스 : 부모 프로세스
    3. 부모 프로세스에 의해 생성된 프로세스 : 자식 프로세스
    4. 부모와 자식 프로세스는 별개이기 때문에 각기 다른 PID를 가짐
    5. 일부 운영체제에서는 자식 프로세스 PCB에 부모 프로세스 PID(PPID)를 명시하기도 함
    6. 자식 프로세스는 자식 프로세스를 나을 수 있음
  4. 프로세스 생성 기법
    1. 복제와 옷 갈아입기
      1. 부모 프로세스는 fork 시스템 호출을 통해 자신의 복사본을 자식 프로세스로 생성
        1. 부모 프로세스의 자원 상속
      2. 자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체
        1. 메모리 공간을 새로운 프로그램으로 덮어쓰기
        2. 코드/데이터 영역은 실행할 프로그램 내용으로 바뀌고 나머지 영역은 초기화
    2. exec 시스템 호출을 하기 전은 부모 프로세스와 같은 프로세스임

'CS지식 쌓기' 카테고리의 다른 글

CPU 스케줄링  (1) 2024.01.02
스레드와 프로세스  (1) 2024.01.02
프로세스  (0) 2024.01.02
운영체제  (0) 2024.01.02
다양한 입출력 방법  (0) 2024.01.02