본문 바로가기
Computer Science/Operating System

[Pluto의 컴퓨터이야기] 운영체제가 인지하는 두 가지 Events

by Dev. Pluto 2022. 2. 21.
반응형

안녕하세요! 플루토입니다. 오늘은 운영체제가 인지하는 두 가지 이벤트인  InterruptException에 대해서 알아보도록 하겠습니다!

 

 


 

이번 글을 읽고 난 뒤의 여러분은
1. 컴퓨터 시스템의 특징을 설명할 수 있습니다.
2. 인터럽트(interrupt)와 익셉션(exception)에 대해서 설명할 수 있습니다.
3. (2) 번에서 서로의 차이점이나 유사한 점을 설명할 수 있습니다.

 

 

 

오늘에 주요 주제인 인터럽트와 익셉션에 대해 알아보기 이전에 컴퓨터 시스템의 특성을 먼저 알아야 할 필요가 있어. 간단히 언급하고 

본 주제로 들어가겠습니다.

 

 

 

 

 

1. 컴퓨터 시스템의 특징

 

컴퓨터 시스템은 중앙처리장치(CPU)와 I/O 디바이스(마우스, 모니터,  HDD 등)가 동시에 실행이 가능하다는 특성이 있습니다. 즉 

서로 할 일을 각각 수행하며 운영이 가능합니다.

입/출력 장치는 해당 장치마다 Controller가 존재하여 동작을 책임지는 역할을 하는데, 각자의 컨트롤러마다 가지고 있는 작은 크기의 Local buffer를 사용하여 컴퓨터의 메인 메모리(ram)와 데이터를 주고받으며 통신하게 됩니다. 

CPU는 입출력 기기에게 데이터 전송 등의 동작을 수행하는 특정한 명령어를 줄 수 있고, 반드시 해당 명령이 완료되었는지 아닌지에 대해 알아야 하는 특성이 있습니다.

보통 CPU와 입/출력 기기들 간의 속도 차이는 매우 심하기 때문에 CPU가 입/출력 기기에 작업을 수행하는 명령어를 실행시키고 기다리게 되면 장치가 명령을 수행하는 동안 중앙처리장치는 다른 작업을 수행하지 못하기 때문에 이런 문제점을 해결하기 위해 운영체제에서 여러 방법을 통해 해결하게 됩니다. 

 

이런 해결방안의 종류가 오늘 알아볼 인터럽트와 익셉션입니다.

 

 

 

 

 

 

 

2. Interrut & Exception

 

운영체제는 두 가지의 이벤트(event)를 인지할 수 있다고 본문 제목에 적혀있는데요!

먼저 운영체제에서의 이벤트가 무엇이냐?라는 궁금증에 쉽게 비유를 하자면 

 

바로 "해줘!" 입니다.

 

이것.. 해줘!

시스템을 운영하던 도중 운영체제에게 직접적으로 무엇인가를 요청하는 것이 바로 운영체제에서의 이벤트라고 할 수 있습니다.

무엇을 해달라고 이벤트를 발생시키는 주체에 따라서 인터럽트 혹은 익셉션이라고 부르게 됩니다.

 

 

 

  • 인터럽트: 하드웨어 장치에 의해 발생이 되는 이벤트(ex. I/O device <-> Main memory데이터 전송을 완료했을 때)
  • 익셉션: User level에서 내려오는 응용프로그램 등의 실행에 있어 발생이 되는 이벤트(파일 입출력, 라이브러리 호출 등)

 

 

 

사용자 혹은 하드웨어가 컴퓨터 시스템의 중간다리 역할인 운영체제를 거치지 않고, 하드웨어를 직접적으로 접근하게 되면 시스템이 매우 취약해지는 문제가 발생합니다. 따라서 사용자는 운영체제에게 익셉션을 발생하여 파일을 생성하거나 하는 등의 하드웨어를 제어하는 요청을 보낼 수 있고, 이에 운영체제는 사용자가 요청한 익셉션의 종류에 따라서 ISR(Interrupt Service Routine)을 현재 진행 중이던 다른 작업에 대해 적절한 Context Switching 이후에 사용자의 익셉션(일반적으로 System Call이라고 부르기도 합니다.)을 처리합니다.

 

 

 

하드웨어나 유저 레벨 애플리케이션에서 이벤트가 발생하고, 운영체제가 처리하기까지의 설명이 부족한 탓에 예시를 하나 더 적겠습니다. 

 

 

한창 강의가 진행 중인 A대학교 컴퓨터학과의 한 강의장이 있습니다. 

강의장 안에는 다음 주 중간고사를 대비해서 운영체제 수업이 한창입니다.

 

"오늘은 운영체제가 이해할 수 있는 두 가지 이벤트인 인터럽트와 익셉션에 대해서 알아보도록 하겠습니다. 먼저 컴퓨터 시스템을 이해해야 하는데....(설명 설명)"

 

열심히 교수님이 수업을 진행하시던 도중 학생 한 명이 손을 들어 올립니다.

 

"네 학생?"

 

"교수님! 이전 시간에 설명해 주신 프로세스와 스레드의 차이를 다시 한번 들을 수 있을까요?"

 

학생에 질문에 교수님은 지금 진행 중이었던 수업이 어디까지였는지 잠시 생각하시고는 

곧이어 학생의 질문에 답변을 하십니다.

 

"아 프로세스는 어떻고...(중략)"

 

설명을 다 마치신 교수님은 다시 오늘 수업의 주제인 "인터럽트와 익셉션"으로 돌아와 수업을 이어서 진행하십니다.

 

여기까지 우리 일상에서 볼 수 있는 예시로 운영체제의 이벤트 발생과 처리까지의 흐름을 간단하게 알아보았습니다.

순서로 다시 정리를 하면

 

1. 교수님이 오늘 수업을 진행하십니다 (운영체제가 현시점에서의 작업을 진행합니다.)

 

2. 수업 도중 학생 한 명이 질문을 위해 손을 듭니다 (하드웨어 혹은 사용자 애플리케이션이 이벤트를 발생합니다.)

 

3. 교수님은 지금까지 진행 중이었던 수업의 정보를 잠시 머리에 기억합니다

(운영체제가 이벤트 처리를 위해 현재 진행 중이던 프로세스의 PC register 정보,

처리가 끝난 뒤 돌아올 주소 정보 등을 Context Switching 합니다.)

 

4. 교수님이 학생에 질문에 답변합니다 (운영체제가 이벤트에 대해 적절한 루틴을 실행해 처리해줍니다.)

 

5. 답변이 끝나고 3번에서 기억한 내용을 가지고 오늘 수업을 이어 진행합니다 

(운영체제는 3번에서 저장해 놓은 데이터를 다시 CPU로 불러들여와 이벤트 발생 이전 작업하던 내용을 이어 처리합니다.)

 

 

 

 

 

 

3. 익셉션과 인터럽트의 종류와  비슷한 점 / 차이점

 

이처럼 이벤트를 받고 처리하는 데에 있어서 인터럽트와 익셉션은 그 원리나 개념이 유사합니다.

 

 

 3-1 인터럽트 방법 (Polling, Hardware Interrupt)

 

  운영체제는 속도 차이가 매우 크게 나는 입출력 장치와 중앙처리장치의 특성에 대한 문제점 (컴퓨터 시스템의 특징에서 언급한 해결방안)을 해결하기 위해 두 가지 방법을 사용합니다.

 

폴링 : CPU가 일정 시점마다 입 출력 장치이게 직접 물어보도록 사용하는 방식, CPU와 입 출력 장치 간의 속도 차이 때문에 작업이 끝났는지 묻기 위한 추가적인 CPU Cycle이 발생되는 단점이 존재

 

하드웨어 인터럽트 : CPU는 I/O를 처리해달라는 명령어를 장치의 컨트롤러에게 요청을 하고 다른 작업을 처리하고 있으면, 입출력을 마친 컨트롤러가 CPU에게 인터럽트를 발생시켜서 작업이 종료가 되었음을 알리는 방식

 

* 보통 하드웨어 인터럽트 방식이 자주 사용되고 효율적이기도 하지만 경우에 따라서 폴링 방식을 사용하는 경우도 있습니다.

 

 

 3-2 익셉션의 종류 (Traps, Faults, Aborts)

 

Traps: 유저 레벨에서 의도적으로 발생시키는 것이며 대부분은  System call이다

Faults: 의도적으로 발생시키는 것은 아니지만 문제가 발생했을 때 발생시키는 익셉션. 대부분의 Fault는 복구가 가능한 익셉션이다.

Aborts: 의도하지도 않고, 복구도 불가능한 상황일 때 발생되는 익셉션, 복구가 불가능하기 때문에 실행 중이던 프로그램이 중지됨.

 

 

 3-3 차이점

 

익셉션이 발생하는 경우 운영체제는  Kernel의 System Call Interface 영역으로 이동하여 해당 시스템 콜이 정의된 table형태의 영역으로 가서 해당 익셉션의 종류를 판별하고 명령어를 실행하는 반면에 비슷한 원리이지만 

인터럽트의 경우 먼저 앞선 예제처럼 컨택스트 스위칭 작업을 수행합니다. (정상적인 익셉션의 경우 보통 컨택스트 스위칭을 실행하지 않습니다.) 이후 인터럽트 루틴을 수행하고 다시 스위칭을 통해 작업을 불러오는 점에서 비슷하지만 약간의 차이점이 있습니다. 

 

 

 

 

 

4. 정리 

운영체제는 인터럽트와 익셉션 두 가지 이벤트를 받고 처리할 수 있다!
인터럽트는 하드웨어 장치가, 익셉션은 사용자 레벨에서 발생한다!
인터럽트, 익셉션은 처리되는 전반적인 과정이나 원리는 비슷하지만 약간의 차이점이 존재한다!

 

여기까지 오늘은 운영체제의 두 가지 이벤트인 인터럽트와 익셉션에 대해서 개념과 차이를 알아보는 시간을 가졌습니다. 

 

제가 적어낸 정보가 100% 정확하지 않습니다. 혹시 잘못 기술된 부분이 있다면 댓글로 알려주시면 바로 수정하도록 하겠습니다

 

두서없는 글 읽어주셔서 감사합니다!! 🙏🙏

반응형