분류 전체보기
-
가끔은 소프트웨어도 둥글다카테고리 없음 2018. 4. 8. 10:21
얼마 전 중국의 우주 정거장이었던 텐궁이 다행히 인명피해를 주지 않고 대서양에 추락했습니다. 추락하기 2일 전부터 뉴스에선 우주 위기 위험경보를 알리며 텐궁이 곧 지구에 추락하겠으나 아직 위치는 알 수 없으며 시간은 몇 시께라고 모호한 답변을 내놨습니다. 대기오염뿐만 아니라 이제는 우주에서도 말썽을 부리는 중국을 원망하면서도 한 가지 의문이 들었습니다. 인공지능이 바둑을 이기는 시대인데 어째서 위성 추락 지점 하나 제대로 계산을 못하는 거지? 물론 시속 20,000KM일 정도로 빠르고 변화무쌍한 날씨 외에도 여러 가지 요인에 영향을 많이 받을 수 있으니 그럴 수도 있다고 칩시다, 그런데 추락 12시간 전까지도 여전히 정확한 추락 지점을 예측하지 못하고 다행히 우리나라에 떨어지진 않는다라는 짧은 답변만 내..
-
소프트웨어는 직관적이지 않다카테고리 없음 2018. 2. 11. 11:54
참으로 이상합니다. 다른 모든 이들이 불가능 할 것이라고 여겼던 사업영역을 과감하게 투자해서 세계적인 반도체, 스마트폰, TV를 만들어낸 국내 S기업이 유독 소프트웨어에서 만큼은 이전과 같은 빛을 보지 못하고 있습니다. 안드로이드와 ioS의 대항마로 야심차게 내놓은 Tizen은 2017년 인도 출시를 끝으로 역사의 뒤안길로 사라지고 있고 스마트폰에 전용 버튼까지 만들어가며 '음성 인식 비서'를 자처한 빅스비는 '불편하고 기대에 못미친다'는 사용자들의 원성을 받고 있습니다. 어깨를 나란히 한다는 기업들은 인공지능 시장에서 알파고와 알렉사를 만들고 있는데 S기업의 존재감은 미미합니다. 도대체 소프트웨어를 개발하는 것이 뭐길래 뭐든 '한다' 하면 정상 근처에 도달하던 기업이 유독 이 영역 만큼은 힘을 쓰지 못..
-
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은 하드웨어의 기능을 어떻게..
-
말하기와 듣기 - 개발자로서 갖춰야할 기본 덕목카테고리 없음 2017. 11. 18. 16:56
대학교 1학년 이었던 것 같습니다. 학창시절 리눅스는 커녕 윈도우 커맨드 창 한번 두들겨 본 적이 없을 정도로 개발에 무관심 했던 저는 오로지 취업 안정성 하나만을 바라보고 컴퓨터 공학부에 입학 했습니다. 전공 선택의 목적이 컴퓨터에 대한 흥미나 학문의 대한 열망 보단 먹고 사는 문제를 해결하는 것이었고 당시 신문과 뉴스에선 대기업 개발자들의 희망 퇴직, 사오정 같은 고용불안정에 대한 기사를 쏟아냈기 때문에 자연스럽게 저의 학부 시절의 목표는 '뛰어난 개발자가 되어 이 직업으로 오래오래 먹고 사는 것'이 됐습니다. 다소 엉뚱하고 현실적인 목표를 세우면서도 철학적인 질문이 들었습니다. 뛰어난 개발자'란 어떤 사람을 일컫는 것일까요? 참 속시원하게 답하기 힘든 질문인 것 같습니다. 도대체 어떤 기준으로 개발..
-
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 )을 넣어뒀다. 이런 장치들은 가상화 기술의 고질적인 성능 저하 문제를 해결 하기 위해 만들어졌는데 이..
-
QEMU와 KVM - 1개발/가상화 2017. 11. 1. 00:59
QEMU 'Quick Emulator' 풀네임 만으로는 와닿지 않지만 QEMU는 현재 PC에 설치된 운영체제와 다른 여러 개의 다른 운영체제를 구동 할 수 있는, 전가상화(Full Virtualization)를 지원하는 가상화 소프트웨어중 하나다. 전가상화 소프트웨어로는 VirtualBox나 VMware가 대중적으로 알려져있지만 가상화 기술 개발자들 사이에선 QEMU는 빼놓을 수 없는 가상화 소프트웨어중 하나다. 거의 가상화 기술 초창기를 주도 했던 소프트웨어이며 이때 만들어진 개념들도 상용화된 가상화 소프트웨어에서 사용되고 있다. 실제로 VirtualBox에선 상당부분을 QEMU 소스를 사용했다고 한다. QEMU는 다른 가상화 소프트웨어와는 다르게 오픈소스로 개발됐다(물론 VirtualBox도 오픈소스..