본문 바로가기

운영체제(OS)/프로세스 관리

프로세스 구조 및 관리 기법

1. 프로세스 관리

1.1 프로세스의 개념

  • 메모리에 올라가 실행 중인 프로그램
  • 일반적으로 잡(JOB)이라는 용어와 혼동해서 사용
  • 시분할 시스템 환경에서는 문맥 교환(context switch)을 위한 PCB를 가지는 객체

1.2 프로세스의 상태

  • 프로세스는 실행, 준비, 봉쇄의 세가지로 구분된다.
  • 실행 상태 : 프로세스가 CPU를 보유하고, 기계어 명령을 실행하고 있는 상태.
  • 준비 상태 : 프로세스가 CPU만 보유하면 당장 명령을 실행할수 있지만 CPU를 할당받지 못한 상태.
  • 봉쇄 상태 : CPU를 할당받더라도 당장 명령을 실행할 수 없는 프로세스의 상태.

1.3 프로세스 제어블록(PCB)

  • 프로세스 관리를 위해 프로세스 정보를 담은 커널내의 자료구조
  • 프로세스의 상태, 프로그램 카운터 값, CPU 레저스터값, CPU 스케쥴링 정보, 메모리 관리 정보, 자원 사용 정보, 입출력 상태 정보로 구성

1.4 문맥 교환

  • 하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU의 제어권이 이양되는 과정
  • 실행 시 오버헤드가 발생하므로 적절한 CPU할당시간을 유지하는것이 중요

1.5 프로세스 스케쥴링 큐

  • 프로세스 준비 큐 : 준비상태에 있는 프로세스들을 줄세우기 위한 큐(준비 상태)
  • 장치큐 : 특정 자원을 기다리는 프로세스들을 줄 세우기 위한 큐(봉쇄 상태 - 장치 컨트롤러에 의해 상태 변화)
  • 작업큐 : 시스템 내의 모든 프로세스를 관리하기 위한 큐

1.6 스케쥴러

  • 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 코드를 지칭
  • 장기 스케쥴러와 단기 스케쥴러로 구성
  • 장기 스케쥴러 : 시작 상태의 프로세스들 중 어떠한 프로세스를 준비 큐에 삽입할 것인지를 결정하는 역할 수행(메모리 할당 문제가 있으므로)

     - 상대적으로 느린 속도( 호출 단위가 몇 분 내지 몇 십분 이므로)

     - 메모리에 동시에 올라가 있는 프로세스 수 조절

     - 과거에 자원이 매우 빈약했던 시절에 주로 사용

  • 중기 스케쥴러 : 너무 많은 프로세스로 인해 시스템 성능 저하를 방지하기 위해 프로세스를 동적으로 조절하기 위한 스케쥴러

     - 스왑아웃 : 메모리에 올라와 있는 프로세스 일부를 디스크 영역의 스왑 영역에 저장해 놓는것.

.page 130 참조. -> 중지 상태 추가.

  • 단기 스케쥴러 : 준비 큐에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할 것인가를 결정

1.7 프로세스의 생성

  • 최초의 프로세스만 운영체제에 의해 생성 이후 부모 프로세스에 의해 생성
  • fork()명령어에 의해 생성되며 독자적인 메모리 공간을 가지며 부모 프로세스와 CPU 경쟁
  • 부모의 메모리를 복사하므로 다른 메모리 공간에 부모와 같은 내용이 적재 BUT 부모와는 다른 독자적인 코드 실행을 위해 exec() 시스템 콜 제공. 해당 함수로 메모리 공간 덮어쓰기가 가능( 지금까지의 메모리 공간을 잊어버리고 새로운 프로그램으로 덮어씌움 )
  • wait() 함수 시스템 콜로 부모 함수가 자식 함수를 기다리게 할수 있음
  • 포크 발생 이후의 코드부터 자식 프로세스는 실행
  • 자발적 종료 : 부모 프로세스는 자식 프로세스가 종료될때까지 종료될수 없고 항상 종료시 exit() 시스템 콜 호출. 이 통보에 의해 운영체제는 프로세스로부터 자원 회수
  • 비자발적 종료 : 부모 프로세스에 의해 자식 프로세스가 강제로 종료되는 것. abort() 함수로 이루어진다.
  • 강제 종료 발생 이유 :

     - 1. 자식 프로세스가 할당치를 넘어서 많은 양의 자원을 요구할 경우

     - 2. 자식 프로세스에게 할당 된 작업이 더 이상 필요하지 않을 때

     - 3. 부모 프로세스가 종료되는 경우 ( 부모 프로세스가 종료되는 경우 운영체제가 더 이상 수행하지 않게 하므로 )

1.8 프로세스간의 협력

  • 프로세스간 메모리 공간에 침범할수 없지만 효율성을 위해 프로세스간 협력 필요성 증대 -> IPC
  • IPC : 하나의 컴퓨터 안에서 실행중인 서로 다른 프로세스 간에 발생하는 통신을 의미
  • IPC의 대표적인 방법 : 메시지 전달(message passing), 공유 메모리(shared memory)방식이 존재

   - 메시지 전달 방법 : 커널에 의해 send(), receive() 시스템콜에 의해 실행

.page 141 참조.

   - 공유 메모리 방법 : 운영체제에 의해 독립된 메모리 공간을 서로 공유. 동기화 문제가 발생할수 있다.

'운영체제(OS) > 프로세스 관리' 카테고리의 다른 글

동기화 처리 및 데드락  (0) 2020.08.18