Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

76261
1501
219118


태그 : 커널 요약보기전체보기목록닫기

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

[리눅스커널] 동기화: 스핀락과 뮤텍스 기법 차이점 알아보기

이번에는 스핀락과 뮤텍스의 자료구조와 함께 두 기법의 차이점을 살펴보겠습니다. 스핀락과 뮤텍스의 구현 방식의 차이점은 다음과 같습니다. 스핀락은 코드가 간결합니다. 다른 프로세스가 스핀락을 누군가 획득하고 있으면 밖에서 계속 기다리는 동작입니다. 뮤텍스는 스핀락에 비해 코드 복잡도가 높습니다. 다른 프로세스가 뮤텍스를 획득하면 휴면에 들어가고 깨어나는...

[리눅스커널] 동기화: 뮤텍스의 기본 개념 소개하기

뮤텍스 소개스핀락과 더불어 커널에서 가장 많이 쓰이는 락(Locking) 기법은 뮤텍스입니다. 뮤텍스는 휴면을 지원하며 프로세스 컨택스트에서 주로 쓰는 락(Locking) 기법입니다. 먼저 뮤텍스의 기본 개념과 동작 원리를 설명합니다. 이후 스핀락과 차이점을 알아보면서 뮤텍스의 특징을 살펴보고 뮤텍스 관련 커널 함수를 분석합니다. 뮤텍스(mut...

[리눅스커널] 스핀락(spinlock) 플러그인 함수: spin_lock_irqsave()/spin_unlock_irqrestore

리눅스 커널에서 spin_lock_irq() 함수 뿐만 아니라 spin_lock_irqsave() 함수로 임계 영역을 보호하는 기능을 지원합니다. 이번 소절에서는 spin_lock() 함수 기능을 확장한 스핀락 플러그인 함수를 소개합니다. spin_lock_irqsave() spin_unlock_irqrestore()먼저 spin_lock_...

[리눅스커널] 동기화: 스핀락(spinlock) 처리 흐름도 알아보기

스핀락을 분석할 때 스핀락을 획득한 후 임계 영역을 실행할 때 바뀌는 자료구조를 함께 파악하는 것이 중요합니다. 이번에 스핀락을 관리하는 spinlock_t 구조체를 다시 보면서 스핀락 자료 구조를 설명을 드리겠습니다.(spinlock_t *) (spinlock_t*)0xb7e0eb00   (struct raw_spinlock...

[리눅스커널] 동기화: 스핀락(spinlock)을 쓰는 예제 코드 살펴보기

스핀락을 표현하는 구조체를 확인했으니 스핀락을 어떤 방식으로 획득하고 해제하는지 살펴보겠습니다. 예제 코드를 보기 전에 spin_lock() 함수와 spin_unlock() 함수의 선언부를 소개합니다.이번에는 스핀락을 획득할 때 쓰는 spin_lock()와 함수의 선언부를 보겠습니다.static __always_inline void spin_lock(s...

[리눅스커널] 동기화: 스핀락 자료구조 알아보기

스핀락 구조체나 자료구조는 다음과 같은 관점으로 분석하면 이해가 빠릅니다.     스핀락을 획득하거나 해제할 때 어떤 필드가 바뀔까?   스핀락을 획득했다고 어떻게 판단할까?이 점을 염두하고 스핀락을 표현하는 자료구조를 분석하겠습니다. 다음은 스핀락을 표현하는 자료구조인 spinlock_t 구조체 선언부입니...

[리눅스커널] 시스템 콜: GNU C 라이브러리 실행 흐름

유저 공간에서 시스템 콜을 실행하려면 리눅스 저수준 표준 함수를 호출해야 합니다.저수준 표준 함수는 glibc 라이브러리에 구현돼 있습니다. 그래서 실제 시스템 콜을 발생하는 코드를 확인하기 어렵습니다. glibc 라이브러리 파일은 어디있을까요? 리눅스 배포판마다 다르지만 라즈베리파이에서는 glibc는 라즈베리파이에서 다음 경로에 있는 libc...

[리눅스커널] 시스템 콜: 시스템 콜의 특징 알아보기

이번 소절에서는 시스템 콜의 특징을 알아보겠습니다.앞서 알아봤듯이 시스템 콜은 유저 모드에서 커널 모드로 진입하는 관문입니다. 소프트웨어 구조 관점으로 보면 시스템 콜은 유저 공간과 커널 공간 사이 가상 계층으로 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다.1. 시스템 콜 계층으로 시스템 안정성과 보안을 지킬 수 있습니다. 유저모드에서 어...

[리눅스커널] 메모리 관리: kmalloc 캐시 슬럽 오브젝트 할당 커널 함수 분석하기

우리는 'kmalloc() 함수를 호출하면 동적 메모리를 할당할 수 있다.'란 사실을 알고 있습니다. 하지만 kmalloc() 함수에서 호출하는 커널 내부 함수는 거의 분석하지는 않는 듯 합니다.이번 시간에는 kmalloc() 함수와 이 함수에서 호출하는 다음 함수를 분석합니다. kmalloc_index() kmem_cache_alloc_trace(...
1 2 3 4 5 6 7 8 9 10 다음