Dog foot print

[예습하는 OS] 프로세스 기초 본문

컴퓨터 구조

[예습하는 OS] 프로세스 기초

개 발자국 2020. 2. 2. 23:06

프로세스

프로세스는 프로세서와 전혀 다른 말이다. 착각하기 쉬우니 조심하도록 하자 

 

프로세스

프로세스란 ? 위키백과에 따르면 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 여기서 실행 중인 프로그램이란 디스크에 저장되고 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태를 말한다. 여기서 프로세스는 우리가 사용하는 웹 브라우저, 음악 플레이어, 게임 등을 이야기 한다. 이런 프로세스가 2개 이상 실행되는 것을 멀티 프로세스라고 하며, 두개 이상의 작업을 하는 것을 멀티 태스킹이라고 한다. 

 

프로세스의 자원

프로세스가 실행이 되어 프로그램의 역할을 수행하려면 프로세서(cpu)점유 시간과 메모리파일, 입출력장치 같은 자원이 필요한데, 자원은 프로세스가 생성되거나 실행될 때 할당된다. 프로세스가 점유하고 있는 메모리 공간은 다음과 같은 역할을 가지고 있다. 

 

 

실행 스택 : 호출된 함수의 복귀 주소와 지역변수처럼 일시적인 데이터를 저장하는 영역이다. 

 

실행 힙 : 필요에 의해 메모리 영역을 할당하고자 할때 쓰이는 공간으로 C에서는 malloc 함수로 특정 메모리 영역을 사용할 수 있도록 하는 것이 그 예시라 한다. (https://recorda.tistory.com/entry/20160503프로세스-메모리-구조_)

 

데이터 : 프로세스 실행 중에 동적으로 할당받는 영역으로 전역 또는 정적변수를 저장하며 읽고 쓰기가 가능하다. 

 

텍스트 : 프로세서가 실행하는 코드를 저장한다. 

 

프로세스 종류 

프로세스는 실행 유형에 따라 1. 운영체제 프로세스, 2. 사용자 프로세스, 3. 병행 프로세스로 구분 하여 생각할 수 있다 . 2번 사용자 프로세스는 사용자가 실행시킨 프로세스를 말하여, 우리 모두가 아는 형태의 프로세스이다. 우리는 1번과 3번에 조금 더 주목할 필요가 있다.

 

운영체제 프로세스 : 운영체제 프로세스는 프로세스 실행 순서를 제어하거나, 사용하고 있는 프로세스가 다른 사용자나 운영체제 영역을 침범하지 못하게 감시하는 기능을 담당 한다. 주로 시스템 운영에 필요한 작업을 수행하며, 커널, 시스템 프로세스라고 불리운다. 

 

병행 프로세스 : 프로세스 여러개가 동시에 실행되면 병행프로세스라고 부른다. 이 병행 프로세스는 동시에 실행되고 있는 다른 프로세스에 영향을 주거나 받음의 유무의 따라서 독립프로세스협동 프로세스로 나뉜다.     

 

프로세스의 상태

운영체제는 프로세스 실행을 제어하는 역할을 한다. 그러나 프로세스는 실행되며 상태가 변화하므로 프로세스 제어에 필요한 프로세스 상태를 점검해야한다. 

 

운영체제가 프로세스를 새로 생성하면 비실행 상태로 초기화 되어 실행을 기다린다. 실행 중인 프로세스가 종료되거나 인터럽트가 발생하여 프로세스가 실행되면 프로세스는 실행 상태가 된다

 

실행 상태 : 실행 상태 프로세스는 실행, 대기, 준비로 세분화 할 수 있다. 

 

  • 실행 : 명령어가 실행되는 상태 프로세스가 cpu를 점유하고 있는 상태
  • 대기 : 프로세스가 이벤트가 일어나기를 기다리는 상태
  • 준비 : 프로세스가 프로세서를 할당 받으려고 하는 상태 

이 세분화 된 상태는 프로세스가 생성이 되고 프로세서를 점유하기 위해 준비단계가 된다. 프로세서를 점유한 프로세스는 실행이 되고, User의 입 출력을 기다리는 대기 상태가 된다. 그리고 입 출력을 받은 프로세스는 다시 프로세서를 점유하기 위해 준비상태가 된다. 

(준비 하고 있는 프로세스중 가장 맨 앞에 있는 프로세스가 프로세서를 선택하는 것을 디스패치라고 한다.)

 

프로세스의 라이프 사이클

프로세스는 필요에 따라 자식 프로세스를 만들 수 있다. 이렇게 계층을 이루는 프로세스를 계층 프로세스라고 하며, 운영체제는 다음과 같은 작업을 한다. 

 

  • 프로세스 생성
  • 프로세스 종료
  • 프로세스 제거
  • 프로세스 중단과 재시작
  • 프로세스 우선순위 변경 
  • 문맥 교환

프로세스 생성 : 새로운 프로세스를 추가하기 위해서는 앞서 보았던 여러 자원들을 프로세스에 할당해야하는데, 운영체제는 프로세스에 자원을 할당하기 전 프로세스 제어 블록을 만들어 프로세스에 주소 공간을 할당 해야한다. 프로세스를 생성하는 과정을 단계별로 정리하면 다음과 같다. 

 

  • 새로운 프로세스에 프로세스 식별자를 할당한다.
  • 프로세스의 모든 구성요소를 포함할 수 있는 주소 공간과 프로세스 제어 블록 공간을 할당한다. 
  • 프로세스 제어 블록을 초기화 한다. 
  • 프로세서를 기다리는 큐에 삽입한다. 

새로운 프로세스가 실행되려면 할당될 메모리 공간이 필요한데 이때 부모 프로세스의 메모리 공간을 공유할 수 있으며,  별도의 프로그램을 적재할 수 있다. (부모 프로세스의 자원을 분할해주면, 부모프로세스가 자식프로세스를 너무 많이 생성하여 시스템에 부하를 주는 행위를 방지 할 수 있다.)

 

프로세스 종료 : 프로세스가 마지막 명령의 실행을 마치면 종료되고 운영체제에 프로세스 삭제를 요청한다. 부모 프로세스는 자식프로세스가 할당된 자원을 초과하여 자원을 사용하는 경우와 , 자식에게 더 이상 할당된 작업이 없을 때 프로세스를 종료 시킬 수 있다. 프로세스 종료 하는 경우는 다음과 같다. 

 

  • 정상 종료
  • 시간 초과
  • 파일 입출력 실패 등 

프로세스 제거 : 프로세스를 제거는 프로세스 종료가 일어난 뒤 프로세스가 점유하고 있던 자원을 시스템에 돌려주는 것이다. 부모 프로세스가 제거 되면 자식 프로세스 또한 제거 된다. 

 

프로세스 중단 : 프로세스는 프로세스가 생성이 된 후 동적으로 자원을 할당 받는다. 그렇기에 프로세스가 많은 경우 특정 프로세스가 자원이 부족한 상태(입 출력 장치 사용중, 저장 공간 부족 등)에 처할수 있다. 이때 사용중인 프로세스를 중단 시킴으로 인하여, 특정 프로세스가 작업이 온전히 끝내도록 유도 할 수 있다. 그리고 문제가 해결되면 중단되었던 프로세스를 다시 재시작 한다. 

 

  • 시스템에 장애가 발새하면 프로세스는 잠시 중단되었다가, 시스템이 기능을 회복하면 다시 재시작 할 수 있다.
  • 사용자는 실행중인 프로세스가 오류 발생의 의심이 있는 경우, 중단 후 재시작 할 수 있다. 
  • 실행중인 일이 많아 시스템 부담이 큰 경우 프로세스를 중단 했다가 프로세스를 재시작 할 수 있다. 

 

반응형
Comments