컨텍스트 스위칭 개념 정리

2021. 2. 22. 23:36Computer(인강)/운영체제

728x90
반응형

안녕하세요 bannavi입니다^ㅅ^

 

오늘은 컨텍스트 스위칭의 개념정리를 해보겠습니다

바로 시작해볼게요 고고!

 

 

 

 

프로세스와 컨텍스트 스위칭

 

Context Switching (문맥 교환)

- CPU에 실행할 프로세스를 교체하는 기술

1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서, 메인 메모리에 저장

2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보를 CPU에 넣고, 실행

프로세스 PCB정보에 해당 CPU 레지스터 정보를 저장한다.

(메인메모리에 저장하냐 마느냐 하는것은 운영체제에서 어떻게 구현하느냐에 따라 다를 수 있다)

 

 

 

디스패치 (dispatch)

: ready 상태의 프로세스를 running 상태로 바꾸는 것

 해당 PCB 정보를 CPU에 넣고, 실행

 

 

만일 컨텍스트 스위칭 시간이 오래걸리면 실제로는 굉장히 짧은 시간(ms) 단위로, 프로세스 스위칭이 일어남.

어떻게 하면 조금이라도 컨텍스트 스위칭 시간을 짧게할 수 있을까?

 

 

C언어가 아니라, 어셈블리어로 컨텍스트 스위칭 코드를 작성하면...(리눅스의 경우가 이럼)

 

because!!

 

컴파일러를 생각해보면 된다.

 

초기 컴퓨터 프로그램들은 기계어 아니면 어셈블리어로 작성

- 서로 다른 CPU 아키텍쳐가 등장할 때마다(메모리 구조, 메모리 사이즈 등) 매번 똑같은 프로그램 작성

(프로그램이 돌아가는 속도는 빨랐지만, 프로그램 이식성이 매우 떨어짐)

(운영체제의 경우 context switching의 경우 속도가 sensitive하기 때문에 이식성을 포기하고 어셈블리어로 작성한 경우가 있다)

- 어셈블리어로는 프로그램을 작성하는 속도가 매우 떨어짐

 

 

컴파일러의 등장

 

- CPU 아키텍쳐에 따라서는 컴파일러 프로그램만 만들면 됨, 기존 코드는 재작성할 필요 없음(프로그램 이식성이 높다)

- 그러나, 어셈블리어로 작성한 코드보다는 속도가 떨어질 수 있음

-> 리눅스(운영체제 중 하나)의 경우에도 컨텍스트 스위칭 코드는 어셈블리어로 작성되어 있는데 각각의 cpu 별로, 컨텍스트 스위칭하는 코드는 다 별도로 있다.

 

 

 

다시한번 정리!

 

프로세스 구조

Stack, HEAP, DATA(BSS, DATA), TEXT(CODE)

 

PCB

프로세스 상태정보 - PC, SP, 메모리, 스케쥴링 정보 등

 

컨텍스트 스위칭

프로세스 상태 정보를 PCB로부터 CPU에 로드하고 실행

-> 레코드판 가운데에 핀을 놓는 느낌!

728x90
반응형

'Computer(인강) > 운영체제' 카테고리의 다른 글

프로세스와 IPC  (0) 2021.02.23
프로세스간 커뮤니케이션  (0) 2021.02.23
컨텍스트 스위칭  (0) 2021.02.22
프로세스 구조와 스택 오버플로우  (0) 2021.02.21
프로세스 구조와 힙  (0) 2021.02.21