Context Switching와 Interrupt

이하연·2021년 8월 15일
1

[OS] 운영체제

목록 보기
4/12

우리 눈에는 여러가지 프로그램은 동시에 실행시키는 것으로 보이지만, 사실 여러개의 프로세스를 짧은 시간 번갈아 실행시키면서 동시에 실행하는 것처럼 보이는 것입니다. 이는 CPU는 한번에 하나씩의 일을 처리하기 때문입니다. 따라서, 다른 프로세스를 실행시키기 위해서는 실행 중인 프로세스를 중단하는 인터럽트라는 것이 필요합니다. (인터럽트 설명)

인터럽트가 발생하게 되면, 중단 되기까지 진행되었던 모든 작업 정보를 저장해야지 다음에 이어서 실행을 시킬 수 있습니다. 따라서 인터럽트 발생 후, 중단된 프로세스의 context를 PCB에 업데이트 한 후, 실행할 다음 프로세스의 context를 메모리에 올려서 CPU가 실행할 수 있도록 하는 작업을 과정을 Context Switching이라고 합니다.

이를 통해 여러 프로세스가 하나의 CPU를 공유한다는 것을 알 수 있습니다.

Interrupt

  • 예상치 못하거나, 외부에서 발생한 이벤트로 인해 프로세스를 잠시 중단하는 것을 인터럽트라고 합니다.
  • 컴퓨터 시스템에서 발생하는 예외적인 사건을 신속히 처리하기 위한 기법
  • 인터럽트가 발생하면 해당 인터럽트 처리 루틴을 먼저 수행 후 원래 프로그램으로 되돌아온다.

Context Switching

  • 문맥교환이란 스케줄링에 따라 실행중인 프로세스를 교체할 때 교체되는 프로세스의 상태를 기억시켜 두고 새로운 프로세스의 이전 실행 상태를 재복구하여 처리기에 넘겨 주는 일련의 작업을 의미합니다.
  • 실행하던 프로그램이 중단되고 인터럽트 처리를 수행하기 전에 발생합니다.
  • 여러 프로세스가 하나의 CPU를 공유한다는 것을 알 수 있음 ( 멀티 태스킹 )

과정

인터럽트가 발생하면, 프로세스를 종료하고 다음 프로세스를 수행

이때 종료될 프로세스의 context를 PCB에 업데이트하고, 실행할 다음 프로세스의 context를 메모리에 올려서 CPU가 실행할 수 있도록 합니다.

하지만 Context Switching일 때, 해당 CPU는 아무 일을 할 수 없어서 오버헤드가 발생합니다. → 성능 떨어져서 적당히 해야합니다.

Context Switching이 발생하는 인터럽트

  • 입출력 요청이 왔을 때

  • cpu 사용시간이 만료되었을 때

  • 자식 프로세스를 만들 때

  • 인터럽트 처리를 기다릴 때

  • 멀티 프로세스,멀티스레드를 Context swithing과 연관지어서 설명해주세요.

  • 그러면 멀티 프로세스는 오버헤드가 나타나지 않나요?

  • 컨텍스트 스위칭이 일어날때 오버헤드가 일어나지 않을 수도 있나요? 있다면 어떤 경우가 있는지?

  • 인터럽트가 발생하게 되면, context switching 과정에 대해서 설명해주세요

  • Context switching이 발생하는 인터럽트의 경우가 어떤게 있을까요?

  • 프로세스 간의 통신을 해주는 IPC에 대해서 간략하게 설명부탁드릴게요

무조건 context switching하면 오버헤드가 발생하나?

자주 일어나면 오버헤드가 발생하는건가?

context switching 자체는 오버헤드가 아닌데 빈번하게 발생하게 되면 오버헤드가 발생하는건지에 대해서 한번 찾아보기

0개의 댓글