태그 : kernel 요약보기전체보기목록닫기
- [라즈베리파이] 시그널 - 시그널을 받으면 프로세스 어떻게 반응할까?(0)2019.08.25
- [리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock_irq()(0)2019.08.22
- [리눅스커널] 메모리 관리: 가상 메모리 기법의 주요 개념 소개(2)2019.06.01
- [리눅스커널][가상파일시스템] 수퍼블록: 슈퍼블록 정보를 statfs 시스템 콜로 읽는 과정 살펴보기 (0)2019.05.08
- [리눅스커널] Soft IRQ 서비스 실행: __do_softirq() 함수 분석(5)2019.04.13
- [리눅스커널] Soft IRQ 서비스 실행 진입점은 어디일까?(2)2019.04.13
- [리눅스커널] Soft IRQ 소개(6)2019.04.13
- [리눅스커널][인터럽트후반부] ftrace로 IRQ 스레드 핸들러 실행 시각 측정하기(0)2019.04.12
- [리눅스커널] 인터럽트 후반부 처리: IRQ 스레드를 깨우는 코드 분석(0)2019.04.12
- [리눅스커널] 라즈베리 파이에서 IRQ 스레드 생성 과정 디버깅하기(0)2019.04.12
- 12. 시그널
- 2019/08/25 22:27
프로세스가 시그널은 받아 동작하는 방식은 우리가 이메일을 받았을 때와 비슷합니다. 대부분 자신에게 온 메일을 읽고 답장을 하지만 스팸 이메일이 오면 무시할 수도 있습니다. 시그널을 전달받은 프로세스가 이를 처리하는 방식은 2 가지로 분류할 수 있습니다. 1단계: 시그널을 무시한다.말 그대로 아무런 동작을 하지 않습니다. 하지만 SIGK...
리눅스 커널 코드를 조금만 분석하면 spin_lock() 함수뿐만 아니라 spin_lock_irq() 함수를 써서 임계 영역을 보호하는 코드를 많이 볼 수 있습니다. 이렇게 커널은 스핀락 기능을 확장한 플러그인 형태 스핀락 함수들을 제공합니다.이번 소절에서는 spin_lock() 함수 기능을 확장한 스핀락 플러그인 함수를 소개합니다. spin_lock...
- 14. 메모리 관리
- 2019/06/01 18:30
가상 메모리의 주요 개념 소개가상 메모리의 주요 개념을 다음 그림을 보면서 배워 보겠습니다. [그림 1] 가상주소와 물리주소 및 페이지와의 관계위 그림과 함께 가상 주소를 물리 주소로 변환하는 실행 흐름을 배워봅시다. 가장 왼쪽에 보이는 주소 맵이 가상 메모리입니다. 가장 윗 부분에 0x0000_0000 주소가 ...
- 13. 가상 파일 시스템
- 2019/05/08 21:28
슈퍼블록 각 멤버들은 파일시스템에 대한 메타 정보를 저장합니다.유저 공간에서 파일시스템 정보를 알려면 어떤 함수를 호출해야 할까요?유저 공간에서 statfs() 함수를 호출하면 커널 공간에서 해당 시스템 콜 핸들러 함수인 sys_statfs() 함수를 실행합니다."혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!"...
- 6. 인터럽트 후반부 처리
- 2019/04/13 09:16
이제 Soft IRQ 의 핵심 코드인 __do_softirq() 함수를 분석할 차례입니다. 분석할 전체 코드는 다음과 같습니다.1 asmlinkage __visible void __softirq_entry __do_softirq(void)2{3 unsigned long end = jiffies + MAX_SOFTIRQ_TIME;4 unsigne...
- 6. 인터럽트 후반부 처리
- 2019/04/13 09:06
이제 Soft IRQ 기법의 핵심인 Soft IRQ 서비스를 처리하는 흐름을 살펴볼 차례입니다. Soft IRQ 서비스는 언제 처리할까요? 아래 그림과 같이 인터럽트 핸들러를 처리하는 인터럽트 서비스 루틴이 끝나는 시점에 Soft IRQ 서비스 처리를 시작합니다. * 강의 동영상도 있으니 같이 들으시면 좋습니다. ...
- 6. 인터럽트 후반부 처리
- 2019/04/13 08:01
Soft IRQ는 리눅스 커널을 이루는 핵심 기능 중 하나입니다. Soft IRQ 서비스 형태로 커널의 타이머, 스케줄링은 물론 네트워크 시스템에서 사용합니다. Soft IRQ 은 인터럽트 후반부 기법으로 씁니다. 이번 절에서는 Soft IRQ를 인터럽트 후반부 처리 중심으로 살펴봅니다. Soft IRQ 전체 구조를 익힌 다음 Soft IRQ에서 프로세...
- 6. 인터럽트 후반부 처리
- 2019/04/12 21:12
이전 절에서는 ftrace 로 콜스택과 함께 인터럽트가 언제 발생하고 언제 IRQ 스레드를 깨우는지 알아봤습니다. 이번에는 실제 인터럽트 핸들러와 IRQ 스레드 핸들러 함수 실행 시간을 측정하는 방법을 소개합니다. 각 함수의 실행 시간을 측정한 결과 인터럽트 핸들러 실행 시간이 길면 인터럽트 핸들러 함수 코드를 점검할 필요가 있습니다...
- 6. 인터럽트 후반부 처리
- 2019/04/12 21:09
IRQ 스레드는 생성된 후 다음과 같은 동작을 계속 반복해 수행합니다. 1. 인터럽트 핸들러에서 IRQ_WAKE_THREAD 반환2. IRQ 스레드 깨움3. IRQ 스레드 핸들러 실행그렇다면 IRQ 스레드는 누가 언제 실행을 시작할까요? IRQ 스레드를 실행하는 출발점은 인터럽트 핸...
- 6. 인터럽트 후반부 처리
- 2019/04/12 21:08
지금까지 IRQ 스레드를 생성하면 커널 내부에서 다음과 같이 처리한다는 사실을 배웠습니다. request_threaded_irq() 함수를 호출하면 인터럽트 속성을 설정한다. 내부 함수에서 kthread_create() 함수를 실행해서 IRQ 스레드를 생성한다.이번 시간에는 우리가 배운 함수가 실제 리눅스 시스템에서 어떻게 호출되는지 실습...
최근 덧글