Interrupt란?

CPU가 동작하고 있을 때, 입출력 연산과 같이 CPU가 대기해야하는 작업이 끝났을 때 또는 소프트웨어적 예외 상황이 발생하여 처리가 필요할 때 보내는 신호 입니다.


Interrupt를 사용하는 이유?

  • I/O 이벤트 상황의 처리 : 입출력 연산이 CPU의 연산 속도 보다 현저히 느릴 뿐만 아니라 모종의 이유로 CPU가 대기해야하는 상황에서 CPU가 아무 일도 하지 않고 있을 수 없기 때문입니다. 예를 들어, 사람의 입력이 필요한 상황이 발생하면 running 중이던 process를 wait/ready 상태로 바꾸고 다른 작업을 수행하며 다시 running 시킬 때 interrupt를 통해 상황이 완료되었음을 CPU에게 알려주는 역할을 수행합니다.                                                                             

 

  • 예외상황의 처리: 우선순위가 앞서는 예외상황이 발생하였을 때 현재 작업을 멈추고 예외상황을 처리하게 하기 위함도 있습니다.

 

  • 선점형 스케쥴링 구현: 선점형 스케쥴링이란, 우선 순위가 높은 process를 먼저 동작 시키는 것입니다. 즉, 기존에 CPU가 하던 작업이 있다면 이를 중단시킨 후 우선 순위가 높은 process를 동작 시키기 위함입니다.

 

 

Interrupt 동작과정

 

  • CPU가 어떠한 작업 중에 system call을 통해 인터럽트가 발생합니다.
  • CPU는 현재 진행 중인 기계어 코드를 완료하고, 현재 수행 중이던 process의 상태를 PCB(Process Control Block)에 저장합니다. (수행 중이던 Memory 주소, 레지스터 값 등등)
  • PC에 다음에 실행할 명령어 주소를 저장합니다.
  • 인터럽트 벡터를 읽고 ISR 주소를 얻어 ISR(Interrupt Service Routine)으로 점프하여 작업을 수행합니다.
  • 이때 발생한 인터럽트 번호를 토대로 IDT(Interrupt Descriptor Table)에서 인터럽트 번호에 해당하는 함수를 호출하여 작업을 처리합니다.
  • 작업이 완료되면 PCB에서 수행중이던 process 상태를 복원하고, 인터럽트가 해제되면 PC에 저장된 주소로 다시 점프해 하던 작업을 수행합니다.

 

Reference

https://velog.io/@tnddls2ek/OS-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-Interrupt

 

'CS > OS' 카테고리의 다른 글

[운영체제] Virtualization  (0) 2023.03.27
[운영체제] 컴퓨터 시스템의 구성요소  (0) 2023.03.13

컴퓨터 시스템은 다음과 같은 구성요소를 갖고 있습니다.

  • CPU(프로세서)
  • 메모리(Memory)
  • 레지스터(Register)
  • 버스(Bus)
  • 주변장치

CPU란?

컴퓨터의 중앙처리장치(Central Processing Unit, CPU)이며, 프로세서라고도 불립니다.

연산장치, 제어장치 그리고 레지스터로 구성되어 있으며 이를 통해 명령어를 해석하고 동작을 제어하며 연산을 수행합니다.

 

그래픽에 특화된 GPU(Graphic Processing Unit), 머신러닝에 특화된 (Tensor Processing Unit)이 있습니다.

 

*CPU가 유일하게 사용할 수 있는 데이터는 Memory에 존재하는 데이터 입니다.

따라서, 모든 프로그램은 Memory에 적재되어야 실행할 수 있습니다.

 

*CPU는 각 device controller에 "Command"만 전송 가능합니다.

각 장치로부터 데이터를 읽어올 수는 없습니다.


 메모리(Memory)란?

메모리는 데이터를 저장하는 공간입니다. 

크게 메인 메모리와 캐시로 구분됩니다.

 

  • 메인 메모리
    • CPU가 접근할 수 있는 유일한 저장 장치 입니다.
    • 저장된 데이터를 순차적으로 접근하는 것이 아닌 임의로 접근할 수 있습니다(Random access).
    • 저장된 데이터는 0과 1로 이루어져 있으며, 바이트 단위로 접근할 수 있습니다.
  • 캐시(Cache)
    • CPU의 처리 속도는 매우 빠른데 매번 메모리에 접근하여 데이터를 가져오는 것은 많은 시간을 소요할 수 있습니다. 이러한 간극을 해소하기 위해 나온 장치입니다.
    • 데이터 지역성(Locality)을 기반으로 동작합니다. (추후, 자세히 포스팅 하겠습니다.)
    • 메인 메모리의 일부 데이터를 미리 복사해두어서 프로세서가 빠르게 워드 단위의 데이터를 이용할 수 있습니다.

레지스터(Register)란?

CPU에 내장된 가장 작은 저장 장치입니다. CPU가 직접 접근할 수 있는 저장 장치이며, 캐시와 마찬가지로 CPU의 처리 속도 향상에 큰 영향을 미칩니다. 

 

저장 장치 중에 가장 빠른 속도를 지녔지만, 저장할 수 있는 용량은 32bit에서 64bit 사이의 작은 용량의 데이터만 저장할 수 있습니다.

 

*레지스터와 메모리의 가장 큰 차이점은, 레지스터는 CPU가 현재 처리하는 데이터를 가지고 있는 장치이고 메모리는 CPU가 필요한 데이터를 저장하고 있는 장치라는 점입니다.

 


버스(BUS)란?

CPU와 각 장치가 서로 데이터를 주고 받는 장치입니다.

위치와 기능에 따라 분류됩니다.

 

  • 위치에 따른 분류
    • 내부 버스: 프로세서 내부에서 연산장치 - 제어장치- 메모리 인터페이스 등을 연결해주는 장치입니다.
    • 외부 버스: 시스템 버스라고도 불립니다. 프로세서와 메모리, 프로세서와 외부 장치 등을 연결해주는 장치입니다.
  • 기능에 따른 분류
    • 제어 버스: 작업을 지시하는 신호가 오고 가는 장치로, 프로세서와 메모리 그리고 주변 장치에서 단방향으로 신호가 전송됩니다.
    • 데이터 버스: 데이터, 명령어 등을 전송하는 장치로, 프로세서와 메모리 그리고 주변 장치에서 양방향으로 신호가 전송됩니다. 일반적으로 데이터 버스의 신호선은 워드의 길이로 결정되며, 성능을 결정짓는 요소입니다.
    • 주소 버스: 작업을 수행할 때(메모리에 데이터 적재 등) 작업할 위치 정보를 전송하는 장치입니다.

주변 장치란?

모니터, 프린터, 스피커와 같이 입출력 장치등 컴퓨터에 연결되어 프로세서의 제어를 통해 동작하는 장치들을 총칭하는 단어입니다.

'CS > OS' 카테고리의 다른 글

[운영체제] Virtualization  (0) 2023.03.27
[운영체제] Interrupt  (0) 2023.03.17

+ Recent posts