시간 복잡도 표기법 빅오, 빅오메가, 빅세타

* 시간 복잡도를 처음 접한다면 아래 글은 이해하기 어려울 수 있습니다. 시간 복잡도 같은 목적지를 향해 가는 길이 여러 갈래일 때 우리는 더 빠르게 도착하는 길을 찾는다. 마찬가지로 동일한 목적을 가지는 기능을 여러 알고리즘으로 구현했을 때 그것들의 효율성을 비교하기 위해 시간 복잡도를 사용한다. 당연히 더 오래 걸리면 더 안 좋다. 알고리즘A의 시간복잡도가 O(n)이고 알고리즘B의 시간복잡도가 … Read more

1080p 1080i 차이(Progressive, Interlaced)

1080p, 1080i 유튜브에서 720p, 1080p 등 화질을 선택할 수 있다. 그리고 어떤 TV는 전원을 켜면 1080i라고 표시해준다. p와 i는 Progressive(프로그레시브), Interlaced(인터레이스드)인데, 영상 출력 방식을 나타낸 것이다. Interlaced(인터레이스드) 인터레이스드 방식은 한 장의 이미지를 홀수열과 짝수열로 분할하여 홀수열 이미지, 짝수열 이미지를 빠르게 순차 출력하여 분할되지 않은것 처럼 보이게 출력한다. 이미지를 홀수열과 짝수열로 분할하여 출력하면 이미지를 한 장 … Read more

비트맵(bitmap) 이미지 용량 계산

서론 압축을 하지 않는 비트맵 이미지는 해상도를 알 경우 용량의 근삿값을 알아낼 수 있다. 비트맵은 8비트, 16비트 등도 있지만 현재 가장 많이 사용하는 24비트 비트맵을 기준으로 용량을 계산해본다. 비트맵 이미지 용량 계산 디지털 이미지는 이미지의 한 점에 해당하는 픽셀들을 나열하여 한 장의 이미지를 만들어낸다. 그리고 우리가 말하는 해상도는 픽셀의 개수이다. 예를 들어 해상도가 1920×1080이면 가로 … Read more

이미지 더블버퍼링(이중버퍼링) 개념

영상 스트리밍에서의 버퍼 우리가 보는 영상은 카메라(이미지센서)로부터 입력받아서 디스플레이로 출력된다. 이때 카메라로부터 입력받은 이미지들은 내부적으로 영상처리 과정을 거쳐야하고, 입력장치(카메라)와 출력장치(디스플레이)의 속도차이로 인해 입력받은것을 바로바로 출력하지 못하는 경우도 존재하는 등 여러 이유로 입력받은 이미지를 버퍼에 임시 저장한 후 출력한다. 시스템에 따라 버퍼를 하나만 사용하거나 둘, 셋 이상을 사용하는 방식도 있다. 여기서 버퍼를 둘 사용하는것이 더블버퍼링이며 버퍼를 … Read more

스위치 배선과 NO, NC, C, +, – 단자 뜻

NO, NC, C, +, – 사진과 같이 일반적으로 스위치에는 NO, NC, C 단자가 있다. C 단자 스위치는 회로에 직렬로 연결되어 단락 여부를 결정한다. 그래서 회로를 끊고 스위치로 두 회로 사이를 이어주어야 한다. C 단자는 끊어진 한쪽에 연결한다. 스위치는 방향성이 없기 때문에 끊어진 두 곳 중 어디든 상관없다. NO 단자 NO는 Normally Open의 약자로 일반적으로 스위치 … Read more

3V3, 1V8, 4K7 등의 뜻

회로도를 보는데 3V3이 나와서 찾아봤다. 간단하게 3V3은 3.3V, 1V8은 1.8V, 4K7은 4.7kohm이다. 즉 점(.) 대신에 문자를 쓴 것이다. 위와 같이 사용하는 정확한 이유는 모르겠으나 인터넷에서 본 의견은 다음과 같다. 이유야 어쨌든 실제 사용되고 있기 때문에 알아야 한다.

컴파일(Compile)과 빌드(Build) 차이

컴파일(Compile) 컴파일은 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하여 목적코드(Object Code)를 생성하는 과정을 말한다. 예를들어 C언어에서 목적코드의 확장자는 *.o다. 이러한 컴파일을 수행해주는 프로그램을 컴파일러(Compiler)라고 한다. C언어에서 사용하는 GCC(GNU Compiler Collection), Java에서 사용하는 javac가 이러한 컴파일러에 해당한다. 컴파일과정은 컴파일언어로 작성된 소스코드에게만 필요한 과정이다. 대표적인 컴파일 언어로는 C, Java가 있다.다른건 인터프리터 언어가 있다. 빌드(Build) 위에 서술했듯이 C언어 … Read more

PC, 임베디드 시스템에서 시스템 버스의 필요성

시스템 버스(System Bus)의 필요성 PC나 MCU와 같은 Core를 가지고 있는 시스템에서 Core, Memory, Peripheral간 데이터 전송은 버스를 이용한다. 예를들어 A가 B에게 데이터 전달시 서로 직접 전달하는것이 아닌 A장치는 버스로 데이터를 보내고 B장치는 버스로부터 데이터를 받는다. 이는 국도를 달리고 있던 차가 빠르게 이동하기 위해 고속도로(버스)로 올라가는것과 같다. 만약 버스를 이용하지 않는다면 주변장치들을 직접 연결해서 데이터를 전달할 … Read more

HSM(Hardware Security Module) 개념 요약

HSM(Hardware Security Module) 임베디드 장비에 네트워크가 들어가면서 보안의 중요성이 대두되었고 이에 따라 관련 법규들도 제정되고 있다. 임베디드 장비에 보안을 어떻게 적용할 것인가에 대한 문제의 해결책 중 하나는 보안을 위한 전용 하드웨어 모듈인 HSM을 장착하는 것이다. HSM을 사용하지 않는 시스템의 시나리오 HSM을 사용하지 않는 데이터 보안은 어플리케이션이 DB에서 암호문을 받은 후 가지고 있는 복호화키로 암호문을 해독한다. … Read more

핀먹스 (Pinmux, Pin Multiplexer) 개념

Mux (Multiplexer) pinmux는 pin을 mux하는 것이다. 따라서 pinmux를 이해하기 위해서는 먼저 mux를 이해할 필요가 있다. 디지털 논리회로 중 mux(멀티플렉서)라고 있다. Select신호를 이용하여 여러 개의 입력 중 하나를 선택하는 장치다. 아래 그림은 입력이 두개, 출력이 하나인 2X1 MUX다. SELECT신호가 0이면 OUTPUT은 입력 신호 중 하나인 A가 출력되고 SELECT신호가 1이면 B가 출력된다. Pinmux (Pin Multiplexer) 아두이노의 ADC에 … Read more