관리 메뉴

드럼치는 프로그래머

[O.S.] 쓰레드와 스케줄링 본문

★─Programing/☆─O. S.

[O.S.] 쓰레드와 스케줄링

드럼치는한동이 2009. 1. 31. 02:37

쓰레드 라는 것은

프로세스 내에서 여러개의 실행점을 가지는 것을 의미한다.

-쓰레드는 프로세스 내의 다중처리를 위해 전안된 개념이다.

-디스패칭의 단위를 프로세스에서 스레드로 세분화 시킨 것이다.

-프로세스내의 병렬수행을 위해 다중 스레딩을 이용(즉, 여러개의스레드를 가질 수 있다는 말)

-하나의 스레드 내에서는 하나의 실행점만이 존재 한다.

 

                 부분적으로 실행되고

           ---  교체되어 나간 프로세스   (중간)    <-------

   교체 |                                                                  |   교체되어나감

          |                                                                  |

          |                                                                  |

상위    |-->                       하위                         -----

----------> 작업준비큐 ---------> 중앙처리장치 ----------> 끝

        |---->                                                     -----       

        |                                                                    |

        |                                                                    |

        |                                                                    |

         -----  입출력 장치    <----     입출력 대기큐  <--

 

 

스케줄링 단계는 상위, 중간, 하위 단계로 구분 된다.

 

중앙처리장치에 작업이 굉장히 많아 처리가 안될 때 작업을 몇개 빼서 교체 되어 나간다.

교체 된다는 말은 주기억장치에서 보조기억장치로 보낸다는 말..보조기억 장치에 있다가 나중에 다시 승인이 일어나면 다시 들어오는 그런 과정이다.

 

 

 

 

스케줄링에 대해 알아보기 전에 선점 스케줄링, 비선점 스캐줄링에 대해 먼저 알아보자.

 

선점 스케줄링(우선순위나, 할당 시간에 따라 cpu를 내어주는...)

-우선순위 시스템에 유리하다.

-대화식 시스템에 유용하다.

-오버헤드를 초래 할 수 있다.(cpu를 다른쪽으로 넘기다 보면 현상태를 저장 해야 되는데

                                         그때 시간이 걸린다.)

 

비선점 스케줄링

-한번 제어를 받으면 작업을 끝까지 끝내고 다음으로 넘겨준다.

(간단한 작업이 있는데도 순서에 따라 기다려야 한다는 단점이 있다.)

 

 

 

스케줄링의 종류

-기한부 스케줄링: 정해진 기한내에 끝나지 않으면 그 가치가 사라진다.

-우선순의 스케줄링: 우선순위가 매번 봐뀔 수 있다.

-FCFS, SJF, SRT 스케줄링

-RR, HRN, FSS 스케줄링

-다단게 피드백 큐

 

 

 

FCFS 스케줄링

-도착 순서에 따라 디스패칭 한다.

-비선점(Nonpreemptive)기법 이다.

 (대화식 시스템에 부적절, 짧은 작업이 긴작업을 기다림, 중요한 작업이 나중에 수행)

-응답시간에 대한 예측이 용이 하다.(앞에 끝날 것이 언제쯤 끝날지 대충 알기 때문이다.)

 

 

SJF 스케줄링

-작업이 끝나기 까지의 실행시간의 추정치가 가장 작은 작업 을 CPU가 먼저 실행.

 (이 추정치는 작업을 쓰는 사람이 추정치를 기술 하기때문에 정확하진 않다.)

-비선점 기법이다.

-평균대기 시간이 최소화가 된다.

-실행시간에 대한 정보 파악이 난이하다(정확하지 않다)

-긴 작업의 경우에는 FCFS보다 더 기다림.

-시분할 시스템에 부적당 하다.

 

 

SRT 스케줄링

-남아 있는 시간의 추정치가 가장 작은 것을 먼저 CPU가 실행 한다.

 (현시간 부터 남아 있는 시간 - 이것도 정확 할 수가 없다.)

-SJF에 선점 기능을 추가 한 것과 비슷 하다.

-시분할 시스템에 유용하다.

-오버헤드가 크다.

-서비스를 받는 시간을 기록해야 한다.(이 시간을 빼면 남아 있는 시간이 나온다.)

-대기시간을 최소화- 오버헤드가 큼

-임계치를 설정(어느 정도 남아(임계치) 있을 때는 더 적게 남은 작업이 들어와도 마저 끝내고  넘겨줄 수 있게 하는 설정)

 

 

 

RR 스케줄링

-한 프로세스를 처리하는데 CPU가 시간을 항당하여 처리

-시간 할당량은 시스템에 따라 다르다.

-선저 기법 이다.

-대화식 시스템에 적합하다.

-선점에 따른 부담을 갖는다(오버헤드)

-시간 할당량이 많으면: FCFS 처럼 되고,

-시간 할당량이 적으면: 문맥교환에 따른 오버헤드가 발생한다.

 

CPU가 할당한 시간이 끝나면 작업준비큐의 뒤에 가서 붙고, CPU처리중 입출력이 발생하면 입출력 대기로 들어가 입출력이 끝나면 다시 작업준비큐의 뒤에가서 붙는다.

 

여기서 평균대기 시간과 평균 할당 시간을 구해보자

예로

작업                                    A     B     C      D 가 있고

각각 도착시간이                    0     1      2       3  이고,

CPU사이클(처리해야하는양)   8      4     9       5 이고,

CPU가 할당하는 시간을 4 라고 가정 해보자.

   

     A      B     C     D     A      C     D     C

  0      4      8     12    16     20    24    25     26

 

위 처럼 시간이 할당 되어 처리가 될 것이다. 여기서 평균대기 시간과 평균 반환 시간은

평균대기시간: 12(16-4) + 3(4-1) + 15(8+8+1-2) + 17(12+8-3) /4 =11.75

평균할당시간: 20(20-0) + 7(8-1) + 24(26-2) + 22(25-3) / 4 = 18.25

참고: 괄호안은 어덯게 해서 값이 나왔는지의 과정이다. 곱하기가 아님 -_-ㅋ

        도착 시간도 주의 해서 계산하자.

 

 

 

HRN 스케줄링

-SJF기법의 약점을 보안한 것이다.

-긴작업과 짧은 작업의 불평등을 해소 했다.

-우선순위 =  (대기시간 +  서비스를 받을시간)  / 서비스를 받을 시간 으로 우선순위가 정해짐

 

 

FSS 스케줄링

-프로세스들 집합간에 프로세스 스케줄링 지원

-이는 유닉스 환경을 위해 개발 되었다.

 

 

프로세스는 우선순위가 같은것 끼리 그룹을 만든다.

그룹내에는 RR스케줄링 방식으로 돌아간다.

 

                      시스템자원(100%)

                             |

      -------------  FSS ----------------

     |                       |                           |

     |                       |                           |

 

50%                    25%                         25%

  프로세스             프로세스                프로세스

 스케줄러              스케줄러                스케줄러

      |                         |                          |

---------             --------               ---------

|  G1     |           |   G2     |              |   G3     |

|           |           |            |             |            |

---------            ---------               ---------

 

 

 

 

 

마지막으로

다단계 피드백 큐

 

FCFS 방식을 여러개 사용하고 마지막 단계에 RR방식을 쓰는 방식이다.

 

처음 단계로 1번 FCFS 으로 처리 되고 CPU 할당 시간내에 완료되면 완료되어 나가는거고

완료되지 않았으면

다음  2번 FCFS 의 작업준비큐에 들어가게 되고 2번째에서도 할당된 시간 내에 끝내지 못하면

3번째 FCFS 의 작업준비큐에 들어가게 되고 .......

마지막에 RR 을 써서 완료가 되게 하는 방식이다.

 

1단계 부터 밑으로 내려 갈 수록 CPU의 시간 할당량이 많이 지므로,

짧은 시간을 요하는 경우는 빨리 작업을 끝낼 수 있다.

 

(그림을 그림을 더 잘 이해를 하겠지만..  여기서 그리기는 힘들다.. 그래서 글로 대체 ㅋㅋ)


'★─Programing > ☆─O. S.' 카테고리의 다른 글

[O.S.] 인터럽트 프로그래밍 ..  (0) 2009.02.25
[O.S.] 프로세스의 병행성 구분  (0) 2009.01.31
[O.S.] 프로세스 란?  (0) 2009.01.31
Comments