STUDY/운영체제

[운영체제] 프로세스

디리릭 2021. 10. 18. 00:45
728x90

프로세스

프로세스는 간략하게 말해서 실행 중인 프로그램이다. 운영체제는 프로그램을 실행하게 하는데 이 작업을 하는 단위가 프로세스이다. 

운영체제가 프로세스를 실행할 때에는 자원이 필요하다. 

  • CPU time
  • memory
  • files (for 리소스)
  • IO 디바이스(for 리소스)

컴퓨터는 위의 그림과 같이 구성되어 있다. 통상적으로 우리가 프로그램을 작성하면 그건 하드디스트 스토리지(또는 SSD)에 저장된다. 스토리지에 있는 프로그램은 직접적으로 CPU에 할당하지 못하고 Memory에 올리고 할당해야한다. 그리고 CPU는 Memory에 있는 프로그램을 fetch&excute를 하게 된다. 이때 메모리에 올라가있는 프로그램을 프로세스라고 한다.  

  • 메모리 레이아웃
    프로세스가 올라가는 메모리 영역은 여러 계층으로 구분 할 수 있다. 
    • text section
      실행 되는 코드에 관한 색션
    • data section
      전역 변수에 대한 색션
    • heap section
      프로그램이 실행되는 동안의 new, malloc등에 관한것 
    • statck section
      함수 및 파라미터, return address,로컬 변수 등 함수가 진행되는 동안 생성되는 일시적인 데이터 저장소
  • 프로세스 상태 및 스케줄링
    프로세스의 진행에 따라 상태가 변한다. 상태의 종류는 아래와 같다. 
    • New : 프로세스 생성
    • Running : 프로세스(PCB) 실행 중인 상태
    • Waiting : 프로세스가 이벤트가 이러나길 기다리는, 프로세스는 죽지 않았지만 CPU가 다른 프로세스를 점유한 상태 (IO디바이스의 input 등)
    • Ready : CPU 할당 되기를 기다리는 상태 
    • Terminated : 프로세스 종료하여 메모리에 집 뺀 상태

 

  • 프로세스 실행
    프로세스가 새로운 프로세스를 만들 수 있다. (fork를 이용해서 만들 수 있다.)
    실행 방법이 2가지 있는데 부모와 자식이 동시에 실행할 수 있고 혹은 wait 상태가 될 수 있어 IO 컴플리션처럼 
    그러면 address space 측면에서도 2가지가 있다.
    똑같은 일을 하는 부모와 자식이라면 PCB만 분리하고 메모리는 동일하게 사용한다. 즉 주소 공간을 부모와 자식이 같은 주소값을 같는다. 
    종료는 return으로 끝내거나 exit로 강제로 끝낼 수 있다. 
    끝나면 메모리 등 해제 
728x90