[라즈베리파이] Process - 대기큐(Wait queue)- (1)
By Guillermo Austin Kim | 2018년 9월 14일 |
대기 큐(wait queue) 소개대기 큐는 커널에서 여러 용도로 사용합니다. 특히 인터럽트 핸들링과 프로세스 동기화, 타이밍으로 씁니다. 프로세스는 디스크 연산이 끝나기를 기다리거나, 시스템 리소스가 해제되기를 기다리며 시간이 얼마간 흐르길 기다려야 할 때가 있습니다 대기 큐는 여러 이벤트에 대한 조건부로 대기를 구현하고 표현합니다. 특정 이벤트를 기다리는 프로세스는 적절한 대기 큐에 자기 자신을 넣고 CPU 제어를 포기합니다. 그러므로 대기 큐는 잠자고 있는 프로세스들이 모여있는 장소라고 볼 수 있습니다. 이 프로세스들은 특정 조건이 true가 되면 커널이 깨워줍니다. 대기 큐는 이중 링크드 리스트로 구현되어 있으며, 이 리스트의 각 개체에는 프로세스 디스크립터를 가리키는 포인터가 들어있습니다. 대
mcomix - 리눅스용 만화 뷰어
By 반달가면 | 2020년 4월 8일 |
mcomix는 리눅스용 만화 뷰어 프로그램이다. cbz, cbr 등 압축 파일로 된 만화를 볼 수 있고 jpg 파일 등 일반적인 이미지도 볼 수 있다. 설치는 터미널창에서 아래와 같이 작업하면 되겠다. 데비안/우분투 계열 배포판 기준이다. # S/W 저장소 정보 갱신 sudo apt-get update # mcomix 설치 sudo apt-get install mcomix zip 형식으로 압축된 cbz 파일의 경우 통상 이미 기본으로 unzip 패키지가 설치되어 있으므로 신경쓸 필요가 없겠으나, rar 형식으로 압축된 cbr 파일을 보려면 rar 압축을 해제할 수 있도록 unrar 패키지를 추가로 설치해 주어야 한다. # cbr(rar 압축) 파일 지원을 위하여 unrar 설치
[Linux][Kernel] preempt_disable()/preempt_enable() 주의 사항
By Guillermo Austin Kim | 2019년 1월 2일 |
preempt_disable() 함수를 쓸 때 주의해야 할 점이 있습니다.preempt_disable() 함수는 preempt_enable() 함수와 반드시 Pair로 써야 합니다. preempt_disable() 함수를 호출한 다음 스케줄링 동작을 수행하는 함수를 쓰면 리눅스 시스템은 오동작합니다. 예를 들어 다음과 같은 드라이버를 초기화하는 코드를 예를 들겠습니다.1 void configure_something_driver(void) 2 {3 preempt_disable();4 5 do_something();6 mdelay(100);7 do_something();8 9 preempt_enable();10 } 5~7 번 코드가 실행할 때 Preemption이 되면 안된다고 판단했습니다.그래서 3 번
[Linux][Kernel] WARN 매크로
By Guillermo Austin Kim | 2018년 5월 9일 |
WARN 매크로는 코드 흐름에 소프트웨어적인 오류가 있을 때 실행합니다. 그래서 소스 코드를 보다가 WARN() 매크로를 보면 뭔가 논리적인 오류가 있는 조건이라고 봐야겠죠. WARN 매크로를 어떤 함수에서 실행되면 시스템 정보를 커널 로그로 출력합니다.1. 콜스택2. 현재 수행 중인 프로세스 정보: CPU번호, 프로세스 이름, pid3. 함수 이름과 라인 정보 하지만 커널 시스템에 심각한 오류가 있는 상태가 아니라 판단해서 에러 메시지만 출력하고 시스템을 계속 구동시킵니다. 그럼 새로운 드라이버 코드를 짰는데 WARN 매크로가 실행되면 어떻게 해야 할까요? 시스템에 치명적인 에러는 아니라 그냥 둬야 할까요? 그렇지 않습니다. WARN 매크로는 시스템에 뭔가 논리적인 오류가 있는 상태이므로 반드시 잡아