본문 바로가기
교육, 학습/CS스터디_반효경 운영체제

운영체제 - 문맥교환, 프로세스를 스케줄링 하는 큐

by 개발하는 경제학도 2022. 1. 8.

강의 소개

현재 수강하고 있는 KOCW 내 이화여자대학교 운영체제(2017, 반효경) 강의의 내용을 정리하였습니다.

개발자 관점에서 운영체제 기초를 학습하는 무료 강의로 자세한 강의 내용은 수강을 추천드립니다.


 

문맥 교환

 

** 프로세스 문맥(자세히)

더보기

** 프로세스 문맥

프로세스가 지금까지 실행되어 와서 현재 상태에 왔지만 과거부터 얼마나 CPU를 사용했는가 등으로 과거가 현재를 결정해준다.

시간에 따라 달라지는 것으로 특정 시점을 딱 잘라서 봤을 때, CPU를 얼마나 썼는지 또는 메모리를 얼마나 가지고 있는지, 함수를 어디까지 실행하는가 등을 나타낸다.

 

CPU 수행 상태를 나타내는 하드웨어 문맥

: Program Counter(CPU안에 Program Counter가 무슨 값을 가지고 있는지는 현재 어디를 실행하는지 보여준다)

, 각종 레지스터(현재 상태의 CPU에 레지스터에 어떤 값을 넣고 있었는가)

 

문맥 교환

CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정을 문맥 교환(Context Switch)이라 한다.

 

- 문맥 교환 시에 운영체제가 하는 일

문맥 교환이 일어날 때, CPU를 빼앗기는 프로세스의 문맥을 저장하고, CPU를 얻는 프로세스의 문맥을 복원시키는 과정이 필요하다. 그 문맥은 운영체제가 관리하는 PCB에 저장한다.

 

1) CPU를 뺏기 전에, CPU를 내어주는 프로세스 A의 상태(현재 기계어 어디까지 실행했는지, 레지스터에 어떤 값이 있는지 등)를 그 프로세스의 PCB에 저장한다. 

2) 그런 다음, CPU를 새롭게 얻는 프로세스 B의 상태(직전에 프로세스 B가 어디까지 CPU를 썼는지에 대한 정보. 기계어 실행상태, 레지스터 값, 프로그램 카운터 값 등)를 PCB에서 읽어온다.

출처: 운영체제(이화여자대학교, 2017년 1학기 반효경)

 

문맥 교환이 아닌 경우, 맞는 경우(시스템 콜, 인터럽트 관련)

인터럽트, 시스템 콜은 자체는 문맥 교환이 아니다. 프로세스 A로부터 '운영체제의 커널로' CPU가 넘어간 상태이기 때문이다.

따라서 인터럽트, 시스템 콜이 발생했다고 반드시 문맥 교환이 일어나는 것은 아니다.

출처: 운영체제(이화여자대학교, 2017년 1학기 반효경)

 

1) 문맥 교환이 아닌 경우(사진에서 1번)

프로세스 A가 CPU 사용 중에 인터럽트, 시스템 콜이 발생되고 나서 CPU를 빼앗겼던 사용자 프로세스 A로 CPU를 돌려준 경우, 문맥 교환이 아니다. (문맥 교환 없이 user모드 복귀)

ex. 프로세스 B에서 수행하고 있던 작업이 끝나서 인터럽트를 건 경우. 이 경우에는 인터럽트가 끝나고 다시 프로세스 A에게 CPU를 돌려준다

 

2) 문맥 교환이 일어난 경우(사진에서 2번)

반면, 프로세스 A가 CPU 사용 중에 인터럽트, 시스템 콜이 발생되고 나서 다른 프로세스인 B에 CPU를 전달한 경우, 문맥 교환이라 한다.

ex. 프로세스 A가 CPU를 계속 쓰고 싶은데, 할당 시간이 끝나서 timer 인터럽트가 들어왔을 때, 커널이 CPU를 다른 프로그램에게 넘겨준다.

ex2. 프로세스 A가 시간이 오래 걸리는 I/O를 하는 동안에, 커널이 프로세스 B에게 CPU를 넘겨주는 것이다.

 

문맥 교환이 아닌 경우에도, CPU 수행 정보 등의 context 일부를 저장하지만, 문맥 교환이 일어난 경우 PCB에 정보를 더 많이 저장해야 한다. 즉, 문맥 교환이 오버헤드가 더 큰 작업이다. (cache memory flush 등과 같은 작업등을 해야 한다.)

 


 

프로세스들은 각 큐들을 오가며 수행된다. 이런 큐들은 프로세스를 스케줄링한다.

 

종류

- Job queue

현재 시스템 내에 있는 모든 프로세스의 집합이다.

- Ready queue

현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합이다.

- Device queues

I/O device의 처리를 기다리는 프로세스의 집합이다.

 

 

출처: 운영체제와 정보기술의 원리(반효경 )

댓글