안녕하세요.
또 운영체제로 찾아뵙게 됐네요..
어제 글을 썻는데 오늘 또 글을 쓰다니 갑자기 제가 부지런해진것 같아서 새삼스럽게 뿌듯한 느낌이 듭니다.
어제 술마시고 글써서 오늘은 멀쩡한 정신에서 쓸려고 노력했는데 저도 모르게 간단하게 한잔 해버렸네요..
타지에 와서 혼자 살다보니 술말고는 끌리는게 없고 그렇습니다. 그러니까 별로 들어오지도 않는 방문객 들이지만 이해주시길 바랍니다.
감사합니다.
이제 본론으로 돌아가서 운영체제의 가장 중요한 핵심 인터럽트. 그 종류에 대해서 이야기 해볼려고 합니다.
크게 세 종류라서 많은 이야기가 나오지는 않겠지만 그래서 그런지 글쓰는 입장에서는 마냥 좋네요.
1) 외부 인터럽트
- 첫 번째로 이야기 할 것은 외부 인터럽트 입니다. 지난 시간에 예로들었던 마우스에서 발생하는 인터럽트가 외부인터럽트의 예라고 볼 수 있겠네요. 이처럼 하드웨어적(마우스처럼 외부 장치 혹은 I/O처럼 입출력이 요구되는 인터럽트)으로 발생하는 인터럽트 들이 대부분의 외부 인터럽트라고 생각할 수 있습니다. CPU의 외부에서 CPU에 전기적인 신호를 줌으로서 CPU가 인터럽트가 발생했다고, 알게 하는것들이죠.
조금 중요한 외부 인터럽트 중에서는 타이머 인터럽트라는 것이 있습니다.
타이머 하면 가장 먼저 생각 드는게 시간이나 시계 같은 것들 일건데 이와 연관 되어있는 인터럽트입니다. 보통 컴퓨터는 초당 몇번의 연산을 한다는 스펙이 정해져 있습니다. 그렇다면 이를 반대로 생각하면 이정도 연산을 하게 되면 1초의 시간이 지나게 된 것과 마찬가지가 되는 것이죠. 이를 이용해서 사용자는 컴퓨터가 얼마정도의 시간만다 이런 연산을 하라던가, 혹은 PC에 여러개의 프로그램이 동작하고 있다면 일정 시간마다 연산을 하게 되는 프로그램을 바꾸는 등의 행동을 하게 하는것이 이 타이머 인터럽트 입니다.
나머지는 뭐 대충 I/O등의 입출력 장치나 외부 장치의 대한 인터럽트 들인데 술때문에 기억이 잘 안나서 이건 여기까지만 설명 하겠습니다.
2)내부 인터럽트
- 두 번째인 내부 인터럽트는 대부분이 CPU 내부에서 발생 시키는 인터럽트입니다. 만약 연산을 하다가 어떠한 숫자를 0으로 나눗셈을 한다면? 무한의 숫자가 나오게 됩니다. 이러한 잘못된 연산이 발생하게 되면 CPU는 이를 OS에 알리고 지금 잘못된 행동을 하고있으니 이건 안된다고 말리거나 경고하는 정도의 인터럽트라고 생각하시면 됩니다. 뭐 연산가능한 범위가 양수나 음수쪽으로 넘어가도 이런 인터럽트를 발생 시키기도 하는데 이 또한 같은 맥락이라 볼 수있겠죠.
3)소프트웨어 인터럽트
마지막으로 소프트웨어 인터럽트 입니다. 소프트웨어 인터럽트는 이름에서 볼 수 있듯이 대부분이 컴퓨터에서 사용하는 프로그램들이 요청하는 인터럽트입니다. 프로그램들이 자신이 동작할떄 직접 이런 연산을 하면 되지 왜 인터럽트를 발생시키지? 라는 의문이 들수있지만 이는 PC의 보호라는 개념에서 시작된 것입니다. 예를 들어서 프로그램이 CPU에게 니가 지금 하는 모든것을 그만두고 꺼져버려라고 한다면? 만약 CPU가 매우 중요한 일을 하고 있는 상태라면 PC에 치명적인 영향을 끼칠 수 있게 됩니다. 이러한 중요한 연산들은 프록그램(응용프로그램 혹은 어플리케이션, 앱이라고도 말합니다)이 명령 할 수 있게 된다면 PC에 치명적인 영향을 끼칠 수 있게 된다는 거죠. 그렇기 떄문에 프로그램은 이러한 명령을 직접적으로 CPU에 내리지 못하고 우리 OS 형님에게 부탁하는거죠. 형님 이것좀 부탁트려도 될까요? 그럼 OS가 상황을 보고 대신해서 이런 명령을 안전하게 처리해주는거죠. 이렇듯 대체로 프로그램에서 OS에 부탁해서 방생 시키는 인터럽트를 소프트웨어 인터럽트라고 부릅니다.
빠르게 3가지 내용이 지나갔네요. 저도 많은것을 알고있는 것이 아니고, 대체로 이런느낌이다라는 것만 전해주려고 하다보니 역시나 전문성이 떨어지거나 잘못된 내용이 있을 수 있습니다. 많은분들꼐서 관심을 가지고 이부분이 잘못됐다라고 말해주시면 수정할 테니 혹시 잘못된 점이나 이야기를 나누고 싶은 부분이 있다면 댓글 부탁드립니다.
'OS 관련 > 운영체제' 카테고리의 다른 글
인터럽트 기반 운영 체제 (0) | 2018.05.15 |
---|---|
운영체제(OS)의 정의/목적 (0) | 2018.04.17 |