Guillermo Austin Kim

Sources

Posts

998 posts

[라즈베리파이] 동기화 - 스핀락(spinlock): 두 번째 스핀락 해제 시 동작(2)

Guillermo Austin Kim|2018년 12월 30일

스핀락을 해제할 때 spin_unlock() 함수를 호출하며 이 때 스핀락 인스턴스 owner 값을 +1만큼 증감한다고 배웠습니다. 이제 [2] 번 프로세스가 임계 영역 실행을 마치고 스핀락을 해제했습니다. spin_unlock() 함수를 실행하니 스핀락 인스턴스 중 owner를 +1만큼 증감해서 0x3이 됐습니다. [3]번 프로세스는 스핀락 인스턴스를 계속 읽으면서 스핀락 인스턴스 owner 값이 0x3이 되기를 기다리고 있었습니다. 그런데 스핀락 인스턴스 owner 값이 0x3이니 스핀락을 획득하고 무한 루프를 빠져나갑니다. 스핀락 기본 동작과 함께 누군가 스핀락을 획득했을 때 스핀락 동작에 대해서 알아봤습니다. 코드 분석으로 다음과 같은 중요 포인트를 알 수 있습니다.1.스핀락은 코드 구현도가

한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(3: 제조업 마인드)

Guillermo Austin Kim|2018년 12월 27일

From한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(1) - SW문화한국 개발업체에서 절대 리눅스 전문가가 될 수 없는 이유(2: 쓰레기 관리자들) 한국 소프트웨어 업체에서 리눅스 고수가 나올 수 없는 또 다른 이유는 소프트웨어 업체를 제조업 마인드로 운영하기 때문이다. 제조업 마인드라. 이 용어에 대해서 조금 더 이야기를 해 보자.제조업 마인드는 원가 절감, 불량 감소를 통해 제품을 효율적으로 생산하는 체제를 의미한다. 이런 단어를 어디서 많이 쓸까? 공장이다. 공장에 가면 원가 절감 제로, 불량 감소란 캐치 프레이즈를 많이 볼 수 있다. 다른 관점으로 제조업 마인드에 대해 생각해보자.바로 생각나는 것은 시간을 많이 투입하면 그 만큼 더 많은 생산을 한다고 일을 바라 보는 관점이다.공장에

[Linux][Kernel] What is process?

Guillermo Austin Kim|2018년 12월 26일

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, but it is often difficult to apply what you have learned in practice to the process. Why? This is because we study the process in a way that understands theory. This process does not seem to be the goa

[라즈베리파이] 동기화 - 스핀락(spinlock): 첫 번째 스핀락 해제 시 동작(1)

Guillermo Austin Kim|2018년 12월 26일

스핀락을 해제할 때는 spin_unlock() 함수를 호출하는데 스핀락 인스턴스의 owner를 +1만큼 증감한다고 알고 있습니다.static inline void arch_spin_unlock(arch_spinlock_t *lock){smp_mb();lock->tickets.owner++;dsb_sev();}spin_unlock() 함수를 호출하면 여러 인라인 형태 함수로 연결되는데 실제 동작은 arch_spin_unlock() 함수가 수행합니다. [1] 번 프로세스가 스핀락을 해제할 때 스핀락 인스턴스인 owner를 +1증감합니다. [2] 프로세스는 Busy-waiting 동작으로 스핀락 인스턴스의 owner가 0x2가 될 때까지 무한루프를 돌고 있는 상태였습니다. 그런데 [2]번 프

[라즈베리파이] 동기화 - 스핀락(spinlock): 스핀락 획득 두 번째 시도

Guillermo Austin Kim|2018년 12월 26일

스핀락 획득 두 번째 시도이전 시간에 스핀락을 누군가 획득했는데 다른 프로세스가 다시 스핀락을 획득할 때 동작을 알아봤습니다. 이번에는 다른 프로세스가 같은 스핀락 획득을 시도하는 상황을 그리면서 분석하겠습니다. 다시 분석할 _raw_spin_lock() 함수 코드를 같이 봅시다.1 80704b60 :2 80704b60:e1a0c00d movip, sp3 80704b64:e92dd800 push{fp, ip, lr, pc}4 80704b68:e24cb004 subfp, ip, #45 80704b6c:e52de004 push{lr}; (str lr, [sp, #-4]!)6 80704b70:ebe82672 bl8010e540 &