CS/OS

[운영체제] 2-2. 프로세스 정의

F12:) 2023. 9. 11. 11:18

앞선 많은 글에서 프로세스라는 단어를 몇번 언급한 적 있다. 이 글에서는 프로세스의 정의에 대해서 작성한다.

 

프로세스

현재 실행되고 있는 프로그램을 의미한다. 실행되지 않는 프로그램은 단지 프로그램일뿐 프로세스가 아니다.

 

 

 

 

프로세스는 메모리 내에서 크게 세가지 구성 요소를 가진다.

 

1.  프로그램의 실행 instruction이 모여있는 code

2. instruction의 실행 대상인 data

3. 실행에 필요한 운영체제의 자원들의 집합인 context

 

 

 

 

 

 

 

프로세스 상태

프로세스의 상태는 다음 글에서 더 자세히 다루겠지만, 우리는 dispatcher의 개념을 설명하기 위해 여기서 간단히 설명한다.

 

프로세스는 많은 상태를 갖고 있는다. 다음 글에서 총 7가지의 상태에 대해서 설명할테지만 여기서는 ready와 running만 설명한다. 상태의 단어만 봐도 짐작이 가겠지만, 프로세스가 실행되기를 기다리는 대기상태와 실행상태인 running이라고 간단하게 설명하고 넘어간다.

 

후에 더 자세한 상태도를 첨부한다.

Dispatcher

Time sharing 기법을 사용할 때, 많은 프로세스들이 번갈아가면서 진행된다. 이렇게 번갈아가면서 진행될 때, 어떤 프로세스를 다음에 실행시킬지, 입출력을 기다리는 프로세스는 건너뛰는 등의 과정을 판단하여 다음 실행될 프로세스를 정하는 과정을 메모리 위에 OS가 차지하는 영역 중 Dispatcher가 담당한다.

 

실제로, 우측에 보면, 100번대에 위치한 Dispatcher가 적절하게 프로세스를 잘 선택하는 것을 확인할 수 있다.

프로세스가 만들어지는 경우

프로세스가 만들어지는 이유는 크게 세가지이다.

 

1. 사용자에게 감춰져있는, OS가 내부적으로 필요한 프로세스를 프로그램 부팅 시 실행시킨다.

 

2. 현재 존재하는 프로세스가 다른 프로세스를 생성할 수 있다.

    -> 이 때, 생성을 요청한 프로세스를 부모 프로세스, 그렇게 만들어진 프로세스를 자식 프로세스라고 한다.

 

3. 사용자의 요청으로 만들어지는 경우.

    -> 이 때, 사용자는 interactive 모드와 batch 모드를 선택할 수 있다.

    -> 일반적으로 실행하는 프로세스는 전자의 모드로 실행되여, 우리가 커맨드 위에 &를 붙이게 되면 나중에 처리하게 된다.

 

 

프로세스가 종료되는 경우

1. 정상 종료

  • 일반적으로 exit을 프로세스가 호출해서 종료를 요청하는 경우
  • 부모 프로세스가 자식 프로세스를 없애달라고 요청하는 경우

2. 비정상 종료

  • 허용되지 않은 메모리에 접근하려고 할 때

         ex. 다른 프로세스가 사용하는 메모리 영역에 접근하려고 하는 경우

  • 에러가 발생할 때

         ex. Arithmetic error, I/O failure 등.

'CS > OS' 카테고리의 다른 글

[운영체제] 2-4. PCB  (0) 2023.09.12
[운영체제] 2-3. 프로세스 상태도  (0) 2023.09.11
[운영체제] 2-1. 커널 구조  (0) 2023.09.11
[운영체제] 1-3. 타임 쉐어링  (0) 2023.09.10
[운영체제] 1-2. 멀티 프로그래밍  (0) 2023.09.10