본문 바로가기

CS/컴퓨터 시스템

Chap 7_2. 프로세스

PCB(process Control Block)

= 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보

 

 

다음의 구성 요소를 가진다 (구조체로 유지)

 

(1) OS가 관리상 사용하는 정보

• Process state(프로세스 상태 = ready, blocked) , Process ID

• scheduling information, priority(CPU 우선순위 값을 두어서 운영한다)

pointer를 통해 여러 PCB들을 연결할 수 있다. (줄 서있는 모습을 구현)

 

(2) CPU 수행 관련 하드웨어 값

• Program counter, registers

프로세스의 문맥을 파악하기 위함 (어떤 값이 프로세스에 있었는지)

program counter는 현재 메모리에 어떤 부분을 수행하고 있는지 가리키고 있는 부분이다.

register set이 있다.

 

(3) 메모리 관련

• Code, data, stack가 메모리 어디에 위치해 있는가

메모리 관련된 문맥

 

(4) 파일 관련

• Open file descriptors…

프로세스가 오픈한 파일들이 어떤 것들이 있는지

 

 

문맥 교환 (context switch)

= CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정

  • CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행해당 시점의 레지스터에 있었던 값들, 프로그램 카운터 값, 메모리 맵도 save한다.
  • CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
  • 해당 프로세스의 PCB를 찾아서 하드웨어에 복원을 다시 시킨다. 그런 다음에 CPU를 넘기는 것이다.
  • 위치는 커널이 관리하는 메모리 공간에 있는 커널의 주소 공간 [stack, data, code]에서 data 부분에 해당 프로세스의 PCB가 있다.
  • CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장

CPU가 빠른 자원이기 때문에 timesharing을 하여 잠깐 잠깐 프로세스를 돌리다가 뺏는데 다시 처음부터 시작하는 것이 아니라 빼앗긴 시점의 문맥을 기억해놨다가 그 시점부터 계속 실행을 해줄 수 있게하는 매커니즘이 필요하다.

 

 

지금까지 본 문맥 교환은 사용자 프로세스 A로부터 사용자 프로세스 B로 넘어갈 때의 context switch가 일어난다는 것이다.

본인이 시스템콜을 발생시키거나 본인에게 인터럽트가 들어온 경우는 사용자 프로그램이 가지고 있던 CPU를 “운영체제”에게 넘겨주는 것이므로 문맥 교환이 일어나지 않는다.

A → 운영체제 → B프로세스으로 넘어가면 그때 문맥 교환이 일어난다

 

상황 1 = A가 인터럽트 or 시스템 콜 → 운영체제에게 CPU넘김 → 거기서 커널 함수를 실행한다.

즉, 커널 함수로 잠깐 갔다가 다시 A에게 간다.

  • 여기서 잠깐 커널로 갔다는 것은 원래 사용자 프로세스 PBC에 있다가 커널 PBC로 갔다가 다시 사용자 PBC 로 가는 것이기 때문에 약간의 문맥을 저장해놔야하긴 한다.

상황 2= A가 실행되다가 특별히 timer interrupt가 들어온다면 (CPU를 다른 프로세스에게 넘기려고 의도한 인터럽트임) 다른 프로세스에게 CPU를 넘긴다. 즉, 문맥 교환이 일어난다.

A가 실행되다가 특별히 오래걸리는 IO 요청 시스템 콜을 발생시키면 당장 A 실행이 불가능하므로 다른 프로세스에게 넘긴다.

  • (1)의 경우에도 CPU 수행 정보 등 context의 일부를 PCB에 save해야 하지만 문맥교환을 하는 (2)의 경우 그 부담이 훨씬 큼 , 오버헤드가 크다
  • 예를 들어, (eg. cache memory flush) 같은 경우는 중간에 있는 메모리 장치인데 만약 문맥 교환이 일어나게 되고 CPU가 다른 프로세스에게 넘어가게 되면 보통 캐시 메모리를 다 지워야 한다. 오버헤드가 크다

 

 

'CS > 컴퓨터 시스템' 카테고리의 다른 글

동기식 입출력과 비동기식 입출력  (0) 2023.04.16
Chap 7. 프로세스_1  (0) 2022.06.24
Chap 6. 프로그램 실행  (0) 2022.05.21
Chap 5. 컴퓨터 시스템 구조  (0) 2022.05.19
Chap 4. 운영체제란?  (0) 2022.05.18