[라즈베리파이] 프로세스 - 커널 스레드(Kernel Thread) 소개
By Guillermo Austin Kim | 2018년 10월 29일 |
커널 스레드란커널 프로세스는 커널 공간에서만 실행하는 프로세스를 의미하며 대부분 커널 스레드 형태로 구동합니다. 커널 스레드는 리눅스 시스템 프로그래밍에서 데몬과 비슷한 일을 합니다. 데몬과 커널 스레드는 백그라운드 작업으로 실행하면서 시스템 메모리나 전원을 제어하는 역할을 수행합니다. 커널 스레드는 커널 내부에서 백그라운드로 구동하면서 커널 시스템에 도움을 주는 역할을 수행합니다. 데몬과 비교해서 커널 스레드는 커널 모드에서만 실행하고 시스템 콜과 인터페이싱 하지 않고 동작한다는 점입니다. 커널 스레드는 리눅스 커널 개발자나 드라이버 개발자가 구현하는 경우가 많습니다. 커널 스레드는 다음과 같이 3가지 특징이 있습니다.1. 커널 스레드는 커널 공간에서만 실행하며 유저 공간과 상호작용을 하지 않습니다.
[Linux Desktop] Elementary OS를 ESXi 6.5에 설치해 보기
By 지훈현서 | 2018년 12월 1일 |
바로 전 블로그에서 리눅스 데스크탑에 대해 생각을 해보았습니다. 이번에는 그 중에 하나인 Elementary OS 를 ESXi 6.5 에 설치를 해 보았습니다. 설치를 마치고 VMTools까지 잘 마무리 한 다음 모습입니다. 요즘 개인용 ESXi 서버에 가상 Mac 을 제외하고는 모든 다른 리눅스나 윈도우를 설치하면서 작업을 가속화 하고 있습니다.(궁극적인 목적은 1-box DevOps 환경을 갖추는 것입니다. 언제고 해당 주제로 할 날이 오겠지요) 그 일환으로 Elementary OS를 설치해 봅니다. 위의 홈페이지에 들어갔습니다. $1 주고 사려다가 $10 주고 구입했습니다. 나중에 돌려보니 충분히 가볍더군요. 2개의 CPU에 2G 메모리 20GB 하드 용량으로 설정하고 다운받은 iso 로 부
[프로세스] 실행 중인 cpu 정보 업데이트(커널 4.9.65 )
By Guillermo Austin Kim | 2018년 2월 23일 |
ARM64 비트 리눅스 커널 4.9.65 버전에서 아래 구조체가 변경됐습니다.특히 해당 프로세스가 돌고 있던 CPU 정보를 담고 있는 int cpu 멤버가 사라졌는데요.crash64> struct thread_infostruct thread_info { unsigned long flags; mm_segment_t addr_limit; int preempt_count;} 기존 Linux version 4.6.0 버전crash64> p linux_bannerlinux_banner = $1 = "Linux version 4.6.0 (sudhakar.koppiset@ubuntu) (gcc version 5.2.1 20151005 (Linaro GCC 5.2-2015.11-2) ) #1
[라즈베리파이] 시스템 콜 - ARM 프로세서 관점 시스템 콜 처리
By Guillermo Austin Kim | 2018년 11월 6일 |
리눅스 시스템에서 시스템 콜을 어떻게 구현했는지 코드를 따라가면 어셈블리 코드를 만나게 됩니다.보통 어셈블리 코드는 ARM 프로세서 입장에서 실행하는 동작을 구현하는 경우가 많습니다. 어셈블리 코드로 구현되어 있다는 것은 시스템 콜이 아키텍처(ARM, x86) 동작과 연관이 있다는 의미입니다. 라즈베리파이는 ARM 아키텍처에서 구동하므로 ARM(Aarch32, ARM 32비트) 프로세서 기준으로 시스템콜이 어떻게 동작하는지 알아봅시다. ARM 프로세서 입장에서 시스템콜 동작을 더 자세히 알아보려면 ARM 프로세스 모드에 대해 살펴볼 필요가 있습니다. ARM 프로세서는 Supervisor, FIQ, IRQ, ABORT, UNDEF, USER, 6가지 모드를 지원하며 각 모드 별 레지스터 세트를 저장하고 있습