본문 바로가기

전체 글

(32)
크기가 명시된 정수 자료형 모든 컴퓨터에서 int는 4byte의 정수형 변수일까? 아니다 CPU의 비트 수에 따라서 int의 크기는 달라질 수 있다. 이런 문제를 해결하기 위해 stdint.h 헤더파일을 이용해서 int자료형의 크기를 명시해줄 수 있다. int8_t는 8bit의 부호가 있는 정수자료형을 뜻한다. 앞에 u가 붙게 되면 unsigned를 의미하며 부호가 없다(자연수)는 뜻이다. - ex) uint8_t 8대신에 16, 32, 64를 넣어서 비트 수를 바꿀 수 있다.
DMA 방식 왜 DMA를 사용할까? 폴링은 프로그램에 의한 입출력 방식이여서 CPU가 계속 주변장치를 감시하기 때문에 CPU의 효율이 떨어진다고 했다. 이런 점을 개선하기 위해 CPU개입없이 주변장치와 상호작용하는 DMA(Direct Memory Access)가 개발되었다. 그럼 CPU개입이 적은 인터럽트를 사용하면 되지 않을까? 인터럽트를 사용하더라도 여전히 CPU는 데이터 전송을 하기위해 개입하게 되고, 입출력하는 시간이 길어지게 되면 CPU는 입출력하는 동안 다른 일을 못하게 된다. DMA 과정 그럼 CPU는 무엇을 하면 될까? CPU는 DMAC(DMA controller)에게 입출력 관련 정보만 주고 다른일을 계속 하면된다. 입출력 정보에는 뭐가 있을까? CPU는 DMAC에게 어떤 source를 보내는지, 목..
인터럽트(Interrupt) 방식 폴링 방식은 CPU의 효율이 떨어지는 것과 동시에 여러 작업이 진행될 때 하나의 작업이 실행이 지연되거나 실행할 수 없는 단점이 있다고 했다. 이러한 문제점을 해결할 수 있는 방식 중 하나가 인터럽트 방식이다. main문을 실행하고 있는 도중에 입출력 장치에서 필요할 때 마다 즉각적으로 CPU에게 인터럽트 신호를 전송하게 된다. 해당 인터럽트가 요청한 작업을 실행하기 위해 하고있는 동작을 멈추고 ISR(인터럽트 처리 루틴)으로 이동한다. ISR이 완료되면 CPU는 수행을 멈춘 곳으로 되돌아가 중지된 작업을 계속한다. 인터럽트 처리 과정 평소에는 노란색 LED와 파란색 LED를 번갈아가며 1초마다 깜빡이다가 스위치를 누르면 1초간 빨간색 LED를 켜고 다시 노란색, 파란색 LED를 계속 깜빡이게 개발한다고..