[Kernel] 슬랩 페이지(slab page)가 관리하는 슬랩 오브젝트 갯수
By Guillermo Austin Kim | 2018년 4월 25일 |
슬랩 페이지 디스크립터가 관리하는 슬랩 오브젝트의 실제 메모리 덤프를 어떻게 접근할까요? 예를 들어 현재 페이지 디스크립터 주소가 0xEC778540 이라고 가정하겠습니다.그리고 각 멤버는 다음과 같구요. 눈으로 잠깐 봐도 kmalloc-64 타입의 슬랩 페이지임을 알 수 있겠죠. (struct page *) (struct page*)0xEC778540 = 0xEC778540 -> ( (long unsigned int) flags = 0x80, (struct address_space *) mapping = 0x0, (void *) s_mem = 0x0, (long unsigned int) index = 0xC518EC00, (void *) freelist = 0xC518E
[라즈베리파이] 인터럽트 소개(0)
By Guillermo Austin Kim | 2018년 2월 19일 |
![[라즈베리파이] 인터럽트 소개(0)](https://img.zoomtrend.com/2018/02/19/a0386257_5a8acbd1128ee.png)
인터럽트란"인터럽트 걸지마!", "인터럽트가 계속 걸려와 일을 제때 못 끝냈어요." 평소에 이런 소리 들어봤나요? 이렇게 인터럽트는 일상생활에서 쓰는 단어 같습니다. 그럼, 사람들은 인터럽트를 뭐라고 생각하죠? 보통 갑자기 생긴 일이나 하던 일을 멈추는 상황을 말하죠. 책을 읽다가 전화가 와서 읽던 책을 덮어 놓고 전화를 받는 상황을 예로 들 수 있습니다. 그럼 임베디드 세상에서 인터럽트란 단어는 자주 쓰일까요? 정답은 “아주 자주 씁니다.”입니다. 프로젝트 개발 도중 리눅스 드라이버 개발자들이 “인터럽트가 저 동작에서는 제대로 뜨지 않아”, “인터럽트를 설정해도 핸들러 호출이 안 되네” 그리고 “인터럽트 신호를 오실로스코프 장비로 찍어 봐야겠네.”"라고 말하죠. 임베디드 시스템 관점으로 인터럽트는 뭘 의
리눅스 커널은 정말 오픈 소스 프로젝트일까(2)?
By Guillermo Austin Kim | 2018년 7월 30일 |
경험은 실력을 낳고 실력은 경험으로 이어진다. 임베디드 리눅스 개발 경험은 그 만큼 중요하다. 데이터 시트에 맞게 디바이스 드라이버 구현을 하는 작업은 코드 몽키도 할 수 있다. 초보와 고수 차이는 디바이스 드라이버를 여러 다양한 환경에서 구동할 때 생기는 문제를 해결하는 능력이다. 임베디드 리눅스 개발 도중 여러 문제를 만난다. 그럼 이 문제를 해결하기 위해서 여러 단계를 밟아야 한다. 문제는 이런 문제 해결 분석과 같은 실무 경험이 리눅스 커널 개발자끼리도 공유되고 있지 않다는 것이다. 이 이유가 뭔 지 조금 더 살펴보자. 첫 번째는 실력 있는 임베디드 리눅스 개발자들은 대부분 바쁘다. 문제 하나를 해결하면 다른 문제를 봐야 할 경우가 많다. 내 주위에 밤 낮으로 문제를 해결해야 하는 고수 개발자를
리눅스 민트 18.2 XFCE에서 도커(Docker) 설치
By 반달가면 | 2020년 4월 13일 |
리눅스 민트 18.2 XFCE에서 도커(Docker)를 설치했다. 우분투 기반의 배포판이므로 설치 과정은 우분투에서 도커를 설치하는 절차를 참고했다. 아래의 링크에 나온 내용으로 작업. Get Docker Engine - Community for Ubuntu 기존에 설치된 이전 버전의 도커를 먼저 제거하라고 되어 있는데, 설치된 것이 없으므로 설치로 바로 진행했다. 우선 필요한 다른 패키지들을 설치한다. # S/W 저장소 정보 갱신 sudo apt-get update # 필요한 패키지 설치 sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 이