운영 및 유지보수 리눅스 운영 및 유지 관리 리눅스에서 인터럽트란 무엇인가?

리눅스에서 인터럽트란 무엇인가?

Apr 20, 2023 pm 04:34 PM
linux

Linux에서 인터럽트는 필요할 때 하드웨어가 CPU에 신호를 보내고 CPU가 하드웨어 요청을 처리하기 위해 진행 중인 작업을 일시적으로 중지하는 메커니즘입니다. 하드웨어가 사용량이 많을 때 CPU는 쓸모 없는 작업을 많이 수행할 가능성이 높습니다(각 폴링은 건너뛰고 처리되지 않음). 따라서 CPU와 주변 하드웨어(하드 디스크, 키보드) 간의 공동 작업 성능을 향상시킵니다. , 마우스 등), 인터럽트 메커니즘을 소개합니다.

리눅스에서 인터럽트란 무엇인가?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

1. 인터럽트 정의

인터럽트는 하드웨어가 필요할 때 CPU에 신호를 보내고 CPU는 하드웨어 요청을 처리하기 위해 진행 중인 작업을 일시적으로 중지하는 메커니즘입니다.

구체적으로:
인터럽트는 CPU가 정상적으로 작동하는 동안 내부 또는 외부 이벤트나 프로그램에 의해 미리 설정된 이벤트로 인해 CPU가 실행 중인 프로그램을 일시적으로 중지하고 내부 또는 외부 이벤트 또는 미리 설정된 이벤트를 제공하도록 전환하는 것을 의미합니다. 서비스가 완료된 후 일시적으로 중단된 프로그램을 계속 실행하기 위해 복귀합니다.

1.1 배경(인터럽트가 필요한 이유)

1. 인터럽트가 없으면 CPU와 주변 장치 간에 작업/통신하는 유일한 방법은 폴링입니다. CPU는 정기적으로 하드웨어 상태를 확인하고 처리합니다. 필요할 때 처리하고, 그렇지 않으면 건너뜁니다.
2. 프로세서의 속도는 주변 하드웨어 장치와 동일한 크기가 아니므로 필요할 때 하드웨어가 커널에 신호를 보내는 메커니즘이 제공됩니다.

폴링/인터럽트 메커니즘 도입의 단점:
하드웨어가 사용 중이면 CPU는 쓸모 없는 작업을 많이 수행할 가능성이 높습니다(각 폴링은 건너뛰고 처리되지 않습니다).
따라서 CPU와 주변 하드웨어(하드 디스크, 키보드, 마우스 등) 간의 공동 작업 성능을 향상시키기 위해 인터럽트 메커니즘이 도입되었습니다.

1.2 인터럽트 및 신호

中断: 硬件/进程发,内核收
信号:内核发,进程收,或者进程发进程收
로그인 후 복사

1.3 인터럽트 처리 프로세스(CSAPP 설명서 참조)

中断是异步发生的,是来自处理器外部的I/O设备的信号的结果

1. 硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的
2. 硬件中断的异常处理程序常常被称为中断处理程序(interrupt handler)
로그인 후 복사

다음 그림은 인터럽트 처리를 간략하게 설명합니다.
그림 8.5
리눅스에서 인터럽트란 무엇인가?

네트워크 어댑터, 디스크 컨트롤러 및 타이머 칩과 같은 I/O 장치는 프로세서 칩의 핀에 신호를 보내고 시스템 버스에 예외 번호를 배치하여 인터럽트를 트리거합니다. 인터럽트를 발생시킨 장치입니다.
현재 명령어의 실행이 완료되기 전에 프로세서는 인터럽트 핀의 전압이 높아지는 것을 확인하고 시스템 버스에서 예외 번호를 읽고 적절한 인터럽트 핸들러를 호출합니다. 핸들러가 반환되면 제어를 다음 명령어(즉, 인터럽트가 발생하지 않은 경우 제어 흐름에서 현재 명령어 뒤에 있을 명령어)로 반환됩니다. 결과적으로 중단이 발생하지 않은 것처럼 프로그램 실행이 계속됩니다.

剩下的异常类型(陷阱、故障和终止)是同步发生的,是执行当前指令的结果
我们把这类指令叫做故障指令(faulting instruction)
로그인 후 복사

1.4 인터럽트의 본질과 처리 메커니즘/프로세스

인터럽트의 본질은 특별한 전기 신호입니다

리눅스에서 인터럽트란 무엇인가?

처리 프로세스:
인터럽트는 하드웨어 장치에 의해 생성되어 직접 장치로 전송됩니다. 인터럽트 컨트롤러(Interrupt Controller) 간단한 전자 칩의 입력 핀 중 인터럽트 컨트롤러는 멀티플렉싱 기술을 사용하여 프로세서에 연결된 단 하나의 파이프라인을 통해 프로세서와 통신합니다. 프로세서가 이 신호를 감지하면 현재 작업을 중단하고 인터럽트를 처리합니다. 하드웨어 장치가 인터럽트를 생성할 때 프로세서의 시계와의 동기화를 고려하지 않습니다. 즉, 인터럽트는 언제든지 생성될 수 있으므로 커널은 언제든지 새로운 인터럽트에 의해 중단될 수 있습니다.

2. 인터럽트 유형(범주)

Linux는 일반적으로 외부 인터럽트(하드웨어 인터럽트라고도 함)와 내부 인터럽트(예외라고도 함)로 구분됩니다.

2.1 동기 인터럽트(예외/내부 인터럽트)

동기 인터럽트(예외/내부 인터럽트): 동기 인터럽트는 CPU 자체에 의해 생성되며 내부 인터럽트 또는 예외라고도 합니다.

2.1 .1 동기 인터럽트의 예: 페이지 누락 인터럽트

CPU가 명령어를 실행할 때 액세스하려는 페이지(가상 주소의 페이지)가 물리적 메모리에 없는 것을 발견하면 실행을 중지합니다. 예외
실행 파일이 매우 커서 디스크에 저장될 수 있습니다. (CPU 지역성 원칙) 나머지 콘텐츠에 액세스하려고 하면 페이지 오류 인터럽트가 발생합니다. 이때 디스크의 Swap it in on the disk

2.2 비동기 인터럽트(인터럽트/외부 인터럽트)

비동기 인터럽트가 발생합니다. (인터럽트/외부 인터럽트): 비동기 인터럽트는 외부 하드웨어 장치에 의해 생성되며 외부 인터럽트 또는 인터럽트라고도 합니다

2.2.1 异步中断举例:网卡的工作原理

当网卡接受到数据包时,通知内核,触发中断,所谓的上半部就是,及时读取数据包到内存,防止因为延迟导致丢失,这是很急迫的工作。
读到内存后,对这些数据的处理不再紧迫,此时内核可以去执行中断前运行的程序,而对网络数据包的处理则交给下半部处理。

2.3 中断与异常的区别

异常与中断不同,中断是由硬件引起的;
异常则发生在编程失误而导致错误指令,或者在执行期间出现特殊情况必须要靠内核来处理的时候(比如缺页)。它在产生时必须考虑与处理器时钟同步,因此异常也称同步中断。

3、中断请求实现:上下半部机制

3.1 背景

中断处理程序运行需要快速执行(因为不可阻塞),同时要能完成尽可能多的工作,这里存在矛盾。

因此把中断处理切分为两个部分,上半部分(top half)接收到一个中断后立即执行,但是只做有严格时限的工作,例如对接收到的中断进行应答或复位硬件。能够被允许稍后完成的工作会推迟到下半部分(bottom half)去,此后在合适的时机下半部分会被中断执行,Linux提供了实现下半部分的各种机制。

优点:这种设计可以使系统处于中断屏蔽状态的时间尽可能的短,以此来提高系统的响应能力。

3.2 上半部:

中断处理程序是上半部——接受中断,他就立即开始执行,但只有做严格时限的工作。
上半部简单快速,执行时禁止一些或者全部中断。
工作内容:处理紧急功能,取寄存器状态。

3.3 下半部:

能够被允许稍后完成的工作会推迟到下半部去,此后,在合适的时机,下半部执行
工作内容:完成中断事件绝大多数任务。
下半部稍后执行,而且执行期间可以响应所有的中断。
下半部的实现有软中断实现, tasklet 实现和工作队列实现。

3.4 上下半部划分原则

1) 如果一个任务对时间非常敏感,将其放在中断处理程序中执行;
2) 如果一个任务和硬件有关,将其放在中断处理程序中执行;
3) 如果一个任务要保证不被其他中断打断,将其放在中断处理程序中执行;
4) 其他所有任务,考虑放置在下半部执行
로그인 후 복사

3.5 举例子: 用网卡来解释一下这两半。

当网卡接受到数据包时,通知内核,触发中断,所谓的上半部就是,及时读取数据包到内存,防止因为延迟导致丢失,这是很急迫的工作。
读到内存后,对这些数据的处理不再紧迫,此时内核可以去执行中断前运行的程序,而对网络数据包的处理则交给下半部处理。

4、中断号

中断对应着一个中断号,内核通过这个中断号查找相应的中断服务程序。

每个中断都通过一个唯一的数字标志,这样操作系统才能够给不同的中断提供对应的中断处理程序。
这些中断值即中断请求线,例如IRQ 0是时钟中断、IRQ 1是键盘中断。对于连接在PCI总线上的设备而言,中断请求线是动态分配的。

5、中断上下文

中断服务程序不在进程上下文中执行,而是在一个与所有进程都无关的、专门的中断上下文中运行,以此保证中断服务程序能够在第一时间响应和处理中断请求,然后快速地退出。

处理器在任何指定时间点上的活动必然属于以下三种情况之一:

运行于用户空间,执行用户进程;
运行于内核空间,处于进程上下文,代表某个特定的进程执行;
			 (CPU空闲时,内核执行空进程)
运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断;
로그인 후 복사

相关推荐:《Linux视频教程

위 내용은 리눅스에서 인터럽트란 무엇인가?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C 언어로 멀티 스레딩을 구현하는 4 가지 방법 C 언어로 멀티 스레딩을 구현하는 4 가지 방법 Apr 03, 2025 pm 03:00 PM

언어의 멀티 스레딩은 프로그램 효율성을 크게 향상시킬 수 있습니다. C 언어에서 멀티 스레딩을 구현하는 4 가지 주요 방법이 있습니다. 독립 프로세스 생성 : 여러 독립적으로 실행되는 프로세스 생성, 각 프로세스에는 자체 메모리 공간이 있습니다. 의사-다일리트 레딩 : 동일한 메모리 공간을 공유하고 교대로 실행하는 프로세스에서 여러 실행 스트림을 만듭니다. 멀티 스레드 라이브러리 : PTHREADS와 같은 멀티 스레드 라이브러리를 사용하여 스레드를 만들고 관리하여 풍부한 스레드 작동 기능을 제공합니다. COROUTINE : 작업을 작은 하위 작업으로 나누고 차례로 실행하는 가벼운 다중 스레드 구현.

Web.xml을 열는 방법 Web.xml을 열는 방법 Apr 03, 2025 am 06:51 AM

Web.xml 파일을 열려면 다음 방법을 사용할 수 있습니다. 텍스트 편집기 (예 : 메모장 또는 문자 메시지)를 사용하여 통합 개발 환경 (예 : Eclipse 또는 NetBeans)을 사용하여 명령을 편집하십시오 (Windows : Notepad Web.xml; Mac/Linux : Open -A Texted web.xml).

Linux 시스템에서 Python 통역사를 삭제할 수 있습니까? Linux 시스템에서 Python 통역사를 삭제할 수 있습니까? Apr 02, 2025 am 07:00 AM

Linux 시스템과 함께 제공되는 Python 통역사를 제거하는 문제와 관련하여 많은 Linux 배포판이 설치 될 때 Python 통역사를 사전 설치하고 패키지 관리자를 사용하지 않습니다 ...

가장 잘 사용되는 Linux는 무엇입니까? 가장 잘 사용되는 Linux는 무엇입니까? Apr 03, 2025 am 12:11 AM

Linux는 서버 관리, 임베디드 시스템 및 데스크탑 환경으로 사용되는 것이 가장 좋습니다. 1) 서버 관리에서 Linux는 웹 사이트, 데이터베이스 및 응용 프로그램을 호스팅하는 데 사용되어 안정성과 안정성을 제공합니다. 2) 임베디드 시스템에서 Linux는 유연성과 안정성으로 인해 스마트 홈 및 자동차 전자 시스템에서 널리 사용됩니다. 3) 데스크탑 환경에서 Linux는 풍부한 응용 프로그램과 효율적인 성능을 제공합니다.

데비안 하프 (Debian Hadoop)의 호환성은 어떻습니까? 데비안 하프 (Debian Hadoop)의 호환성은 어떻습니까? Apr 02, 2025 am 08:42 AM

Debianlinux는 안정성과 보안으로 유명하며 서버, 개발 및 데스크탑 환경에서 널리 사용됩니다. 현재 Debian 및 Hadoop과 직접 호환성에 대한 공식 지침이 부족하지만이 기사에서는 Debian 시스템에 Hadoop를 배포하는 방법을 안내합니다. 데비안 시스템 요구 사항 : Hadoop 구성을 시작하기 전에 Debian 시스템이 Hadoop의 최소 작동 요구 사항을 충족하는지 확인하십시오. 여기에는 필요한 JAVA 런타임 환경 (JRE) 및 Hadoop 패키지 설치가 포함됩니다. Hadoop 배포 단계 : 다운로드 및 unzip hadoop : 공식 Apachehadoop 웹 사이트에서 필요한 Hadoop 버전을 다운로드하여 해결하십시오.

GO를 사용하여 Oracle 데이터베이스에 연결할 때 Oracle 클라이언트를 설치해야합니까? GO를 사용하여 Oracle 데이터베이스에 연결할 때 Oracle 클라이언트를 설치해야합니까? Apr 02, 2025 pm 03:48 PM

GO를 사용하여 Oracle 데이터베이스에 연결할 때 Oracle 클라이언트를 설치해야합니까? GO에서 개발할 때 Oracle 데이터베이스에 연결하는 것이 일반적인 요구 사항입니다 ...

데비안 문자열은 여러 브라우저와 호환됩니다 데비안 문자열은 여러 브라우저와 호환됩니다 Apr 02, 2025 am 08:30 AM

"Debiantrings"는 표준 용어가 아니며 구체적인 의미는 여전히 불분명합니다. 이 기사는 브라우저 호환성에 직접 언급 할 수 없습니다. 그러나 "Debiantrings"가 Debian 시스템에서 실행되는 웹 응용 프로그램을 지칭하는 경우 브라우저 호환성은 응용 프로그램 자체의 기술 아키텍처에 따라 다릅니다. 대부분의 최신 웹 응용 프로그램은 크로스 브라우저 호환성에 전념합니다. 이는 웹 표준에 따라 웹 표준과 잘 호환 가능한 프론트 엔드 기술 (예 : HTML, CSS, JavaScript) 및 백엔드 기술 (PHP, Python, Node.js 등)을 사용하는 데 의존합니다. 응용 프로그램이 여러 브라우저와 호환되도록 개발자는 종종 브라우저 크로스 테스트를 수행하고 응답 성을 사용해야합니다.

See all articles