프로세스와 스레드, Context Switching

1. 프로세스의 개념

프로세스 : 실행 중인 프로그램(program in execute)

프로세스의 context(문맥)

프로세스의 context는 크게 세가지로 분류할 수 있다.

하드웨어 context : CPU의 수행상태를 나타내는 것으로 PC(Program Counter)와 각종 레지스터에 저장하고 있는 값들을 의미한다. 프로세스의 주소공간 : 코드(code), 데이터(data), 스택(stack)으로 구성된 프로세스만의 독자적인 주소공간을 의미한다. 커널 상의 context : 프로세스 관리를 위한 자료구조인 PCB(Process Control Block)와 Kernel stack(커널 내의 주소)를 의미한다.

프로세스의 상태

시스템에는 Batch Job 시스템(일괄 작업 시스템)과 시분할 시스템이 있다.

Batch Job 시스템 : 사용자가 수정이나 삽입 같은 데이터의 변경을 할 수 없는, 즉 모든 작업을 한 번에 처리하는 시스템이다. 시분할 시스템(Time Sharing System): CPU 시간을 쪼개서 여러가지 프로세스들에게 CPU를 사용할 수 있도록 한다. 그래서 CPU 효율이 Batch Job 시스템에 비해서 높은 편이다.

이 글에서는 시분할 시스템을 기준으로 프로세스 상태를 분류하고자 한다.

Untitled

  1. 시작(new) 상태
  2. 준비(ready) 상태