안녕하세요. 초보자 질문 드립니다 ㅜㅜ
프로세스 스케줄링 쪽을 보다가... 궁금한게 생겨서요.
os 마다 또 os 버전마다 스케줄링 정책이 틀린걸로 알고 있는데요.
예로 리눅스 2.4는 오더원 정책이고, 2.6 은 CFS 이고... 그외 라운드로빈이라던가 FIFO? 등
궁금한건... OS 별로 스케줄링 정책은 1개 씩 인가요? 여러개인데 선택적으로 개발자가 선택 할수 있는건가요?
각 프로세스마다 다른 스케쥴러를 쓸 수 있는지도 OS마다 다릅니다.
제 사견입니다만(틀릴경우 지적 달갑게 받겠습니다.)
리얼타임 시스템 개발자가 아니시라면 스케쥴링 정책을 크게 신경 안쓰셔도 될 것 같습니다.
우선 현대의 범용 OS에서는 FIFO 등은 사용하지 않고 라운드 로빈 혹은 라운드 로빈에 기초한 스케쥴링을 기본적으로 제공하는걸로 알고있습니다.
그리고 마지막에 언급한 개발자는 어떤 개발자를 말하시는건가요? 커널개발자? 어플리케이션 개발자?
어플리케이션 개발자는 당연히 안될 거구요.
커널개발자는 컴파일 타임에만 스케쥴링 정책을 선택해서 이미지 형태로 제공하므로써, 커널 위의 특정 유저를 위한 서비스를 제공 해 줄 수 있을 것 같네요.
sched_setscheduler
그런데 찾아보니
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param); sched_setscheduler() sets both the scheduling policy and the associated parameters for the thread whose ID is specified in pid.
즉, 하나의 프로세스 안의 쓰레드 스케쥴링에 관한 것으로 보이는데요..
전체 프로세스 정책을 관리하는건 정적이지 않을까요?
제 상식상 아무리 동적으로 한다 쳐도 리부팅 후 새로운 정책 적용인데..
질문자가 물어보는건 프로세스 스케쥴링입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
각 프로세스마다 다른 스케쥴러를 쓸 수 있는지도
각 프로세스마다 다른 스케쥴러를 쓸 수 있는지도 OS마다 다릅니다.
리얼타임 시스템 개발자가 아니시라면..
제 사견입니다만(틀릴경우 지적 달갑게 받겠습니다.)
리얼타임 시스템 개발자가 아니시라면 스케쥴링 정책을 크게 신경 안쓰셔도 될 것 같습니다.
우선 현대의 범용 OS에서는 FIFO 등은 사용하지 않고 라운드 로빈 혹은 라운드 로빈에 기초한 스케쥴링을 기본적으로 제공하는걸로 알고있습니다.
그리고 마지막에 언급한 개발자는 어떤 개발자를 말하시는건가요? 커널개발자? 어플리케이션 개발자?
어플리케이션 개발자는 당연히 안될 거구요.
커널개발자는 컴파일 타임에만 스케쥴링 정책을 선택해서 이미지 형태로 제공하므로써, 커널 위의 특정 유저를 위한 서비스를 제공 해 줄 수 있을 것 같네요.
?
sched_setscheduler
sched_setscheduler() 와 같은게 있는줄 몰랐습니다.
그런데 찾아보니
즉, 하나의 프로세스 안의 쓰레드 스케쥴링에 관한 것으로 보이는데요..
전체 프로세스 정책을 관리하는건 정적이지 않을까요?
제 상식상 아무리 동적으로 한다 쳐도 리부팅 후 새로운 정책 적용인데..
질문자가 물어보는건 프로세스 스케쥴링입니다.
댓글 달기