[라즈베리파이] 동기화 - 커널 동기화 기법 소개
By Guillermo Austin Kim | 2018년 12월 20일 |
이전 시간에 Race가 발생하는 3가지 대표적인 상황을 확인했습니다. 이어서 이번에 커널 동기화 기법을 소개하고 그 특징을 알아봅니다. 이전에 소개했던 그림을 다시 보겠습니다. 임계 영역에 A와 B 프로세스가 접근하는 상황입니다. 두 커널 동기화 기법인 스핀락과 뮤텍스의 차이점을 비교하면서 동기화 기법에 대해 살펴보겠습니다. 스핀락과 뮤텍스의 가장 큰 차이점은 위 그림 [6] 번호 밑 박스에 표시돼 있습니다. 이미 락(Lock)을 다른 프로세스가 획득하고 있을 때 기다리는 방법입니다. 스핀락은 다른 일(스케줄링)을 안 하고 화장실 밖에서 계속 기다립니다. 이를 Busy-Wait라고 설명합니다. 뮤텍스는 자신을 대기열에 등록하고 자신을 UNINTERRUPTIBLE 상태로 바꾼 다음 휴면에
우분투 계열 리눅스에서 시냅틱 패키지 관리자의 패키지 다운로드 위치
By 반달가면 | 2018년 10월 9일 |
간혹 필요할 때가 있어 정리해 두기로. 리눅스 민트 등 우분투 계열 리눅스에서 시냅틱 패키지 관리자(Synaptic Package Manager)를 사용할 때, 선택한 패키지를 설치하지 않고 다운로드만 할 수도 있다. 설치 직전에 "download package files only" 항목을 체크하면 된다. 문제는 대체 이 패키지(.deb) 파일이 어디에 들어 있느냐는 것인데, /var/cache/apt/archives/ 디렉토리에 다운로드된다. 물론 "download package files only" 항목을 체크하지 않아도 이 위치로 다운로드된 후에 설치가 진행된다. 다운로드해 둔 패키지를 나중에 수동으로 설치하려면 아래와 같이 작업한다. # 패키지 다운로드 디렉토리 이동 cd /v
[리눅스] 커널 크래시: abort@test_and_set_bit
By Guillermo Austin Kim | 2019년 1월 9일 |
우선 콜스택부터 점검을 해보면, "kswapd0" 프로세스에서 slab cache를 scanning 하는 도중 커널 크래시가 발생하였음을 알 수 있습니다. 메모리가 부족한 상태로 보입니다. ("kswapd0" 프로세스는 page memory가 부족할 때 실행됩니다.)-000|do_DataAbort(addr = 3244789312, fsr = 3245415784, regs = 0xC1678E40)-001|__dabt_svc(asm) -->|exception-002|test_and_set_bit(asm) // <<**** kernel panic-003|bit_spin_lock(inline)-003|hlist_bl_lock(inline)-003|mb_cache_shrink_scan(?, ?)-0
리눅스/윈도우 듀얼부트 PC의 GRUB 부트 메뉴에서 윈도우 항목 제거/복구
By 반달가면 | 2020년 4월 6일 |
리눅스와 윈도우를 듀얼부트로 설치해서 사용중일 때 GRUB 부트 로더에서 윈도우 항목을 제거하는 방법이다. 듀얼부트로 사용하던 오래된 노트북에서 더 이상 윈도우를 쓸 일이 없어서 항목을 제거했다. 데비안/우분투 계열 배포판 기준이다. 루트(root) 권한으로 /etc/default/grub 파일을 편집한다. # /etc/default/grub 파일 편집 sudo vi /etc/default/grub 파일 내용 맨 아래에 아래의 내용을 추가해 주자. GRUB_DISABLE_OS_PROBER=true 저장한 후에 터미널창에서 아래와 같이 입력하여 grub 설정을 갱신한다. # grub 설정 갱신 sudo update-grub 이제 재기동하면 grub 부트 메뉴에서 윈도우