태그 : Linux 요약보기전체보기목록닫기
- [Linux][Kernel] Check process in Linux system (0)2019.01.10
- 한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(3) - 제조업 마인드 !(0)2018.12.27
- [Linux][Kernel] What is process?(0)2018.12.26
- [라즈베리파이] 동기화 - 스핀락(spinlock): 첫 번째 스핀락 해제 시 동작(1) (0)2018.12.26
- [라즈베리파이] 동기화 - 스핀락(spinlock): 스핀락 획득 두 번째 시도(0)2018.12.26
- [라즈베리파이] 동기화 - 스핀락(spinlock): 스핀락 획득 첫 번째 시도 (0)2018.12.25
- [라즈베리파이] 동기화 - 스핀락(spinlock): 스핀락 중복 획득 시 동작(0)2018.12.25
- [라즈베리파이] 동기화 - 스핀락(spinlock): spin_lock() 어셈블리 코드 분석(0)2018.12.25
- [라즈베리파이] 동기화 - 스핀락(spinlock) 소개 (0)2018.12.21
- [라즈베리파이] 동기화 - 인터럽트 발생으로 레이스 컨디션 발생 (0)2018.12.17
- Linux-Kernel Analysis
- 2019/01/10 06:24
In order to be able to survive as competitive Linux system developers(DevOps for device drivers) for a long time, you need to know the Linux kernel better. However, the Linux kernel is huge, and its...
- 임베디드 에세이
- 2018/12/27 12:33
From한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(1) - SW문화한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(2: 쓰레기 관리자들)한국 소프트웨어 업체에서 리눅스 고수가 나올 수 없는 또 다른 이유는 소프트웨어 업체를 제조업 마인드로 운영하기 때문이다.제조업 마인드라. 이 용어에 대해서 조금 더 이야기를 해 보자.제조업 마인...
- Linux-Kernel Analysis
- 2018/12/26 18:33
It is difficult to understand process in Linux Kernel. Because processes are abstract concepts, it can be viewed from different perspectives. It seems that you have read and understood the process, ...
스핀락을 해제할 때는 spin_unlock() 함수를 호출하는데 스핀락 인스턴스의 owner를 +1만큼 증감한다고 알고 있습니다.static inline void arch_spin_unlock(arch_spinlock_t *lock){ smp_mb(); lock->tickets.owner++; dsb_sev();}spin_unlock() 함수를 호...
- 9. 커널 동기화(spinlock/mutex)
- 2018/12/26 14:27
스핀락 획득 두 번째 시도이전 시간에 스핀락을 누군가 획득했는데 다른 프로세스가 다시 스핀락을 획득할 때 동작을 알아봤습니다. 이번에는 다른 프로세스가 같은 스핀락 획득을 시도하는 상황을 그리면서 분석하겠습니다. 다시 분석할 _raw_spin_lock() 함수 코드를 같이 봅시다.1 80704b60 <_raw_spin_lock&...
- 9. 커널 동기화(spinlock/mutex)
- 2018/12/25 20:41
스핀락을 소개했을 때 그림을 다시 소개합니다. 위 그림이 실행할 때 실제 어셈블리 코드를 어떻게 동작하는지 알아보려는 겁니다.다음 소절에 분석하려는 스핀락 인스턴스 owner는 0x1이고 next는 0x2입니다. 이미 스핀락을 획득한 다른 프로세스가 임계 영역을 실행 중이기 때문입니다.이번에는 누군가 스핀락을 획득한 경우 스핀락이 어떻게 동작하...
- 9. 커널 동기화(spinlock/mutex)
- 2018/12/25 20:38
이전 시간까지 스핀락을 획득하고 해제하는 기본 동작만을 확인했습니다. 실전 개발에서는 스핀락을 다른 프로세스가 접근하는 동작에서 예상치 못한 문제를 볼 수 있습니다.ftrace 로그로 커널을 디버깅하면 스핀락을 바로 획득할 때 보다 스핀락을 얻지 못해 기다리는 빈도가 훨씬 높습니다. 스핀락을 제대로 이해하려면 스핀락을 누군가 획득한 다음 다른 프로세스가...
이전 시간에 인라인 어셈블리 코드를 살펴봤는데, 이번에는 어셈블리 코드를 분석하겠습니다. 실제 ARM 프로세서 입장에서 스핀락을 어떻게 실행하는지 정확히 파악하려면 어셈블리 코드를 봐야 합니다. 어셈블리 코드를 분석해야 스핀락 핵심 개념을 알 수 있다는 겁니다. 이전 절에 다룬 내용을 이해했으면 그리 어렵지 않습니다.분석하려는 코드는 다음과 같습니다.1...
- 9. 커널 동기화(spinlock/mutex)
- 2018/12/21 16:46
리눅스 커널에서 가장 많이 쓰는 동기화 기법 중 하나가 스핀락입니다. 먼저 스핀락의 특징을 알아봅시다. 1. 뮤텍스락 비해 구현 복잡도가 낮습니다.2. spin_lock_irq(), spin_lock_irq_save() 등등 추가 기능이 포함된 함수를 제공합니다.3. 스핀락 구현부는 아키텍처에 의존적입니다. ARM, ARM64 그리고...
- 9. 커널 동기화(spinlock/mutex)
- 2018/12/17 07:03
이번에는 인터럽트 발생으로 Race가 발생하는 경우를 알아보겠습니다. 그동안 어떤 함수도 인터럽트가 발생하면 실행을 멈추고 인터럽트 벡터로 프로그램 카운터를 이동하고 인터럽트 핸들러와 서브 루틴을 실행합니다.그런데 인터럽트 발생하기 전에 실행을 멈춘 함수가 인터럽트가 발생해서 다시 실행할 수 있습니다. 이를 확인하기 위해 다음 패치 코드를 입력...
최근 덧글