본문 바로가기

테크

[리눅스] 인터럽트와 트랩의 차이

*** 인터럽터
인터럽트는 컴퓨터에 장착된 장치나 컴퓨터 내의 프로그램으로부터 오는 신호로서 운영체계가 하던 일을 멈추고 다음에 무엇을 할 것인지를 결정하게 한다. 오늘날 거의 모든 PC나 대형 컴퓨터들이 인터럽트 기반의 시스템인데, 즉 일단 프로그램 내의 컴퓨터 명령문을 시작되면, 더 이상 작업을 진행할 수 없거나, 또는 인터럽트 신호가 감지될 때까지 명령문들을 실행한다. 인터럽트 신호가 감지되면, 컴퓨터는 실행되고 있던 프로그램을 재개하거나, 또는 다른 프로그램의 실행을 시작한다.

기본적으로 단일 컴퓨터는 오직 한번에 한 개의 컴퓨터 명령어만을 수행할 수 있다. 그러나, 인터럽트 신호가 있기 때문에, 다른 프로그램이나 명령문을 수행할 수 있는 순서를 가질 수 있다. 이렇게 하는 것을 멀티태스킹이라고 하는데, 이것은 사용자로 하여금 동시에 여러 개의 작업을 할 수 있도록 해준다. 컴퓨터는 사용자가 효과적으로 일할 수 있게끔, 단순히 그 프로그램들이 수행될 순서를 관리한다. 물론, 컴퓨터는 사용자의 모든 작업들이 동시에 수행되는 것처럼 보이게 빠른 속도로 동작한다

운영체계는 대개 인터럽트 관리기능을 가지고 있다. 인터럽트 관리장치는 만약 하나이상의 인터럽트가 처리되어야 하는 경우라면, 인터럽트들 간의 우선 순위를 정하고 그들을 큐에 저장한다. 운영체계는 스케줄러라고 불리는 또다른 작은 프로그램을 가지고 있는데, 이는 다음 번에 수행되어야할 프로그램에게 제어권을 넘겨준다.

인터럽트는 주로 예상시점을 가늠하기 어려운 이벤트를 처리하기 위해 사용하는 방법입니다.


인터럽트(interrupt)와 예외(exception)대한것은 한글이나 영문으로 키워드 검색을 하시면 거의 모든 자료를 얻을실수 있고 질문자께서 긍극적이 차이점을 원하시는것같아 대부분의 것을 생략하고 간단한 차이점만 말씀드린다면... 쉽게 이렇게 이해 하시면 됩니다 1~10까지를 백번 반복해야 할일이 있을때 1,2,3 까지 카운트를 하더중 인터럽트가 발생하면 십까지 다 세고 난후 그다음 일부터 십까지 반복해야 하는것을 중지하고 인터럽트된 루트에 일을 수행하고 다시 일부터 십까지를 세죠... 허나 예외가 발생하면 어디까지 세고 있었던 간에 그 순간 중단하고 예외처리 루트로 갑니다... 그래서 예외처리는 아주 응급한 경우에만 발생이 된다고 보시면 됩니다.


(***예외 - 컴퓨터 시스템의 동작 도중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는 것. 예를 들면, 연산 도중 넘침에 의해 발생한 끼어들기 등이 여기에 해당한다.***)


일반적으로 봤을 때 프로그램 자신의 맡은 일을 시작 부터 종료할 때까지 중단 없이 끝내도록 하는게 매우 간단해 보이긴 하지만 이런 저런 이유로 외부에서 "중단(Interrupts)"이 요청되게 된다. 예를 들자면 마우스의 움직임이 있을 때 발생하는 것과 같은 인터럽트로 마우스 장치는 마우스가 움직일 때 현재의 프로세스에 인터럽트를 발생시키게 된다. 이렇게 인터럽트가 발생하게 되면 인터럽트 핸들 러(interrupt handler)가 수행된다. 인터럽트 핸들러는 프로그램을 중단시키는 루틴을 수행한다.


인터럽트는 마우스와 같은 주변장치에서 발생하는 하드웨어 인터럽트와 소프트웨어에서 인위적으로 발생시키는 소프트웨어 인터럽트가 있는데, 합해서 256가지의 인터럽트를 가지게 되며, 각각의 인터 럽트는 고유한 번호를 가지게 된다. 인터럽트 핸들러는 인터럽트가 발생한 물리적인 메모리의 위치를 기억하기 위한 세그먼트 어드레스를 포함하게 된다. 그래서 인터럽트 핸들러가 끝난후 중단된 프로세 스에서 다시 하던 일을 계속하도록 지시할 수 있다.


이러한 인터럽트의 행동방식은 지극히 상식적이다. 일상생활에서 우리가 업무중에 전화등으로 인한 인터럽트가 발생했을경우 전화요청을 다 처리한다음 중단된 업무부터 다시 일을 시작해 나가는 것과 마찬가지다. 이럴 경우 내가 어디까지 업무를 진행하다가 중단하고 전화를 받았는지를 기억하고 있어 야 할것이다.


하드웨어 인터럽트 들은 CPU외의 다른 장치들에서 발생한다. 키보드, 디스크 드라이브, CD-ROM, 사운 드 카드, 마우스와 같은 장치들이 이에 포함된다. 내부 인터럽트는 CPU로 부터 발생하는 운영오류 등 이 포함된다. 이러한 인터럽트들은 트랩(traps)이라고 부르기도 한다.


소프트웨어 인터럽트 들은 말그대로 프로그램에서 필요에 따라 발생시키는 인터럽트 들로 고유의 API (Application Programming Interface)를 이용해서 발생시킨다. 유닉스와 윈도우즈 같은 현대적인 대 부분의 운영체제들은 C로된 소프트웨어 인터럽트 인터페이스를 가진다.

 

 

 

 

 

 


*** 트랩
①하드웨어나 운영 체계 또는 둘의 조합에 의해 작동되는 특별한 형태의 조건 전달점. 트랩은 스위치로 제어되던 정지나 분기의 고전적 개념에서 발전된 것으로, 흔히 다수의 내부 트리거나 트랩 기능이 컴퓨터 내에 존재하며 기대 또는 예측할 수 없는 사건들에 의해 발생된다. 트랩과 끼어들기의 차이점은 트랩은 발생하는 시점이 프로그램의 일정한 지점이라는 점에서 동기적인 반면, 끼어들기는 주로 하드웨어적인 요소나 프로그램 외부 상황에 따라서 발생 시점이 일정하지 않다는 점에서 비동기적이다.
②하드웨어에 의해 자동적으로 미리 알려진 위치에 조건적으로 점프하는 것.

 

 


*** 인터럽터란
컴퓨터가 실행해야 할 일정 순서로 작업을 실행중이다가 예기치 않는 일이 발생시 실행 중이던 일을 잠시 중지하고 발생한 일을 처리하는 것을 말합니다.
크게 외부 인터럽터와 내부 인터럽터가 있는데
님은 현ㅐ 인터럽터는 내부 인터럽터 중 프로그램 인터럽터 입니다.

이 프로그램 인터럽터가 생기는 이유는
현재 설치중인 프로그램에 문제가 있어서 입니다.
하나는 바이러스에 감염된 경우이고
또하나는 바이러스에 감염되었다가 치료했으나 치료 도중 일정 부분이 손상되었기 때문이죠
그래서 다시 바이러스도 잡고 다시 설치했는데도
실행이 되지않으면 그 유틸리티를 다시 다운받거나 다른것을 복사해다 설치해보세요 그럼 해결 됩니다.
------------------------------------------------------------

*** 트랩은
실행중인 프로그램 내에 테스트를 위해 특별한 조건을 걸어 놓은 것을 말한다. 예를 들어 "인터럽트를 트랩 한다"는 것은 특정한 인터럽트가 발생할 때까지 기다렸다가, 그에 해당하는 루틴을 실행시키는 것을 말한다. 에러 트랩은 에러 조건을 시험하고, 복원 루틴을 제공하기 위한 것이다. 디버깅 트랩은 특정 명령어의 실행을 기다렸다가 그 프로그램을 중지시키고, 바로 그 순간의 시스템 상태를 분석하는 것이다.

-------------------------------------------------------
*** System call(시스템 호출) 이란,
프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영체계의 루틴(어떤 행동을 수행하기 위한 일련의 작업 순서를 말한다)을 호출하여 이용하는 것을 말한다. 대개 모든 운영체계는 여러 가지 저급한 연산을 수행하기 위한 루틴들의 모음을 가지고 있다. 예를 들어 모든 운영체계는 디렉토리를 만드는 루틴이라든가, 특정한 디렉토리에 있는 파일들의 목록을 읽어내는 루틴 등을 가지고 있다. 만약 응용 프로그램에서 운영체계에 있는 루틴을 실행시켜 어떠한 결과를 얻기 원한다면, 시스템 호출을 통해 이용해야한다.