임베디드 스터디 - 단일 프로세서 스케줄링 알고리즘
FCFS, SJF(비선점/SRTF), Priority, Round Robin 스케줄링 알고리즘의 동작 원리와 간트차트 계산 방법을 다룬다.
FCFS, SJF(비선점/SRTF), Priority, Round Robin 스케줄링 알고리즘의 동작 원리와 간트차트 계산 방법을 다룬다.
선점형/비선점형 스케줄링의 차이, CPU 스케줄링 성능 척도(CPU이용률/처리량/반환시간/대기시간/응답시간)의 정의와 목표를 다룬다.
프로세스의 5가지 상태(New/Ready/Running/Waiting/Terminated), 각 상태 전이의 트리거 이벤트, Ready Queue와 Wait Queue 구조를 다룬다.
프로세스와 스레드의 차이, PCB 구조, 컨텍스트 스위칭 오버헤드, 멀티스레딩 모델(N:1/1:1/M:N)의 특성과 장단점을 다룬다.
실시간 OS의 Hard/Soft RT 구분, 분산 OS의 투명성, 임베디드 OS(FreeRTOS/μC-OS/VxWorks)의 특성과 선택 기준을 다룬다.
OS 자원관리자의 4가지 역할(CPU/메모리/파일시스템/I/O), 커널 모드와 사용자 모드의 차이, 시스템 콜(Trap)을 통한 모드 전환 원리를 다룬다.
가상머신(VM)의 하이퍼바이저 타입1/2, KVM의 특수한 위치, 컨테이너(Docker)와 VM의 차이, RTOS와 GPOS의 선택 기준을 다룬다.
리눅스 커널 모듈 디버깅 기법을 학습한다. KGDB/KDB의 원격 디버깅, kprobes의 비중단 탐침, ftrace의 함수 호출 추적, /proc를 통한 실시간 상태 확인을 다룬다.
리눅스 DMA를 학습한다. CPU 방식 대비 DMA의 장점, 캐시 일관성 문제, Coherent/Streaming DMA 매핑 선택 기준, scatter-gather 방식을 다룬다.
리눅스 드라이버의 인터럽트 서비스를 학습한다. request_irq()/free_irq()의 등록·해제, ISR 작성 규칙, tasklet/work_queue bottom-half 선택 기준을 다룬다.