Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

15192
888
89788


태그 : 리눅스 요약보기전체보기목록닫기

1 2 3 4 5 6 7 8 9 10 다음

[리눅스커널] 커널 소스 읽기가 제일 쉬었어요(1) - /proc/cpuinfo

[리눅스커널] 워크큐: 워크큐 주요 개념 알아보기

이번 소절에서는 워크큐를 이루는 주요 개념을 소개합니다. -   워크 -   워커스레드 -   워커풀 -   풀워크큐먼저 워크큐의 기본 실행 단위인 워크를 배워볼까요?워크란워크는 워크큐를 실행하는 단위입니다. 워크는 누가 실행할까요? 워크는 실행하...

[리눅스] 유닉스와 리눅스역사 알아보기(Linux History)

이번 절에서는 먼저 리눅스의 역사에 대해 소개합니다. 이어서 리눅스가 우리 생활을 이루는 운영체제 중 하나로 발전하는 과정을 살펴보겠습니다.리눅스의 역사를 알기 위해서는 유닉스가 탄생했는지 알 필요가 있습니다. 리눅스의 모태는 유닉스이기 때문입니다.1.2.1 유닉스가 태어난 과정컴퓨터가 발명된 후 한 동안 한 가지 프로그램만 실행했었습니다. 지금은 상상...

[리눅스커널][시그널] T32: 시그널 생성 과정 디버깅해보기

이전 포스팅에서 커널이 '시그널'을 어떤 방식으로 처리하는지 살펴봤습니다.이전에 배웠던 내용을 리뷰하는 차원으로 '시그널' 처리 과정을 정리해볼까요?1. 시그널 생성   시그널을 받은 프로세스의 태스크 디스크립터에 시그널 정보를 써주고 해당 프로세스를 깨운다. 2. 시그널 전달    시그널을 받을 프...

[리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock_irq()

리눅스 커널 코드를 조금만 분석하면 spin_lock() 함수뿐만 아니라 spin_lock_irq() 함수를 써서 임계 영역을 보호하는 동작을 많이 볼 수 있습니다. 이번 소절에서는 spin_lock() 함수 기능을 확장한 스핀락 플러그인 함수를 소개합니다. - spin_lock_irq()/spin_unlock_irq()먼저 spin_...

[리눅스커널] 메모리 관리: 가상 메모리 기법의 주요 개념 소개

가상 메모리의 주요 개념 소개가상 메모리의 주요 개념을 다음 그림을 보면서 배워 보겠습니다. [그림 1] 가상주소와 물리주소 및 페이지와의 관계위 그림과 함께 가상 주소를 물리 주소로 변환하는 실행 흐름을 배워봅시다.    가장 왼쪽에 보이는 주소 맵이 가상 메모리입니다. 가장 윗 부분에 0x0000_0000 주소가 ...

[라즈베리파이] 라즈비안(Raspbian) 리눅스 커널(LinuxKernel) 빌드하기

이번 절에서는 라즈베리파이에서 라즈비안 리눅스 커널 소스 코드를 내려받고 빌드하는 방법을 알아보겠습니다. 필자는 라즈베리파이를 쓸 때 다음 명령어로 root로 변경해 커널 빌드를 합니다.$ sudo su명령어 입력 과정에서 불필요한 권한 설정을 피하기 위해서입니다.라즈비안 커널 소스 코드 내려받기리눅스 커널 소스 코드를 다운로드 받는 방법을 소...

[리눅스커널] 비트 마스크를 어셈블리 코드로 빨리 읽는 방법 - HARDIRQ_MASK, SOFTIRQ_MASK, NMI_MASK

이번에는 비트 마스크를 C 코드가 아닌 어셈블리 코드로 읽는 방법을 소개합니다.in_interrupt() 함수 소개in_interrupt() 함수는 현재 프로세스가 인터럽트 컨택스트인지 알려주는 기능입니다.[https://elixir.bootlin.com/linux/v4.19.30/source/include/linux/preempt.h]#define i...

[리눅스커널][가상파일시스템] 수퍼블록: 슈퍼블록 정보를 statfs 시스템 콜로 읽는 과정 살펴보기

슈퍼블록 각 멤버들은 파일시스템에 대한 메타 정보를 저장합니다.유저 공간에서 파일시스템 정보를 알려면 어떤 함수를 호출해야 할까요?유저 공간에서 statfs() 함수를 호출하면 커널 공간에서 해당 시스템 콜 핸들러 함수인 sys_statfs() 함수를 실행합니다.예제 코드는 다음과 같습니다.1 #define FILENAME_NAME "/home/pi"2...

[리눅스커널][태스크릿] 태스크릿(struct tasklet_struct)은 어떻게 등록할까?

먼저 태스크릿을 등록하는 2가지 방법을 소개합니다.1. 태스크릿 전역 변수 선언  : DECLARE_TASKLET() 혹은 DECLARE_TASKLET_DISABLED() 함수 호출2. 태스크릿 초기화 함수 호출  : tasklet_init() 함수 DECLARE_TASKLET() 혹은 DECLARE_TASKLET_DISABL...
1 2 3 4 5 6 7 8 9 10 다음