티스토리 뷰

OS

프로세스

perseverance 2024. 8. 22. 22:43

프로세스는 운영체제가 메모리 등의 필요한 자원을 할당해준 실행중인 프로그램이다.

프로그램을 실행하면 운영체제로부터 실행에 필요한 자원을 할당받아 프로세스가 되는것이다.

 

프로세스의 문맥(context)

특정 시점에 어디까지 수행했는지에 관한것 크게 3가지로 분류한다.

1. 하드웨어 문맥

  • CPU 수행 상태를 나타내는 것으로 PC와 각종 레지스터에 저장하고 있는 값들을 말한다.

2. 프로세스의 주소공간

  • 코드, 데이터, 스택으로 구성된 프로세스만의 독자적인 주소 공간을 말한다.

3. 커널상의 문맥

  • 프로세스를 관리를 위한 자료구조인 PCB와 Kernel stack을 말한다.

커널 스택을 왜 프로세스마다 별도로 두고 있을까?

  • 커널은 하나인데 여러 프로세스가 요청해서 커널 코드를 여러 프로세스 요청으로 실행될 수 있다.
  • 커널 스택을 프로세스마다 별도로 둔다는 것은, 각 프로세스가 커널 모드로 전환될 때 사용할 자신만의 커널 스택이 따로 있다는 것을 의미합니다. 이렇게 되면 각 프로세스는 커널 모드에서 다른 프로세스와 독립적으로 동작할 수 있으며, 프로세스 간의 커널 스택 충돌을 방지할 수 있습니다.

 

프로세스 상태 

프로세스는 실행되면서 그 상태가 변한다. 



Running

  • CPU를 잡고 instruction을 수행중인 상태

Ready

  • CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고)

Blocked (wait, sleep)

  • CPU를 주어도 당장 instruction을 수행할 수 없는 상태
  • Process 자신이 요청한 event(예: I/O)가 즉시 만족되지 않아 이를 기다리는 상태

Suspended (stopped)

  • 외부적인 이유로 프로세스의 수행이 정지된 상태
  • 프로세스는 통째로 디스크에 swap out 된다. 
  • (예) 사용자가 프로그램을 일시 정지시킨 경우 (break key) 시스템이 여러 이유로 프로세스를 잠시 중단시킴 (메모리에 너무 많은 프로세스가 올라와 있을 때 
  • Blocked 상태는 자신이 요청한 event가 만족되면 Ready지만 Suspended는 외부에서 resume해 주어야 active된다.

New

  • 프로세스가 생성중인 상태

Terminated

  • 수행이 끝난 상태

 

PCB (Process Control Block)

 

운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 구조체다.

다음의 구성 요소를 가진다 

  1. 프로세스 상태
  2. 프로그램 카운터
  3. CPU 레지스터들(스택 레지스터, 인덱스 레지스터 등등)
  4. CPU-스케줄링 정보
  5. 메모리 관리 정보
  6. 회계 정보(CPU 사용 시간과 경과된 실시간, 시간 제한, 계정 번호, 잡 또는 프로세스 번호 등을 포함)
  7. 입출력 상태 정보

요약하면 PCB는 프로세스를 시작시키거나 다시 시작시키는데 필요한 모든 데이터를 위한 저장소의 역할을 한다.

 

문맥 교환 (Context Switch)

운영체제가 CPU에서 실행 중인 하나의 프로세스의 상태를 저장하고, 다른 프로세스를 실행하기 위해 그 상태를 복원하는 과정을 말한다.

문맥교환은 타이머 인터럽트, I/O 인터럽트, System Call 발생시 일어난다.

하지만 System call이나 Interrupt 발생시 반드시 context switch가 일어나는것은 아니다.

 

Context Switching 과정

  • 현재 실행 중인 프로세스의 상태 저장: 현재 CPU에서 실행 중인 프로세스의 상태(즉, 레지스터, 프로그램 카운터, 스택 포인터, 메모리 관리 정보 등)를 PCB(Process Control Block)라는 데이터 구조에 저장한다.
  • 새로운 프로세스 선택: 운영체제의 스케줄러가 다음에 실행할 프로세스나 스레드를 선택다. 이 선택은 우선순위, 공정성, 효율성 등 다양한 알고리즘에 의해 결정다.
  • 선택된 프로세스의 상태 복원: 새롭게 선택된 프로세스의 상태를 PCB에서 CPU 레지스터 등으로 복원다.
  • 새로운 프로세스 실행: 복원된 상태에서 프로세스가 실행을 이어간다.

 

'OS' 카테고리의 다른 글

OS - 동기화  (0) 2024.09.05
OS - CPU 스케줄링  (1) 2024.08.28
Process와 Thread의 차이  (0) 2024.08.22
OS - 동기식 I/O와 비동기식 I/O  (0) 2024.08.16
OS - 커널과 이중모드, 시스템 콜  (0) 2024.08.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함