폴링 방식 관련
안녕하세요 폴링 방식과 관련해 궁금한 것이 있습니다!
폴링 방식에서 CPU는 입출력 작업이 들어오면 입출력 관리자에게 (입출력을 처리하라는) 입출력 명령을 내린다고 하셨는데
저는 이해를 ‘입출력 작업(‘0’키 눌림)이 들어오면 입출력 관리자에게 (화면에 ‘0’을 띄워)라는 명령을 내린다‘ 이런 식으로 했습니다
그런데 왜 언제 입출력 명령이 완료될지 알 수 없거나, 혹은 키 입력이 들어왔냐는 확인을 계속 해야 하는 것인지 잘 모르겠습니다;;
답변 1
0
설명하신 내용은 폴링이 아니라 인터럽트에 대한 설명입니다.
폴링은 주기적으로 계속 확인하는 방식입니다!
0
1. 머릿속으로 구상이 잘 안되는데
'0'키 눌림을 예시로 한다면 폴링 방식은 어떤 과정을 거치게 되는 것인가요?
2. 인터럽트 방식에서 입출력이 완료되었을 때 CPU에게 인터럽트 요청 신호를 주고, CPU는 인터럽트 서비스 루틴을 실행한다고 알고 있는데
인터럽트는 어느 과정에서 생성되게 되는 것인가요?
0
1. 만약 게임에서 '0'키를 입력받는 것을 폴링 방식으로 코드를 짠다면 아래와 같은 코드를 만들 수 있을겁니다.
while(true){
if(Input(KeyCode.zero)){
// '0'키가 눌렸을 때 실행될 내용
}
wait(1000);
}
위 코드는 무한루프내 wait()으로 1초마다 '0'키가 눌렀는지 계속 검사하는 코드입니다.
키가 언제 눌렸는지 알 수 없으니까 계속 검사하는 것이죠.
구현은 쉽지만 쓸데없이 계속 검사를 하니까 성능은 좋지 않습니다.
2. 인터럽트는 해당 행위를 설명하는 단어입니다. 폴링 방식이 아니라 하드웨어적인 방법으로 '0'키가 눌렸을 때 "인터럽트 신호"가 발생되어 인터럽트 서비스 루틴이 실행됩니다. 온수옴님께서 말하는 인터럽트가 아마 "인터럽트 신호"인 것 같아서 이렇게 말씀드립니다.
만약 '0'키를 인터럽트 방식으로 구현한다면 '0'가 눌렸을 때 인터럽트 신호가 발생하고 이 인터럽트가 어떤 종료의 인터럽트인지 인터럽트 벡터를 뒤져서 확인합니다. 그리고 해당 인터럽트 서비스 루틴을 실행해서 '0'키가 눌렸을 때 동작하는 코드가 동작합니다.
폴링과 인터럽트의 가장 큰 차이점은
폴링은 소프트웨어적으로 일정주기마다 계속 확인해서 키보드가 눌렸는지 검사하는 방식이고
인터럽트는 하드웨어적으로 해당 키가 눌렸을 때 원하는 동작을 수행시키는 방식입니다.
궁금증이 해결되셨나요?
프로그램과 프로세스 강의 3분47초
1
649
1
컴파일 과정
1
558
1
페이징&가상메모리 관련 질문 드립니다.
1
411
1
페이징(배치정책) CPU에 논리주소를 물리주소로 전달해 줄때 계산 단위
1
485
1
운영체제의 역사 영상에서
1
484
2
프로세스 동작 및 스케줄링 알고리즘 관련 질문 드립니다.
1
505
1
인터럽트 발생 시점과 비동기 방식
1
601
2
PCB 상태 실행에서 대기 상태에서 준비 상태로 변경시
1
480
2
프로세스 동기화 질문 드립니다.
1
359
1
부모 프로세스는 프로그램을 실행하지 않아도 생기는 건가요?
1
421
1
페이지드 세그멘테이션 기법에서 메모리 주소 변환 할때요
4
408
1
오버헤드란?
1
4067
1
논리주소와 BoundAddress의 비교에 대한 질문
1
319
1
MLFQ 알고리즘
2
414
1
FIFO 알고리즘 / RR 알고리즘
1
455
1
블로그 업로드 질문
1
388
1
다중큐 강의에서 I/O 작업시 질문
2
254
1
예제코드 질문
1
308
1
하드디스크와 메모리 질문 있습니다!
0
227
1
컴파일 과정 예시와 관련해서 질문드립니다!!
1
283
1
예제 코드 관련 질문입니다!
1
268
1
공유 메모리 및 프로세스 생성 관련
3
504
1
레지스터 관련
2
401
1
"컴파일과 프로세스" 강의 1분 37초
1
251
1





