쓰레드와 인터럽트의 차이
겨울c
현재 임베디드쪽에서 일하고 있습니다.
예전 win32기반에서는 이벤트및 쓰레드(winproc)를 이용하여
메시지 처리를 했었는데,
임베디드 c쪽에서는 인터럽트를 이용하더군요..
궁금한것은 인터럽트와 쓰레드의 차이를 알고 싶은것입니다.
쓰레드도 최하단에서는 인터럽트로 구성될것 같은데
맞는건지...
-
초시계
약간 덧붙이면 fiber(파이버)는 context 스위칭을 하는 것으로서는 thread와 같으나 OS 즉 윈도우즈가 thread id를 부여하지 않는 즉 커널 내부에서 context 스위칭 정보를 저장해 놓지 않는 상태를 말합니다.
커널 내부에서 pid와 tid에 대한 정보를 관리하는데 파이버는 그것이 아니지만 컨텍스트 스위칭 즉 레지스터의 저장이 일어나는 차이가 있죠. -
터전
interrupt를 enable하게 하는 것과 disable하게 하는 것은 interrupt가 사용되는 또한가지 경우가 exception이 발생했을 때도 역시 하던 일 멈추고 exception handler로 빠져야 합니다. 그런데 interrupt는 descriptor table로 맵핑이 되거든요. 그런데 descriptor table이 불완전한 상태이거나 인터럽트가 걸린 상태에서 또다시 인터럽트가 걸리거나 한다면 곤란하겠죠. 그래서 인터럽트를 가능하
-
지후
thread는 제가 알고 있기로는 CPU time을 분할해준 개념으로 알고 있습니다. CPU가 1초에 100이라는 처리 능력을 가지고 있으면 10개의 thread로 나누면 각각의 thread가 10씩 나누어 쓸 수 있겠죠. time-sharing이라고 하며 주로 서버 프로세서에서 쓰는 개념을 PC가 가져와 쓰고 있죠. 실제로 구현은 CPU의 현 상태 즉 각 레지스터의 값들을 메모리에 저장했다가 scheduler가 thread에 실행권을 넘기면 다시 실행
-
새론
제가 말한 인터럽트와 쓰레드 개념은 x86 시스템(Intel x86 Architecture)를 기반으로 말씀드린것입니다.
즉, 일반 Personal Computer들은 대부분 제가 말한 개념에 해당된다고 봐도 과언이 아니죠.
물론, Interrupt와 어셈블리(정확히 말하면 머신코드(기계어))라는 개념은 CPU 종속적이기 때문에,
다른 CPU에서는 다른 명칭으로 부르거나, 개념이 조금 달라질 수 있습니다. -
이퓨리한은지
타겟 CUP에 종속적입니다. 어셈블리도 타겟CPU에 종속적이듯 8051보드의 인터럽터 쓰는 방법하고 avr또 틀립니다. arm계열도 당연히 틀리겠죠... 가장 좋은 방법은 CPU의 테이터 쉬트를 보고 직접 간단한 인터럽터 를 시도해 보시는게 좋을듣 합니다. 안되는 부분을 질문해주시면 많은 공부가 될듣 하네요.. 지금 하신 질문은 너무 범위가 넓어요^^ 직접 해보시고 막히는부분을 질문하세요^^
-
단화한
답변감사합니다^^; 어느정도 인터럽트에 대한 개념은 잡혔는데 실제 구현할때의 예를 잘 모르겠네요.
소스를 보다보면 Enable_interrupt Disable_interrupt가 자주 나오는데 어느 순간에 인터럽트 처리를 하게 되는지 모르겠어요 ㅠ -
눈꽃
인터럽트는 CPU 보드에서 운영체제에게 통지하는 Hardware Interrupt와, 운영체제 실행 도중 고의로 발생시킨 (INT 명령에 의해) Software Interrupt로 분류됩니다. CPU에서 인터럽트가 발생하면 16-bit 리얼 모드 OS일경우(ex:DOS) 인터럽트 벡터 테이블(물리 주소 0번지에 존재)에서 해당 하는 인터럽트에 할당된 함수 주소를 가져와 실행하고, 32비트 OS일경우 IDTR에서 IDT 테이블을 불러와 IDT 테이블에서
-
나로
8051보드나 avr계열의 트레이닝 보드를 공부해보셧으면 아실텐데... 음.. 인터럽터라는것은...
인터럽터란 어떠한 이벤트가 발생했을때 우선순위를 선정해서 먼저 처리 한다것입니다.
예를 들어보겠습니다. 자동문을 만드는 CPU를 개발한다고 생각을 해보세요.
최고 중요한 이벤트가 무엇이겠습니까? 사람인지 아닌지 식별 카메라가 사람이라고 판단해
적당한 시간에 문을 열어주는 이벤트를 발생시켜 CPU는 이벤트 처리를 위해 인터럽트를 발생시키고
순차적인 모든 것 -
무슬
인터럽트는 CPU가 운영체제에게 보내주는 일종의 신호입니다.
운영체제는 이를가지고 세분화해서 각각의 Application 에게 메시지를 나눠줍니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676182 | 숫자 순서대로 배열하는법 | 권뉴 | 2024-11-24 |
2676152 | 기본적인거 하나 질문드립니다. | 개미 | 2024-11-24 |
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |