[라즈베리파이] 인터럽트 디버깅 - proc/interrupts #CS
By Guillermo Austin Kim | 2018년 5월 30일 |
새로운 리눅스 시스템을 접했을 때 인터럽트의 개수와 종류를 바로 파악하려면 proc 파일 시스템을 활용할 필요가 있습니다. 그럼 라즈베리안에서 인터럽트 종류와 개수를 바로 알려면 어떤 명령어를 입력해야 할까요? 우선 리눅스 커널 proc 파일 시스템이 알려주는 인터럽트 정보(/proc/interrupts)를 활용할 필요가 있습니다. 그럼 이 정보부터 같이 점검하기 위해 다음 명령어를 입력해볼까요?root@raspberrypi:/home/pi# cat /proc/interrupts 그럼 다음과 같은 정보를 볼 수 있습니다. CPU0 CPU1 CPU2 CPU3 16: 0 0 0 0 b
[라즈베리파이] 프로세스 - 주기적으로 스케줄링 설정 요청(타이머 인터럽트)
By Guillermo Austin Kim | 2018년 9월 15일 |
리눅스 커널 개발자들은 언제 레이스 컨디션이 발생할까 걱정을 많이 합니다.그래서 임계 영역을 어느 코드 구간으로 설정하지 고민합니다. 레이스 컨디션은 언제 어디서나 발생할 수 있지만, 이 걱정을 하기 전에 리눅스 커널에서 스케줄링은 언제 어떻게 수행하는지 점검할 필요가 있습니다. 이번에는 스케줄링을 언제 요청하는지 알아봅시다.1 > 타이머 인터럽트 발생하여 실행 중인 프로세스가 동작을 멈춤1 > 인터럽트 벡터(el1_irq, el0_irq)가 실행한 후 타이머 인터럽트 핸들러가 실행1 > 타이머 인터럽트 핸들러가 실행한 후 schedule_tick() 함수를 실행 local_irq_disable() 함수를 호출하지 않은 이상 인터럽트는 언제든 발생해서 실행 중인 코드를 멈출 수 있습니다
[Linux][GCC]## 매크로 - 심볼 생성
By Guillermo Austin Kim | 2018년 5월 3일 |
리눅스 커널 코드를 읽다 보면 C 코드에는 존재하지 않는 함수를 호출하는 경우가 있습니다. 희한하게도 해당 함수를 아무리 검색해도 찾을 수 없는데 다른 함수에서 아무 문제 없이 호출합니다. 자 그럼 한 가지 예를 들게요. 아래 코드를 보면 end_page_writeback 함수에서 PageReclaim와 ClearPageReclaim 함수를 호출합니다. 이 함수는 페이지 write back 동작을 멈추는 역할을 하는 것으로 보이네요.[mm/filemap.c]void end_page_writeback(struct page *page){ if (PageReclaim(page)) { ClearPageReclaim(page); rotate_reclaimable_page(page); } PageReclaim
이거 어때요? 키보드 일체형 PC, 라즈베리 파이 400
By 자그니 블로그 : 거리로 나가자, 키스를 하자 | 2020년 11월 4일 |
제 또래가 쓰던 첫 컴퓨터는, 대부분 본체에 키보드가 내장된 일체형 8비트 컴퓨터였습니다. 애플2나 MSX2 가 그랬죠. 가끔 SPC-1000?인가 하는 컴퓨터를 쓰는 친구도 있었습니다만- 그때는 IBM 호환 PC처럼, 키보드와 본체가 분리된 컴퓨터를 선망했습니다. 그게 고오급- 컴퓨터였으니까요. 나이가 드니 복잡한 게 싫어지고, 옛날 간단한 컴퓨터가 그리울 때가 있습니다. 전원 넣고, SW 돌리던 그런 컴퓨터 말입니다. 그런 마음을 라즈베리 파이 재단에서 알았을 리는 절대 없지만, 그리움을 자극하는 컴퓨터가 하나 나왔습니다. 라즈베리 파이 400(Raspberry Pi 400), 키보드에 라즈베리 파이 4를 넣어서 일체화 시킨 제품입니다. 다시 말하자면, 키보드 케이스(...)를 장착한