본문 바로가기

기술면접 대비

[기술 면접] 운영체제 부분 예상 질문과 답변

지난 10월 27일 네이버 공채 1차 면접을 보게 됐다. 

취준 첫시즌이라 기술면접이 아예 처음이어서 정말 어떻게 대비를 해야 될지 너무 막막했었다.

기술면접대비로 유명한 깃허브 저장소를 참고해서 과목별로 질문리스트와 답변을 워드로 정리하는데 

일주일의 시간이 걸렸던 것 같다. 고3때보다 더 열심히 공부했지만 결국 불합격이라는 결과를 받게 됐다.

하지만 예상한 결과기도 했고 준비한건 다 보여드렸었기 때문에 후회는 없다.

또 네이버 덕분에 기술면접 대비 자료가 생겼기 때문에 감사하게 생각하고 있다. 

나같이 기술면접을 앞두고 고민이 많은 분들에게 조금이나마 도움이 되기 위해 준비했던 자료를 포스팅해보려고 한다

자료에 오류가 있다면 둥글게 둥글게 댓글로 남겨주시길 바랍니다!!

(면접용으로 작성한거라 구어체로 작성되어 있습니다. 그리고 개념을 최대한 상세하게 말하기 위해서 있는대로 다 때려박았더니 답변 길이가 좀 깁니다..ㅎ)

 

1. 프로세스와 스레드의 차이 - 프로그램, 프로세스, 스레드란. 각각의 특징 설명

* 코드영역에는 프로그램의 소스 코드저장되고 데이터 영역에는 전역 변수정적 변수가 저장됩니다. 스택 영역에는 함수의 호출과 관계되는 지역변수매개변수가 저장되고 힙 영역사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역입니다.

프로세스란 컴퓨터에서 연속적으로 실행되는 프로그램입니다. 메모리에 적재되어 CPU 자원의 할당을 받을 수 있는 것을 말합니다. 프로세스는 Code, stack, data, heap으로 되어있는 메모리 영역을 할당 받습니다. 프로세스는 최소 1개의 스레드를 가지고 있어야 합니다. 프로세스는 다른 프로세스의 자료구조나 변수에 접근할 수 없습니다. 만일, 다른 프로세스의 자원을 이용해야 한다면 IPC를 사용해야 합니다.

PCB(process control block)는 프로세스 제어 블록입니다. 프로세스에 대한 중요 정보를 저장하고 있고 프로세스 생성시 만들어지며 주기억장치에 유지됩니다.

PC(program counter)는 다음에 실행될 명령어의 주소가 들어있는 레지스터입니다. 명령어가 인출되면 자동으로 다음 명령어를 가리키도록 주소값이 증가됩니다.

스레드는 프로세스의 작업 실행 단위입니다. 스레드는 프로세스 내에서 stack을 따로 할당받고 나머지 영역은 모두 공유합니다. 한 스레드가 프로세스의 자원을 변경하게 되면 이웃된 프로세스가 바로 변화를 확인할 수 있습니다.

 

2. 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 - 멀티스레드 장단점

멀티 프로세스는 하나의 프로그램을 여러 개의 프로세스로 구성하여 컨텍스트 스위칭을 통해 실행하는 것을 말합니다. 하나의 프로세스에 문제가 생기더라도 다른 프로세스에 영향을 끼치지 않는다.

멀티 스레드를 사용하게 되면 자원을 효율적으로 관리할 수 있고, 응답시간이 단축되고 처리비용이 감소합니다. 스레드는 스택을 제외한 다른 영역들을 공유하기 때문에 데이터를 주고받는 시간이 멀티 프로세스에 비해 매우 빨라지고 시스템 자원 소모가 줄어들며 통신 비용도 절감됩니다. 또한, context switch가 일어날 경우에는 캐시 메모리를 비울 필요가 없기에 시간이 빨라집니다.

하지만 자원을 공유하기 때문에 여러 스레드가 동시에 한 자원에 접근할 경우 예상치 못한 결과값이 나오는 등 충돌이 발생할 수 있고 동기화를 해줘야 합니다.

 

3. Thread-safe - Thread-safe, Reentrant, 둘의 인과관계

Thread-safe하다는 것은 여러 스레드가 동시에 한 자원에 접근했을 경우 의도한대로 동작하는 것을 말합니다. 이를 위해서는 공유자원에 접근하는 임계 영역동기화 기법으로 제어해줘야 합니다. 동기화 기법에는 뮤텍스와 세마포어가 있습니다. 함수가 Reentrant(재사용성)이 있다는 것은 여러 스레드가 한 함수에 동시에 접근해도 똑같은 실행결과를 보장한다는 의미입니다. 이를 위해서는 전역변수가 아닌 지역변수나 매개변수를 사용하여야 합니다. 재사용성이 있으면 스레드 세이프하다는 말이 성립되지만 스레드 세이프 하면 재사용성이 있다는 말은 성립되지 않습니다.

 

4. 동기화 객체의 종류

먼저 스레드 동기화 방법에는 실행 순서 동기화메모리 접근에 대한 동기화 방법이 있습니다. 실행 순서 동기화는 스레드의 실행 순서를 정하고 정해진 순서대로 실행시키는 방법을 말합니다. 메모리 접근 방법은 메모리의 동시 접근을 막는 방법입니다. 한번에 하나의 스레드만 접근할 수 있도록 하는 것입니다. 동기화 기법의 종류에는 유저 모드 동기화커널 모드 동기화가 있습니다. 유저 모드 동기화는 성능이 빠르지만 기능상 제한이 있다는 단점이 존재합니다. 크리티컬 섹션기반의 동기화와 인터락함수기반의 동기화가 있습니다. 커널모드 동기화는 커널모드로의 변경이 필요하기 때문에 성능이 떨어지지만 다양한 기능을 사용할 수 있습니다.

 

5. 뮤텍스와 세마포어의 정의 및 차이점 ** 이진 세마포어는 뮤텍스랑 달라

뮤텍스와 세마포어는 여러 스레드나 프로세스가 공유 자원에 동시에 접근하는 것을 막는 역할을 합니다. 뮤텍스는 한 스레드나 프로세스에 의해 소유될 수 있는 키를 기반으로하는 기법입니다. lock기법을 사용하여 한 스레드가 임계 영역에 들어갈 때 lock을 걸어 다른 스레드가 접근하지 못하도록 하고 임게 영역에서 나올 때 unlock합니다. 세마포어는 현재 임계영역에 접근할 수 있는 스레드나 프로세스의 수를 나타내는 값을 사용하는 기법입니다. 해당 값만큼만 공유 자원에 접근할 수 있습니다.

뮤텍스와 세마포어의 차이점은 여러가지가 있습니다. 첫번째는 동기화 대상의 개수가 다르다는 것입니다. 뮤텍스는 동기화 대상이 1개일 때, 세마포어는 1개 이상 일 때 사용합니다. 뮤텍스는 뮤텍스를 소유한 스레드만이 해당 뮤텍스를 해제할 수 있지만 세마포어는 세마포어를 소유하지 않은 스레드도 해제할수있습니다.

 

6. 스케줄러란 - 사용 큐와 스케줄러의 종류 스케줄러 약자 찾아서 넣기

스케줄러란 어떤 프로세스에게 자원을 할당할지를 정하는 운영체제 커널의 모듈을 말합니다.

스케줄링에는 job queue, ready queue, device 가 쓰입니다. job큐는 시스템 내에 있는 모든 프로세스들이 들어가 있습니다. Ready 큐에는 메모리에 올라와있고 cpu를 할당받기 위해 기다리는 프로세스들이 들어가 있습니다. Device 큐에는 디바이스의 입출력 작업을 대기하고 있는 프로세스들의 집합입니다.

스케줄러에는 크게 3가지가 존재합니다.

장기 스케줄러는 디스크 같은 저장 장치작업들을 저장해놓고 메모리를 할당할 프로세스를 결정합니다.

단기 스케줄러는 메모리에 있는 프로세스 중 누구에게 cpu를 할당할지 결정합니다.

중기 스케줄러는 여유 공간 확보를 위해 일부 프로세스를 메모리에서 디스크로 옮겨줍니다.(swapping) 현 시스템에서 너무 많은 프로그램이 메모리에 동시에 올라가는 것을 방지합니다.

CPU스케줄러는 총 5가지가 있습니다. FCFS스케줄링ready queue에 올라온 프로세스 순서대로 실행합니다. 비선점형 방식이고 처음 올라온 프로세스의 실행 시간이 너무 길면 효율성이 떨어진다는 단점이 있습니다(convoy effect). SJF스케줄링은 실행시간이 짧은 프로세스 먼저 실행합니다. 비선점형 방식이며 실행시간이 긴 프로세스는 계속 cpu를 할당받을 수 없다는 단점이 존재합니다(starvation). SRT새로운 프로세스가 도착할때마다 스케줄링이 새로 이뤄집니다. 현재 실행중인 프로세스의 남은 실행시간보다 짧은 실행시간을 가지고 있는 프로세스가 있으면 현재 프로세스를 중단시키고 짧은 프로세스에게 cpu를 할당합니다. starvation문제가 발생할 수 있고 새 프로세스 도착할때마다 스케줄링을 다시 하기 때문에 cpu실행시간을 측정할 수 없습니다. Priority scheduling은 우선순위가 가장 높은 프로세스에게 cpu를 할당합니다. 선점형 방식으로 현재 실행중인 프로세스보다 우선순위가 높은 프로세스가 도착하면 cpu를 빼앗깁니다. Starvationindefinite blocking(실행 준비는 되어있으나 cpu를 사용 못하는 프로세스를 cpu가 무한 대기하는 상태)이 발생할 수 있기에 이를 보완하기 위하여 aging기법을 도입하고 있습니다. Round-Robin방법은 각 프로세스는 동일한 크기의 할당시간을 갖게됩니다. 할당 시간이 지나면 실행중이던 프로세스는 중지되고 ready queue의 맨 뒤로 가서 다시 줄을 섭니다(선점형 방식). 응답 시간이 빨라진다는 장점이 존재합니다. 하지만 할당 시간을 너무 크게 잡으면 FCFS가 될 수 있고 너무 작게 잡으면 context switch가 너무 자주 발생하여 오버헤드가 발생하게 됩니다. 따라서 적절하게 설정하는 것이 중요합니다.

 

8. 동기(synchronous) vs 비동기(asynchronous)

먼저 blocking I/O model에 대해 말씀드리겠습니다. blocking I/O model은 유저가 커널에 I/O작업을 요청하면 커널의 작업이 완료될떄까지 유저는 모든 작업을 중단시킨채 대기하는 모델을 말합니다.

동기작업을 요청한 후에 해당 작업이 완료될때까지 기다린 후 처리하는 것을 말합니다.

Blocking은 입출력이 끝날때까지 대기하는 것을 말합니다. 유저 프로세스는 작업을 중단한 채 결과 반환을 기다려야 합니다. 입출력 작업에는 cpu자원이 거의 쓰이지 않으므로 해당 방법은 cpu자원 낭비가 심합니다.

Non-blocking I/O model은 입출력 작업이 실행되는 동안 유저 프로세스의 작업을 중단시키지 않습니다. 유저가 커널에 작업을 요청하면 커널에서 함수 진행과 상관없이 바로 데이터를 반환합니다. 데이터는 서버에 축적되게 되고 클라이언트는 반환되는 데이터가 원하는 사이즈인지 계속 확인해줘야 합니다. 만일 클라이언트의 요청이 한번에 들어오게 된다면 이는 cpu에 부담이 될 수 있습니다.

Event-driven model에서는 커널이 데이터가 준비되면 애플리케이션에게 이를 알림으로써 애플리케이션이 따로 데이터를 확인하지 않아도 됩니다.

비동기는 작업을 요청해놓고 다른 작업을 수행하다가 해당 작업이 완료됐을때 마저 처리하는것을 말합니다.

 

9. 프로세스 동기화와 임계영역

프로세스 동기화란 하나의 자원을 한 순간에 하나의 프로세스만이 이용하도록 제어하는 것을 말합니다.

경쟁 상태란 여러 프로세스가(또는 스레드)공유 자원동시에 접근할 때, 공유 자원에 대한 접근 순서에 따라 실행 결과가 달라질 수 있는 상황을 말합니다.

**임계영역과 크리티컬 섹션(하나의 동기화 방법)은 의미가 다름

임계영역이란 프로세스간 자원이 공유될 수 있는 코드 블록을 말합니다. 임계영역을 프로세스들이 같이 쓸 수 있는 전제 조건에는 총 세가지가 있습니다. 첫번째는 mutual exclusion상호배제입니다. 한 프로세스가 임계영역에서 실행하고 있는 경우에는 다른 프로세스들은 임계영역에 접근할 수 없습니다. 두번째는 progress진행입니다. 임계영역에서 실행되고 있는 프로세스가 없다면 다른 후보 프로세스들 중 하나가 진입할 수 있습니다. 마지막 조건은 bounded waiting한정된 대기입니다. 프로세스가 임계영역에 진입 가능한 횟수에는 제한이 있는 것을 말합니다.

* lock과 mutex는 비슷하지만 lock은 잠겨있는 임계 영역이 다른 프로세스와 공유되지 않지만 mutex는 공유됨

임계영역에 대한 해결책으로는 lock기법세마포어가 있습니다. lock기법은 hw적인 해결방법으로 임계영역에 진입한 프로세스는 lock을 획득하고 임계 영역을 빠져나올 떄 lock을 반납함으로써 임계영역에 대한 동시 접근을 방지합니다. 멀티프로세싱 환경에서는 시간적인 효율성 측면 때문에 사용할 수 없습니다. 세마포어는 sw상에서 임계영역 문제를 해결하기 위한 동기화 도구입니다. 세마포어는 카운팅 세마포어와 이진 세마포어가 있습니다. 카운팅 세마포어는 공유 자원에 대해 사용되며 임계영역 안에 스레드나 프로세스가 들어오면 카운트를 증가시켜 일정한 양의 스레드만 사용하게 하는 것을 말합니다. 이진 세마포어는 뮤텍스라고도 불리며 01로만 되어 있습니다. lock기법을 사용하여 문제를 해결합니다. 세마포어는 busy waiting데드락이라는 단점을 가집니다. Busy waiting이란 임계영역에 진입해야 하는 프로세스가 진입 코드를 계속 반복 실행하여 cpu시간을 낭비하는 것을 말합니다. 데드락은 2개 이상의 프로세스가 각각 자원을 점유하고 있고 상대방의 자원을 요구하여 무한정으로 대기하는 상황을 말합니다.

모니터는 고급 언어의 개념으로 추상화 메서드를 통해 동기화합니다.

 

10. 메모리 관리 전략 - 메모리 관리 배경과 방법

메모리 관리 방법에 대해 설명하기에 앞서 관련 용어에 대해서 먼저 말씀드리겠습니다. 스와핑단편화라는 용어가 있습니다. 스와핑은 메모리 공간을 확보하기 위해 사용하는 기법입니다. 다중 프로그래밍 환경에서 cpu할당 시간이 끝난 프로세스의 메모리를 보조 기억장치로 내보내는 것을 말합니다. 단편화프로세스의 메모리 적재, 제거가 반복되면서 생기는 프로세스가 차지하는 메모리 틈 사이의 사용할 수 없는 작은 공간을 말합니다. 단편화에는 외부단편화와 내부단편화가 있습니다. 외부단편화는 메모리 공간 중 사용하지 못하는 부분을 말하고 내부단편화는 프로세스가 사용한 메모리공간에 포함된 남는 부분을 말합니다.

메모리를 할당하는 방법에는 3가지가 존재합니다. First Fit은 메모리를 할당할 때, 가장 먼저 발견한 곳에 집어넣습니다. Best Fit은 메모리를 할당할 때, 사용 가능한 공간 중 가장 작은 곳에 집어넣음(정렬 필요) Worst Fit은 메모리를 할당할 때, 사용 가능한 공간 중 가장 큰 곳에 집어넣음(정렬 필요)

메모리관리방법에는 페이징기법세그멘테이션이 있습니다. 페이징기법은 프로세스의 논리적 메모리는 페이지라는 고정 크기의 블록으로 나누고, 물리적 메모리는 프레임이라는 블록으로 나눈 후 페이지 맵핑을 통해 페이지 블록을 프레임 블록에 배치하는 것을 말합니다. 한 프로세스의 메모리 공간이 연속되지 않아도 되기 때문에 남는 자유공간이 생기지 않아 외부 단편화의 문제점이 해결됩니다. 하지만 반대로 내부단편화의 문제점이 발생할 수도 있습니다. 세그멘테이션은 논리적 메모리와 물리적 메모리 모두 다른 크기의 논리적 구조인 세그먼트로 분할하고 메모리를 할당하여 물리적 주소를 논리적 주소에 할당하는 것을 말합니다. 세그먼트 테이블에는 각 세그먼트의 시작 물리 주소와 세그먼트의 길이를 저장합니다. 세그멘테이션은 외부 단편화가 발생할 수 있습니다.

 

11. 가상메모리(기존의 물리 메모리를 물리 메모리와 논리 메모리로 나눔)

가상메모리란 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법을 말합니다. 가상메모리를 사용하게 되면 물리 메모리 크기에 제약을 받지 않게 되고 더 많은 프로그램을 동시에 실행할 수 있기 때문에 응답시간은 유지되고 cpu이용률과 처리율은 높아집니다.

요구페이징이란 페이지 기법을 통해 프로세스가 페이지 단위로 분할되면 필요한 페이지만 메모리에 적재하는 것을 말합니다. 요구 페이징을 사용하는 가상 메모리에서는 실행과정에서 필요해질때 페이지들이 적재됩니다. 프로세스 내 개별 페이지들은 페이저에 의해 관리됩니다. 페이저는 프로세스 실행에 실제 필요한 페이지만 읽어옵니다.

페이지 교체페이지 부재 현상이 발생하였는데 물리 메모리가 모두 사용중일 때 실행하는 것을말합니다. 프로그램 실행 시 모든 페이지를 물리 메모리에 적재하는 것이 아니다 보니 청한 프로그램의 페이지가 물리 메모리에 부재 현상이 발생할 수 있습니다. 이를 page fault(페이지 부재)라고 합니다. 페이지 부재가 발생하게 되면 원하는 페이지를 보조저장장치에서 가져옵니다. 만일 물리 메모리가 모두 사용중이라면 페이지 교체를 실시합니다.

페이지 교체를 위해선 먼저 디스크에서 필요한 페이지의 위치를 찾습니다. 그 후 페이지 알고리즘을 통해 희생될 페이지를 고릅니다. 찾은 페이지를 비운 후 새 프레임을 덮어쓰고 테이블을 수정합니다. 이후 사용자 프로세스를 재시작합니다.

페이지 교체 알고리즘은 총 여섯가지가 있습니다. FIFO(first-in-first-out) 페이지 교체 알고리즘은 가장 오랫동안 메모리에 있었던 페이지를 교체합니다. 구현이 쉽지만 오래전에 적재되어 반복적으로 사용되는 페이지가 교체될 수 있다는 단점과 belady모순(프로세스에 더 많은 수의 페이지 프레임을 할당할 경우 페이지 부재가 더 많이 발생하는 현상)이 발생합니다. 최적 페이지 교체(optimal)는 앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체하는 것입니다. 모든 프로세스의 메모리를 미리 참조해보는 것이 어렵기 때문에 구현이 어렵습니다. LRU(least-recently-used)는 가장 오랫동안 사용되지 않은 페이지를 교체하는 방법입니다. LFU(least frequently used)는 참조 횟수가 가장 적은 페이지를 교체하는 방법입니다. 어떤 프로세스가 특정 페이지를 집중적으로 사용하다, 더 이상 사용하지 않게되어도 계속 메모리에 머물기 때문에 효율성이 떨어질 수 있습니다. MFU(most frequently used) 사용횟수가 가장 많은 페이지를 교체합니다. NUR(not used recently)페이지는 최근에 사용하지 않은 페이지를 교체합니다.

 

12. 캐시의 지역성

캐시 메모리는 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목현상(전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상)을 줄이기 위한 범용 메모리입니다. 지역성을 이용해 cpu가 어떤 데이터를 원할 것인지를 어느 정도 예측해 캐시 메모리에 데이터를 저장합니다. 지역성이란 어느 한 순간에 특정 부분집중적으로 참조하는 특성을 말합니다. 지역성은 시간 지역성과 공간 지역성으로 나뉩니다. 시간지역성은 최근에 참조된 주소의 내용은 곧 다음에 다시 참조되는 특성을 말하고 공간 지역성은 최근에 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성을 말합니다.

캐시는 프로세서 가까이에 위치하면서 빈번하게 사용되는 데이터를 놔두는 장소입니다. 캐시를 빠르게 참조할 수 있도록 데이터를 캐시에 저장할 때 데이터의 메모리 주소 등을 기록해 놓은 태그들을 묶어서 저장하게 되는데 이를 캐싱 라인이라고 합니다. 캐싱 라인에는 full associative, set associative, direct map이 있습니다.

 

13, 교착상태의 개념과 조건 (공유자원!!!!!)

교착상태(데드락)이란 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미합니다.

교착상태가 발생하기 위해서는 상호배제, 점유와 대기, 비선점, 순환대기까지 총 4가지의 조건이 충족되어야 합니다. 상호 배제란 한번에 한 개의 프로세스만의 공유 자원을 사용할 수 있는 것을 말합니다. 점유와 대기는 이미 공유 자원에 대한 접근권한을 갖고 있는 프로세스가 다른 자원을 부가적으로 요구하는 것을 말합니다. 비선점은 한 프로세스가 다른 프로세스의 자원 접근 권한을 강제로 취소할 수 없는 것을 말합니다. 순환대기프로세스의 집합에서, 각 프로세스가 순환적으로 다음 프로세스가 필요로 하는 자원을 가지고있는 것을 말합니다.

데드락 해결법에는 예방, 회피, 회복, 무시가 있습니다. 예방은 4가지 조건 중 하나라도 만족되지 못하게 하는 것을 말합니다. 회피는 알고리즘을 데드락이 발생하지 않도록 적용합니다. 회복은 교착상태가 발생하면 그때 해결합니다. 무시는 회복과정의 성능저하가 더 심하다면 그냥 무시하는 것을 말합니다.

 

14. 사용자 레벨 스레드와 커널 레벨 스레드

사용자 레벨 스레드는 사용자 영역에서 스레드 연산을 수행합니다. 커널에 의존적이지 않은 형태로 스레드의 기능을 제공하는 라이브러리를 활용하는 방식입니다. 사용자 레벨 스레드의 장점은 운영체제에서 스레드를 지원할 필요가 없고 스케줄링 결정이나 동기화를 위해 커널을 호출하지 않기 때문에 인터럽트가 발생할 때 커널 레벨 스레드보다 오버헤드가 적습니다. 커널은 사용자 레벨 스레드의 존재조차 모르기 때문에 모드 간의 전환이 없고 성능 이득이 발생합니다. 하지만 사용자 레벨 스레드는 시스템 전반에 걸친 스케줄링 우선순위를 지원하지 않고 프로세스에 속한 스레드 중 입출력 작업에 의해 하나라도 블록이 걸린다면 전체 스레드가 블록된다는 단점이 존재합니다.

커널 레벨 스레드는 가장 가벼운 커널 스케쥴링 단위입니다. 하나의 프로세스는 적어도 하나의 커널 스레드를 가지게 되고 커널 영역에서 스레드 연산을 수행하게 됩니다. 커널이 스레드를 관리하기에 커널에 종속적입니다. 또한, 프로그래머의 요청에 따라 스레드를 생성하고 스케줄링하는 주체가 커널이면 커널 레벨 스레드라고 합니다. 커널 레벨 스레드는 프로세스의 스레드들을 몇몇 프로세서에 한꺼번에 디스패치할 수 있기 때문에 멀티프로세서 환경에서 매우 빠르게 동작합니다. 다른 스레드가 입출력 작업이 끝날때까지 다른 스레드를 사용해 다른 작업을 수행할 수 있습니다. 커널이 각 스레드를 개별적으로 관리합니다. 하지만 스케줄링과 동기화를 위해 커널을 호출하는데 오래걸린다는 단점이 존재합니다. 또한 사용자 모드에서 커널 모드로의 전환이 빈번하게 이뤄져 성능 저하가 발생합니다.

 

15. Context Switching

컨텍스트 스위칭이란 멀티 프로세스 환경에서 CPU가 하나의 프로세스를 실행하고 있는 상태 인터럽트 요청에 의해 현재 프로세스의 상태를 PCB에 저장하고, 새로운 프로세스의 상태레지스터에 저장하는 것을 말합니다. 컨텍스트 스위칭 시 cpu는 아무런 작업을 하지 못하기 때문에 잦은 컨텍스트 스위칭은 성능 저하를 유발합니다.