Alexa Custom skill 참고

Posted by ho95

시작 8월 중순부터 알렉사 스킬을 만들어 보고 있습니다. (회사 업무로…) 알렉사는 아마존에서 만든 AI입니다. 삼성 빅스비나, 애플 시리 같은 것입니다. (자세한 내용은 https://ko.wikipedia.org/wiki/%EC%95%84%EB%A7%88%EC%A1%B4_%EC%95%8C%EB%A0%89%EC%82%AC) 아마존에서 라즈베리파이나 다른 보드에도 적용 할 수있게 SDK를 배포중입니다. 아직 한글은 지원하지 않습니다. 영어, 일본어외 2-3가지를 지원 하는데, 영어를 기준으로 하겠습니다. 알렉사 스킬의 전체적

Read More

딥러닝을 위한 정말정말 기초 지식1

Posted by ho95

딥러닝을 위한 짜투리 잡지식 이번 여름 IDEC 강좌중 충북대에서 진행되는 “신경망(딥러닝)의 고성능 구현” 강좌에 관심이 생겨 수강하려고 보니 선수 과목으로 CUDA 프로그래밍이 있었습니다. 학부에선 듣도보도 못했으므로… 기초적인 부분을 직접 검색하여 정리하였습니다. CUDA CUDA(쿠다)라는 단어는 보통 엔비디아의 지포스 그래픽을 구매하실때 쉽게 찾을 수 있습니다 [^CUDA는 NVIDIA가 만든 병렬 컴퓨팅 플랫폼 및 API 모델이다. CUDA 플랫폼은 GPU 의 가상 명령어셋을 사용할 수 있도록 만들어주는 소프트웨

Read More

학교 인라인 어셈블리 과제

Posted by ho95

또다시 돌아온 과제 다시 과제가 나왔습니다. 이번엔 C언어를 바탕으로 중간중간 어셈블리어를 혼용하여 코드를 작성하는 것입니다. (NASM이아닌 ATT문법) 내용은 똑같습니다. A-Z 출력하기, 한 자리수를 입력받아 그 수만큼 줄바꿈(\n)을 하고 A출력하기 그리고 n1,n2를 입력받아 n1~n2까지의 합을 구하기 입니다. 처음엔 오히려 C언어를 사용할 수 있으니까 좀더 빨리 끝낼 수 있을 줄 알았는데, 해맸습니다 ㅎㅎ.. 항상 기초적인 것을 내주시지만 기초가 없어서 어렵습니다. ASM() 함수 C언어에서 어셈블리어를 혼용

Read More

학교 GAS 과제

Posted by ho95

서론 지난 주엔 NASM 과제가 나왔습니다… 그리고 이번 주엔 같은 내용의 GAS 과제가 나왔습니다… 동작 내용은 같고 스타일만 NASM에서 GAS로 바꾸면 됩니다. (+다른 내용 과제 하나더…) 간단한 프로그램도 어셈블리어로 만드려니 어색하고 어려운 것 같습니다 ㅎㅎ.. 항상 글의 가독성이 좋지 못합니다. 양해 부탁드립니다. (글 잘 정리해서 쓰고 싶지만.. 바로 적지않으면 머릿속에서 사라지네요.) GAS(GNU Assembler) GAS는 GNU ASsembler의 약자입니다. NASM과 기본적인 내용은 거의

Read More

학교 NASM 과제

Posted by ho95

NASM(Netwide Assembly) 어셈블리어에는 자주 쓰이는 2가지 타입이 있습니다. NASM(intel 스타일과 유사)과 예전에 정리 했던 GAS가 있습니다. GAS와 NASM 서로 문법이 조금 다릅니다. GAS에서는 레지스터를 호출할때 %를 붙힌다던지 상수 앞에는 $을 쓴다던지.. 명령어의 오퍼랜드 순서가 다릅니다. 그외에는 큰 차이가 없어 하나를 배우면 나머지 하나도 금방 배울 수 있다고 합니다. 그리고 리눅스에서 실제 실행 파일을 만들때 조금 차이가 있습니다. 어셈블리어로 프로그램을 코딩 하면 용량이 확 줄게 됩

Read More

리눅스 CFS 스케쥴러

Posted by Ho95

CFS에 대해 CFS(Completely Fair Scheduler)를 위키 백과에서 찾아보면 아래와 같이 나옵니다. 1 리눅스 커널의 2.6.23 (2007년 10월) 릴리스에 병합된 프로세스 스케줄러이며 현재의 기본 스케줄러이다.프로세스 실행을 위해 CPU 자원 할당을 관리하며 상호작용 성능을 극대화하면서도 전반적인 CPU 이용을 극대화하는 것을 목표로 한다. 위와 같이 리눅스 커널 2.6.23버전부터 도입된 스케줄러로써 이전 리눅스 스케줄러인 O(1) 스케줄러를 대체합니다. O(1) 스케줄러를 간단하게 말해

Read More

C언어 문자 입출력

Posted by Ho95

시작 방학동안 띵가띵가 놀고 백준을 풀어 보는데, 안그래도 낮았던 실력이 더 낮아져서 공부하다가 정리했습니다. C언어에서 문자 입출력에 대해… char Character의 약자 char. 저는 ‘차’라고 읽습니다. 2의보수 체계에서 1Byte(8bit)는 -2^7~2^7-1의 표현이 가능합니다. unsigned char 같은 경우는 부호가 없기때문에 0~2^8까지 표현 가능. 왜 부호가 있을때는 -128~127까지이냐… 2의 보수 때문에 그럽니다. 1의 보수에서는 +0 -0이 있는데, 2의 보수에서는 0이 하나만 존재

Read More

java memory struct + etc

Posted by Ho95

이 글은 안드로이드 프로그래밍 과제에 적었던 내용을 가져왔습니다. 자바의 메모리 구조 자바의 메모리 구조는 플랫폼에 상관없이 WORA(Write Once Run Anywhere)을 가능하게 해주는JVM(Java Virtual Machine)에 존재하고 있으며, 크게 5가지 영역으로 나뉘어져 있습니다. 영역은 아래 표와 같습니다. Class(Static)StackHeapNative MethodPC Register전역 변수지역 변수객체 데이터플랫폼 호환 코드다음 명령어 주소 1)Class(Static) Area 클

Read More

file operation in Device Driver

Posted by Ho95

시작 리눅스 시스템에서 메모리는 커널 영역과 유저 영역으로 분리되어 있습니다. (논리적으로..) 그 이유는 OS가 관리하고 있는 영역을 사용자의 응용 프로그램이 임의로 사용(Read,Write)하면, 시스템에 치명적인 문제가 생길수 있기 때문입니다. 그래서 두 영역으로 분리 했습니다. 위와 같은 이유로 사용자는 함부로 커널 영역에서 입출력을 할 수 없습니다. 전에 응용이 어떻게 디바이스 드라이버를 다루는가 글을 올렸습니다. 응용 프로그램이 어떻게 커널 영역에 있는 디바이스 드라이버를 다루는가? 바로 chrdevs[주번호

Read More

How to use Device Driver in user app

Posted by Ho95

응용 프로그램이 Device Driver를 사용 하는 법 디바이스 드라이버는 core와 wrapper로 나눌수 있습니다. core는 실제 H/W의 데이타시트를 보고 코드를 작성 해줘야 합니다. 이름 그대로 핵심 부분 이며 장치 제조사들이 제공 한다고 하네요. 이 글에서 적고자 하는 것은 일반 사용자들의 응용 프로그램이 사용 하는 Wrapper입니다. 응용들은 이 Wrapper를 이용하여 디바이스 드라이버를 사용 합니다. 모든 글에 적어 놓지만 틀린 부분이 있을 수 있습니다. Wrapper 정의 : core의 함수들을 ke

Read More