2012-02-29 4 views

답변

2

'또는 멀티 스레딩과 인터럽트 간의 관계는 무엇입니까?'

대부분의 최신 선점 OS에서 인터럽트는 OS가 입력되는 방식입니다. 인터럽트가 없으면 OS는 아무 것도하지 않습니다. 인터럽트는 장치/드라이버 (즉, 디스크, 키보드, NIC, 마우스, USB, 메모리 관리 하드웨어, 타이머 하드웨어)의 하드웨어 인터럽트와 '소프트웨어 인터럽트'의 두 가지 종류로 나뉩니다. 시스템 호출. 어떤 유형의 인터럽트라도 준비/실행중인 스레드 세트를 변경할 수 있습니다. 본질적으로 OS는 인터럽트 리턴 후에 실행될 스레드 세트를 변경할 수있는 큰 인터럽트 처리기입니다.

하드웨어 인터럽트에서의 재조정은 하드웨어 (및/또는 관련 드라이버)가주의를 기울여야 할 때 신속하게 응답 할 수있는 선점 형 멀티 스레드 OS를 허용합니다.

스레드 레벨에서 하드웨어 시그널링으로의이 고성능 응답은 선점 형 멀티 태스커가 협업 시스템에 비해 갖는 가장 큰 장점 중 하나이며, 스레드 간 신호 전달, 동기화 등의 복잡한 문제를 해결하는 주된 이유입니다.

인터럽트 및 선매없이 디스크, 네트워크, USB, 디스플레이의 성능이 데스크톱 시스템의 거의 모든 부분에서 좋지 않으므로 비디오 스트리밍과 같은 응용 프로그램이 작동하지 않습니다. NIC 칩은 멋진 비디오 버퍼를 가지고있을 때 하드웨어 인터럽트를 일으키고, 드라이버를 실행하고 데이터로 사용자 버퍼를로드하고 비디오 스트리밍 앱에서 스레드를 만듭니다. 즉, I/O, 데이터를 표시 할 수 있도록 준비/실행 중입니다.

3

시간 및 이벤트 중심 스레드 예약의 가장 일반적인 구현은 인터럽트를 기반으로합니다. 예를 들어, 하드웨어 타이머는주기적인 인터럽트를 생성합니다. 스레드를 처리하는 ISR은 현재 실행중인 스레드의 상태를 스레드의 상태 구조에 저장 한 다음 다른 구조의 다른 스레드 상태를로드하고 마지막 ISR 명령 ("return-from-interrupt"/ IRET) CPU가 다른 스레드를 실행하게합니다.

+0

+1 '시간 조각'을 언급하지 않았더라도 타이머 인터럽트 이외의 다른 예를 선택할 수 있었 더라면 좋았을 것입니다. –

+0

@MartinJames : 타이머 인터럽트 문제는 무엇입니까? 확실히 유일한 인터럽트 소스는 아니지만, 무엇이 잘못 되었습니까? 많은 OS가이 목적을 위해 이것을 사용합니다. –

+0

타이머 인터럽트에는 아무런 문제가 없습니다. 웹에서 쓰레딩 작업의 텍스트가 너무 많아 타이머 인터럽트가 실행중인 스레드 세트를 변경하는 유일한 것임을 암시합니다 (참고 - 귀하의 게시물을 포함하지 않습니다. 그 세트에!). 일반적으로 그러한 텍스트가 첫 번째 단락에서 '타임 슬라이싱'또는 '양자'를 언급하면 ​​실제로 잘못된 것은 아니지만 슬프게도 오해의 소지가 있습니다. –

1

정확하게 멀티 태스킹에서 타임 슬리밍이 도움이되는 것과 유사합니다. 다른 스레드를 실행하기 위해 스레드가 인터럽트 될 수있는 경우 프로세서를 방해하는 스레드에 대해 걱정할 필요가 없으며 다른 스레드가 앞으로 진행하지 못하게 할 수 있습니다.

0

멀티 스레딩

thread1 ______   _____ 
thread2  _____   _____ 
thread3   _____   _____ 

스레드

isr    ________ 
threadn _________  _________ 

항상 CPU의 시간을내어 인터럽트 핸들러/인터럽트 서비스 루틴과 힘 컨텍스트 스위치를 야기 인터럽트 CPU 시간

중단을 공유 할 수 있습니다.

관련 문제