리눅스커널

포스트: 154|조회수: 0|TERM
Items

Posts

154 posts

[리눅스커널] 시간관리: 커널 타이머 관리 주요 개념 소개

Guillermo Austin Kim|2019년 7월 1일

커널 타이머는 리눅스 커널 핵심 기능 중 하나입니다. 커널 내부에서 배경 작업으로 다음 동작을 수행합니다. - 커널 스케줄링 함수들은 커널 타이머를 써서 프로세스를 제어합니다. - 시스템 시간은 타이머 인터럽트를 받아 주기적으로 갱신됩니다. - Soft IRQ 타이머 서비스를 주기적으로 실행해 동적 타이머를 관리합니다. 또한 리눅스 커널 세부 알고리즘과 디바이스 드라이버는 실행 시간을 기준으로 세부 제어를 합니다. 예시를 들면 다음과 같습니다. - 어떤 함수를 현재 시각 기준으로 200ms 초 후에 실행 - 어떤 함수가 500ms 내에 실행 안 하면 예외 처리 - 특정 함수를 1초 주기로 실행해서 시스템 상태를 점검 리눅스 커널이나 드라이버 코드를 분석하면 커널 타이머와 시간 흐름을 제어하는

[리눅스커널] 커널동기화: 레이스 컨디션 커널 패치 소개

Guillermo Austin Kim|2019년 6월 24일

이번에는 리눅스 커널 커뮤니티에서 논의된 레이스 컨디션 관련 커널 패치를 소개합니다. 패치 코드를 분석하면서 다음과 같은 내용을 알아보겠습니다. - 레이스 컨디션 발생 원인 - 임계영역 구간 - 패치 코드와 관련 소스 코드 분석 임베디드 리눅스 입문자분들은 정상급 ‘리눅스 커널 개발자’들이 어떻게 리눅스 커널을 개발하는지 궁금해합니다. 이 궁금증을 해소할 수 있는 지름길은 ‘리눅스 커널 메일링 리스트’를 보는 것입니다. ‘리눅스 커널 메일링 리스트’를 읽으면 커널 개발 도중 생긴 문제와 해결 방법에 대한 심도있는 분석을 확인할 수 있습니다. 먼저 패치 코드에서 소개된 다음 함수 흐름을 같이 볼까요? [https://lore.kernel.org/lkml/CAARE==e6obTMLBeo3t2oJuw

[리눅스커널] 시그널: 유저 공간에서 pause() 함수 호출 시 커널 실행 흐름 파악하기

Guillermo Austin Kim|2019년 6월 22일

유저 공간에서 pause() 함수를 호출하면 커널 공간에서 어떤 함수가 실행할까요? 다음 시그널 설정 흐름도에서 가장 하단에 표시된 박스를 확인합시다. [그림 ] 유저 공간에서 pause() 함수 호출 시 실행 흐름도 pause() 함수는 시그널을 기다릴 때 호출합니다. 라즈베리파이에서 다음 명령어를 입력해 pause 명령어에 대한 매뉴얼을 확인합시다. root@raspberrypi:/home/pi# info pausePAUSE(2) Linux Programmer's Manual PAUSE(2)NAME top pause - wait for signal 매뉴얼에서 출력하는 결과와 같이 시그널을 기다리는 역할을 수행합니다

[리눅스커널][시그널] 시그널 생성: __send_signal() 커널 함수 분석

Guillermo Austin Kim|2019년 6월 12일

누군가 ‘시그널을 생성하는 핵심 함수가 무엇인가?’ 라고 질문을 한다면 __send_signal() 함수라고 대답할 수 있습니다. 그렇습니다. 시그널을 생성하는 핵심 함수는 __send_signal() 입니다. 이제부터 __send_signal() 함수 코드를 분석하겠습니다.[https://elixir.bootlin.com/linux/v4.19.30/source/kernel/signal.c]1 static int __send_signal(int sig, struct siginfo *info, struct task_struct *t,2 int group, int from_ancestor_ns)3 {4 struct sigpending *pending;5 struct sigqueue *q;6 int ov