본문 바로가기

Process diagram in Linux 파일과 마찬가지로 프로세스는 유닉스(UNIX®) 운영체제에서 기초다. 프로세스는 실행 가능한 파일의 명령어를 수행하는 살아있는 존재다. 명령 수행 이외에, 프로세스는 특히 열린 파일, 프로세서 문맥, 주소 공간, 프로그램과 관련한 자료 등을 관리한다. 리눅스 커널은struct task_struct로 정의된 프로세스 기술자에서 완전한 프로세스 관련 정보를 보관한다. 리눅스 커널 원시 코드인 include/linux/sched.h에 들어있는 struct task_struct의 다양한 필드를 확인하자. 프로세스 상태에 대해 생명 주기 동안, 프로세스는 상호 배타적인 상태 집합을 오간다. 커널은 프로세스 상태를 struct task_struct의 state 필드에 보관한다. 그림 1은 프로세스 상태 사이에 일어.. 더보기
리눅스 커널 실시간 스케줄링 우선순위 출처: http://lethean.pe.kr/2010/09/30/linux-kernel-realtime-scheduling-priority/ SCHED_OTHER, SCHED_IDLE, SCHED_BATCH 스케줄링 정책(policy)에 속하는 일반 태스크는 스케줄링 우선순위(priority)는 항상 0입니다. 하지만 SCHED_FIFO, SCHED_RR 등과 같은 실시간 스케줄링 정책에 속하는 태스크는 가장 낮은 1부터 가장 높은 99까지의 우선순위가 부여됩니다. 리눅스 커널 스케줄러는 태스크 우선순위별로 실행 가능한 태스크 목록을 유지하고, 가장 높은 우선순위부터 차례대로 각 우선순위별 태스크 목록이 비어있는지 검사해서 태스크가 있을 경우 목록의 첫번째 태스크를 다음에 실행할 태스크로 선택합니다. 따.. 더보기
리눅스 커널 스케쥴링 영역과 클래스 출처: http://lethean.pe.kr/2010/10/06/linux-kernel-scheduling-domains-and-classes/ 스케줄링 영역 (Scheduling Domain) struct sched_domain { /* These fields must be setup */ struct sched_domain *parent; /* top domain must be null terminated */ struct sched_domain *child; /* bottom domain must be null terminated */ struct sched_group *groups; /* the balancing groups of the domain */ unsigned long min_inter.. 더보기
안드로이드 운영체제에서 실시간 시스템 출처: http://lethean.pe.kr/2010/11/19/real-time-on-android-os/ deadline의 중요성 vs fairness, scalability, interactivity, performance 실시간 시스템의 핵심 요구사항 중 하나는 빠른 대기시간(latency)이 아니라 가장 느린 대기시간을 미리 가늠할 수 있어야(predictability) 한다는 점입니다. 즉, 아무리 짧은 응답시간을 제공하더라도 시스템 부하(load)나 입출력(I/O), 태스크 동기화(synchronization) 등에 의해 느려지거나 최대 응답시간을 예측할 수 없다면 실시간 운영체제가 아닙니다. 물론 응답시간이 가능한 짧으면서 편차가 크지 않으면 더 바랄게 없겠지만, 그렇지 못할 경우라도 운영.. 더보기