티스토리 뷰

※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.


인터럽트

    인터럽트는 프로세서가 프로그램을 실행 도중 하드웨어나 소프트웨어의 문제 때문에 프로그램이 실행되고 있던 순서를 변경하여 좀 더 급한 이벤트를 수행한 후에 원래의 프로그램으로 복귀하여 나머지 프로그램을 수행한다. 인터럽트가 발생하면 현재 위치가 자동으로 인터럽트의 스택에 복귀주소로써 저장되어 인터럽트의 끝에서 복귀 명령을 만나면 다시 복귀주소로 돌아온다.

인터럽트의 발생원인은 크게 1. 하드웨어 인터럽트와 2. 소프트웨어 인터럽트로 나뉜다.

하드웨어 인터럽트의 경우 다시 내부 인터럽트와 외부 인터럽트로 나뉘게 되는데 내부 인터럽트는 프로세서에 정의되어있지 않은 명령을 실행하려 한다거나 0으로 나눗셈을 시도하는 경우를 들 수 있으며 외부 인터럽트의 경우 프로그램의 타이머가 지정된 시간이 경과 되었을 경우 등과 같은 이유로 호출된다.

소프트웨어 인터럽트의 경우 프로세서가 프로그램의 명령을 실행도중 비정상적인 명령어를 만나거나 사용자가 임의로 인터럽트를 호출할 때 발생한다.

인터럽트의 목적은 프로세서가 프로그램을 실행 하는 도중에 계속된 실행이 불가능한 문제를 만났을 때 인터럽트를 호출하여 그 문제를 해결하고 다시 원래의 프로그램으로 돌아와서 나머지 프로그램을 정상적으로 수행하는데 있다.

시스템 콜

시스템 콜이란 C C++과 같은 프로그래밍 언어에서 제공하지 않는 기능들은 운영

체제(커널)의 서비스를 호출하여 사용하는 것을 말한다. 기본적으로 시스템 콜의 유형은 다음과 같다.

1. 프로세서 제어 : 프로세서 특권 모드를 사용해 직접적으로 프로세서를 제어 가능

2. 파일 조작 : 파일을 생성하거나 삭제, 관리 등

3. 장치 관리 : 장치 요구 및 장치 해제, 읽기, 쓰기, 재배치 등

4. 정보 유지 : 시간과 날짜의 설정과 획득, 시스템 자료의 설정과 획득

5. 통신 : 통신 연결의 생성 및 제거, 메시지의 송수신, 상태 정보 전달 등

시스템 콜은 운영체제에서 일반적인 사용자 모드가 아닌 커널 모드에서 동작하도록 하는데 이 두 모드의 특징은 다음과 같다.

 사용자 모드 : 일반 응용 프로그램이 동작하는 비특권 모드, 시스템의 자원이나 하드웨어를 직접적으로 컨트롤 할 수 없으며, 이를 하려면 시스템 콜을 사용해야 한다.

커널 모드 : 프로세서의 특권 레벨로 프로세서의 모든 명령을 처리하며 시스템의 자원이나 하드웨어를 직접적으로 엑세스하여 컨트롤한다. 그리고 실제 장치 드라이버나 운영체제 프로그램이 구동하는 모드이다.

만약 일반 응용 프로그램이 시스템의 자원을 사용하여 작업을 하려고 한다면 시스템 콜을 사용하여 작업을 한다.

신고
프로필사진

Yowu (Yu Yongwoo)

My MBTI type is ENTP. (Of course I do not believe it 100%, but I want to do that) I use Node.js to develop the backend. I use Ubuntu Linux as my development environment, and I love Vim. I am interested in open source and are keen to contribute. I have a bachelor's degree in computer science from Catholic University and now a software engineer at Plating Inc., I spent about 5 years developing and learning, and I am still interested in software development and culture. Recently, I am interested in React, Serverless structure, Domain Design Driven. Sometimes I play drums in the band.