개발
-
그래픽 소프트웨어, 라이브러리 정리개발/기술 2018. 5. 6. 10:27
내가 일하는 곳 옆 소파트가 그래픽 관련된 일을 하는 곳이라서 같이 회의할 때마다 wayland, opengl, surface flinger과 같은 그래픽 라이브러리 용어를 자연스럽게 흘려 듣게 된다. 처음에는 생소했지만 어느정도 시간이 지나면 이들의 역할과 각각의 상관관계를 파악하게 될 줄 알았는데 만 2년이 지나도 용어 자체만 익숙해질뿐 이해 수준은 그대로인걸 보니 의도적인 노력 없이는 안되는 것 같다. 그래서 이번 포스트를 통해 이제껏 귀동냥으로 들은 용어와 그래픽의 기초적인 동작을 정리해보려고한다. 그래픽을 공부하기전에 잠깐 화가가돼서 그림을 그린다고 생각해보자. 지금처럼 태블릿을 이용해서 웹툰을 그리는 화가가 아니라 10년전 팔레트와 붓을 이용해서 그리는 화가 말이다. 그림을 그리기 위해선 어떤..
-
Ubuntu 16.04에서 Tensorflow GPU 지원 버전 설치하기개발/삽질 기록 2018. 5. 1. 10:13
Ubuntu 16.04에서 GPU 가속화를 지원하는 Tensorflow를 설치하는 방법이 포스트는 Tensorflow 공식 가이드 페이지를 읽고 글쓴이의 컴퓨터에 설치한 과정을 정리한 것이다. PC 환경에 따라 차이가 있을 수 있으므로 포스트를 읽고 설치하기 전에 개인 PC환경이 글쓴이와 어떤점이 차이가 나는지 먼저 확인해두길 바란다. 똑같은 instruction을 사용해도 어떤 PC는 되고 어떤 거는 안되는 경우가 많다. 글쓴이의 PC 환경은 다음과 같다.CPU: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz, Quad CoreGPU: GEFORCE GTX1060 (그래픽 드라이버 설치 완료)RAM: 8GBKernel: 4.4.0-122-generic * 혹시 우분투 커널 버전..
-
Ubuntu 안드로이드 스튜디오 설치하기개발/삽질 기록 2018. 5. 1. 09:55
Ubuntu 16.04에서 안드로이드 스튜디오 설치하기 Ubuntu에서 안드로이드 스튜디오를 설치하는 방법은 두가지가 있다.공식 홈페이지에서 .zip 파일로 받아온 후 압축을 풀어서 바이너리를 링크거는 방법. 안드로이드 스튜디오를 개발자가 유연성있게 관리 할 수 있다는 장점이 있지만 환경변수를 일일이 설정하고 추적하는게 번거롭다.ppa 저장소를 추가하고 apt-get으로 받기. vim, terminator 같은 프로그램을 받을 때처럼 원격 저장소에서 모두 받을 수 있는 방법이다. 유연성있게 관리할 수는 없지만 설치 방법이 간단하다.이 포스트는 두번째 방법에 대해서만 다룬다. 1. 저장소 추가 및 apt-get을 이용한 안드로이드 스튜디오 설치터미널을 열고 아래의 명령어를 입력한다 sudo apt-add-..
-
우분투 16.04 한글 입력하기개발/삽질 기록 2018. 5. 1. 09:37
Ubuntu 16.04 에서 한글 입력기를 설치하는 방법 1. 터미널 창에서 ibus 입력기 및 한글 입력기 설치ibus 입력기용 한글을 시스템에 추가하는 작업. 터미널을 열고 아래 설치 명령어 입력 sudo add-apt-repository ppa:createsc/3beolsudo apt-get updatesudo apt-get install ibus ibus-hangul 2. Language Support에 한글 추가한글을 추가하고 한글 입력이 가능한 입력 방식을 변경하는 작업 시작 -> keyboard -> Language SupportKeyboard input method system 에서 IBus 모드로 변경하기Language에 한글이 없다면 Install / Remove Languages로 변..
-
ARM64 리눅스 부팅 초기 어셈블리 코드 분석(head.S) (2/2)개발/컴퓨터사이언스 2018. 1. 27. 17:18
앞 포스팅에서 다루지 못한 부분들을 마저 분석해보자. 처음에는 ARM 어쎔 코드도 생소했고 Exception Level 개념도 없어 많이 헤맸는데 이젠 어느정도 훈련도 되어 있고 앞에서 했던 것들 보다 내용 도 적을 뿐만 아니라 상대적으로 익숙한 작업들이라 쉽다. 4. setup_boot_mode_flag set_cpu_boot_mode_flag: adr_lx1, __boot_cpu_mode cmpw0, #BOOT_CPU_MODE_EL2 b.ne1f addx1, x1, #4 1:strw0, [x1]// This CPU has booted in EL1 dmbsy dcivac, x1// Invalidate potentially stale cache line ret 현재 실행 되고 있는 cpu의 Excepti..
-
ARM64 리눅스 부팅 초기 어셈블리 코드 분석(head.S) (1/2)개발/컴퓨터사이언스 2018. 1. 17. 23:54
최근에 ARM 64bit 리눅스의 초기 부팅 어셈블리 코드(arch/arm64/kernel/head.S)를 분석할 일이 있었다. 학교 다닐 때 x86 어셈블리로 코딩을 해본적도 있고 예전에 ARM 32bit miniOS 초기 부분도 분석해본 경험이 있어서 금방 할 줄 알았는데... ldr 같은 기본적인 명령어도 오랜만에 보니 생소했고 ARM 64bit만의 고유한 레지스터가 있어 레퍼런스를 뒤적거리면서 찾게 되다 보니 생각보다 오랜 시간이 소요됐다. ARM32와 ARM64가 원래 겹치는 영역이 별로 없는건지 아니면 내 머릿속에 남아 있는게 별로 없어서 겹칠게 없어진건지. 고생한 만큼 쉽게 잊혀질 수 있기 때문에(응?) 포스트로 이번에 공부한 내용들을 짧게나마 정리해보려한다. 1. ENTRY(stext) E..
-
KVM - ARM개발/가상화 2018. 1. 1. 11:41
아주아주 먼 옛날 가상화 기술이 핫 할때 Intel과 ARM 같은 제조사들은 자사의 칩에서 동작하는 가상화 소프트웨어의 성능을 높이고자 하드웨어단에서 여러 옵션을 추가 했다. 소프트웨어 개발자들은 제조사들이 제공하는 옵션을 활용해 하이퍼바이저를 만들었는데 KVM 또한 이때 만들어진 하이퍼바이저중 하나다. 좀더 구체적으로 말하면 QEMU같은 Type2 소프트웨어가 하드웨어의 가상화 확장 기능을 쉽게 사용 할 수 있도록 인터페이스의 역할을 하는 커널의 모듈이다. 그런데 제조사들은 가상화 기술의 성능을 높이기 위해 어떤 기능을 제공하고 있을까? 여러 OS를 동작하는 작업인 만큼 매우 오버헤드가 심할텐데 어떤 옵션이 있었기에 VMware로 리눅스가 쌩쌩 잘 돌아가는거지? 그리고 KVM은 하드웨어의 기능을 어떻게..
-
QEMU와 KVM - 2개발/가상화 2017. 11. 11. 11:03
KVM(Kernel-based Virtual Machine) 그림1. KVM 공식 로고다. 펭귄이 던지고 있는 공은 VM을 의미하는 것 같다. "KVM은 리눅스 커널을 하이퍼바이저로 변환하기 위한 가상화 인프라스트럭처의 하나이다"라고 위키 백과에선 설명하는데 이것만 가지곤 KVM의 제공하는 기능을 이해하긴 힘들다. KVM을 공부하기 전에 같이 사용되는 하이퍼바이저, QEMU에 대해 먼저 공부해보면 KVM의 사용 목적에 대해서 더 쉽게 이해할 수 있다. QEMU 포스트 읽어보기 Intel과 ARM같은 하드웨어 개발 회사들은 컴퓨터 내에서 가상화 기술을 지원하기 위한 장치들(Intel VT 또는 AMD-V )을 넣어뒀다. 이런 장치들은 가상화 기술의 고질적인 성능 저하 문제를 해결 하기 위해 만들어졌는데 이..