[리눅스커널] 스핀락(spinlock) 플러그인 함수: spin_lock_irqsave()/spin_unlock_irqrestore
By Guillermo Austin Kim | 2019년 9월 12일 |
리눅스 커널에서 spin_lock_irq() 함수 뿐만 아니라 spin_lock_irqsave() 함수로 임계 영역을 보호하는 기능을 지원합니다. 이번 소절에서는 spin_lock() 함수 기능을 확장한 스핀락 플러그인 함수를 소개합니다. spin_lock_irqsave() spin_unlock_irqrestore() 먼저 spin_lock_irqsave()/spin_unlock_restore() 함수를 리눅스 커널에서 지원하는 이유를 알아보고 세부 코드를 분석하겠습니다. spin_lock_irq() 함수를 써서 임계 영역 코드 구간을 보호하다 보니 다음과 같이 불편한 점이 생겼습니다. spin_lock_irq() 함수를 호출한 후 인터럽트를 비활성화하다 보니 현재 인터럽트를 상태(활성화/
[라즈베리파이] 인터럽트 백터 - 스택 푸쉬
By Guillermo Austin Kim | 2018년 2월 19일 |
인터럽트가 발생했을 때 구동중인 프로세스의 레지스터가 스택 메모리 공간에 푸쉬된다고 설명했는데요. 실제 Trace32 프로그램으로 스택 메모리 덤프를 확인해 보겠습니다. 아래 콜스택은 리눅스 커널에서자주 볼 수 함수로 구성되어 있는데 ext4 파일 시스템에서 특정 파일을 동기화(Synch)하는 동작 중에 인터럽트가 발생했습니다..-000|account_group_exec_runtime(inline)-000|update_curr()-001|check_spread(inline)-001|put_prev_entity()-002|put_prev_task_fair()-003|pick_next_task_rt(inline)-003|pick_next_task_rt()-004|pick_next_task(inline)-004|
[ARM] ARM 프로세서 학습 방법의 문제점
By Guillermo Austin Kim | 2019년 12월 23일 |
이제부터 ARM 프로세서에 대한 이야기를 조금 더 해보려고 합니다.제 개발 인생을 돌이켜 보니 대부분의 시간을 사실 ARM 프로세서와 함께 보냈더군요. 다음과 같은 조합으로 말이죠. * 'ARM + RTOS, ARM + 리눅스' ARM 프로세서를 처음 접할 때의 느낌 그런데 제가 ARM 프로세서를 처음 접할 때의 느낌을 잊을 수가 없습니다. 그 느낌이 어땠나면; * 목욕탕에서 가장 뜨거운 온탕에 점프해 들어갔을 때 음, 잘 공감이 가시나요? 대중 목욕탕에 안 가신다고요? 그럼 다음의 예는 어떤가요? * 그럼 충치가 있어서 치과를 가서 진료실에서 기다릴 때 아직도 공감이 안된다고요? 난 한번도 치과에 가본 적이 없다고요? 그렇다면 어쩔 수 없죠. 더 이상의 예를 들기는 어렵겠군요.
리눅스에서 도커(Docker) 이미지 추가 및 실행
By 반달가면 | 2020년 4월 17일 |
우분투 계열 배포판(리눅스 민트)에서의 도커 설치는 이전 게시물을 참고하자. 여기로 도커 이미지들은 도커 허브(Docker Hub) 웹사이트에서 찾을 수 있다. Docker Hub 추가하고 싶은 이미지의 이름을 찾은 후, docker pull 명령으로 추가하고 docker run 명령으로 실행할 수 있다. # 도커 이미지 hello-world 추가(다운로드) sudo docker pull hello-world # hello-world 이미지 실행 sudo docker run hello-world 추가된 이미지 목록은 아래와 같이 docker images 명령으로 확인 가능하다. # 도커 이미지 목록 확인 sudo docker images -it 옵션을 사용