Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

5112
737
82115


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

1 2

[리눅스커널] 스케줄링: 우선순위(nice)란

nice는 유저 공간에서 설정한 프로세스 실행 우선 순위를 뜻합니다. 정수형인 nice 범위는 -20~19인데 이 값은 커널 공간에서 100~139 사이 값으로 변환되어 관리합니다.이해를 돕기 위해 다음 그림을 함께 봅시다. 유저 공간에서 설정한 nice 값의 범위는 -20~19인데 커널 공간에서 100~139 사이 우선 순위로 변환됩니다. 커...

[Linux][Kernel] preempt_disable()/preempt_enable() 주의 사항

preempt_disable() 함수를 쓸 때 주의해야 할 점이 있습니다.preempt_disable() 함수는 preempt_enable() 함수와 반드시 Pair로 써야 합니다.preempt_disable() 함수를 호출한 다음 스케줄링 동작을 수행하는 함수를 쓰면 리눅스 시스템은 오동작합니다.예를 들어 다음과 같은 드라이버를 초기화하는 코드를 예를...

[라즈베리파이] 시스템 콜(시스템 호출)은 왜 필요하나?

시스템 콜은 유저 모드에서 커널 모드로 진입하는 동작입니다. 다른 관점으로 시스템 콜은 유저 공간과 커널 공간 사이 가상 계층이자 인터페이스라고 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다.1. 시스템 안정성과 보안을 지킬 수 있습니다. 유저모드에서 어플리케이션이 커널 공간에 아무런 제약없이 접근한다고 가정합시다. 실수로 어플리케이션이 커...

4.5 커널 스레드

4.5 커널 스레드이전절까지 유저 영역에서 실행한 프로세스가 어떻게 실행됐는지 점검했습니다.이번에는 커널 공간에서만 실행하는 커널 프로세스가 어떻게 생성하는지 알아봅시다.4.5.1 커널 스레드란커널 프로세스는 커널 공간에서만 실행하는 프로세스를 의미하며 대부분 커널 스레드 형태로 구동합니다. 커널 스레드는 리눅스 시스템 프로그래밍에서 데몬과 비슷한 일을...

[라즈베리파이] 프로세스 - 기본 유저레벨 프로세스 생성 실습 및 ftrace 로그 분석(2/2)

커널 공간에서 raspbian_proc 이란 프로세스가 어떤 코드 흐름으로 생성하고 종료했는지 ftrace 로그로 알아봅시다.분석할 전체 ftrace 로그는 다음과 같습니다.1 bash-895 [003] .... 909.253260: SyS_clone+0x14/0x38 <-ret_fast_syscall+0x0/0x282 bash-895 [003] ...

[리눅스커널] 프로세스 태스트 디스크립터 디버깅: 스레드와 스레드 그룹

T32로 프로세스 목록을 보면 다음과 같이 계층 구조를 볼 수 있다.magic___|___command_________|#thr|state_____|spaceid|pids_|C1A171B8|   swapper/0       | 420|current   | 0000  | 0....

[라즈베리파이] 워크큐(Workqueue) - worker_thread() 함수 분석(3)

Contents of tableworker_thread() 함수 분석(1)worker_thread() 함수 분석(2)worker_thread() 함수 분석(3) 이번에는 worker_thread() 함수에서 가장 중요한 37번 줄 코드를 분석할 차례입니다. 위 그림에서 워커 쓰레드의 “실행” 단계입니다. 코드를 봅시다.37 do {38...

[라즈베리파이] 프로세스 - 스케줄링(Preemption): 유저 공간 실행 중 인터럽트 발생

이번에는 인터럽트가 발생했을때 스케줄링(Preemption)하는 동작을 살펴봅니다.우리는 그 동안 schedule() 함수를 호출했을때만 스케줄링이 실행하는지 알고 있습니다. 그것은 맞는 말입니다.그런데, 인터럽트가 발생했을때 스케줄링이 실행된다는 사실은 잘 모릅니다.이 사실을 알면 많은 레이스 컨디션 발생 원인을 알 수 있습니다.이제부터 __irq_u...

[리눅스커널] 워크큐(Workqueue) - worker_thread() 함수 분석(1)

Contents of tableworker_thread() 함수 분석(1)worker_thread() 함수 분석(2)worker_thread() 함수 분석(3) 워크는 워커 쓰레드가 실행합니다. 워커 쓰레드를 관리하는 자료구조는 struct worker 구조체이며 이를 워커라고 부릅니다. 이전까지 자료구조 중심으로 워크를 분석했는데 이번에는 워...

[라즈베리파이] 워크큐(Workqueue)의 특징

다른 인터럽트 후반부 처리 기법과 비교하면서 알아봤으니 이제 워크큐의 특징에 대해서 알아봅니다.첫째, 드라이버 레벨에서 워크큐는 쓰기 쉽습니다. 워크큐는 struct work_struct 구조체 변수만 설정하고 워크를 실행할 코드에 queue_work() 나 schedule_work() 함수만 추가하면 됩니다. 간단한 코드로 워크큐를 쓸 수 있다는 것은...
1 2