리눅스에서 소프트웨어 적으로 real-time 시스템 비슷하게 프로세스를 운용할 수 있는 방법이 있습니다. 일반적인 nice 유틸리티로는 SCHED_OTHER 라는 정책의 범위에서 10부터 -20까지 우선순위를 정할 수 있는데요, 커널 2.6 이후부터 탑재된 sched_ 계열의 함수를 사용해서 SCHED_RR, SCHED_FIFO 라는 리얼타임 수준의 프로세스 운영을 할 수 가 있습니다.
굳이 따지자면,
-----------------
SCHED_FIFO
-----------------
SCHED_RR
-----------------
SCHED_OTHER
-----------------
이런 식의 그림이 되겠습니다. 우선순위는 위가 높고 아래가 낮음... 간단한 설명은 아래...
SCHED_OTHER
priority -20 ~ 10 시분할 방식, 보통의 프로세스와 쓰레드가 가지는 정책입니다.
SCHED_FIFO
리얼타임을 위한 정책이고 priority 는 1~ 99까지 프리엠프티브(높은 우선권가지 프로세스가 cpu선점)
block, yield, terminate 되기전까지는 계속 실행이 되는 정책입니다.
SCHED_RR
역시 리얼타임을 위한 정책이고, priority 는 1~99까지.
특이한점은 동일한 우선순위를 가진 SCHED_RR그룹의 프로세스와 시분할을 사용하고 그 나머지는 SCHED_FIFO와 동일하게 움직입니다.
아래 간단한 sched_ 계열 함수 사용법과 소스를 첨부합니다. 유용하게 사용하세요.
그림설명: victim 계정의 top 프로세스에 RT 딱지가 붙어 있는 것을 보실 수 있습니다.
개념에 대해서는 "/linux.x.x.x/include/linux/sched.h" 에 대한 설명을 아랫 분이 잘 해 놓으셨네요.
http://vincenthanna.springnote.com/pages/534384
sche_함수에 대한 리눅스 맨페이지 매뉴얼
http://linux.die.net/man/2/sched_setscheduler
'시큐리티 대응팁' 카테고리의 다른 글
| 리눅스 프로세스 real-time 스케쥴링 따라하기 (0) | 2009/10/09 |
|---|---|
| 광활한 웹 페이지에서 XSS 찾기 (0) | 2009/10/09 |
| 파이어폭스 자바스크립트 해석기 (Firefox add-on Javascript Deobfuscator) (0) | 2009/10/09 |
setpriv.c