20210122 - TIL

Starve·2021년 1월 22일
0

TIL

목록 보기
16/38
post-thumbnail

TIL

  • 스케줄링 방식:

    • 스레드 스케줄링 : 스레드의 개수가 코어의 개수보다 많을 경우, 어떤 순서에 의해 동시성을 실행할 것 인지 결정하는 것.
      스레드 스케줄러에 의해 여러 스레드들이 짧은시간동안 번갈아가며, 스레드의 run()메소드를 실행하게 된다.

      방식:

      • 선점형 스레드 스케줄링 방식과, 협력형 스레드 스케줄링, 그리고 순환할당 방식이 있다.
        • 선점형 스레드 스케줄링:
          우선순위(Priority)가 높은 스레드를 먼저 수행시키는 방식.
        • 협력형 스레드 스케줄링:
          실행중인 스레드가 CPU 사용권을 다른 스레드에게 넘길 때 까지 대기하는 방식.
        • 순환할당 방식:
          시간 할당량(Time Slice)를 정해, 하나의 스레드를 정해진 시간만큼 실행하고, 다른 스레드를 실행 시키는 방식.
    • 프로세스 스케줄링:

      메모리에 적재되어있는 프로그램을 CPU가 실행 할 수 있도록, 운영체제가 프로세스에 CPU를 할당하는 것.
      다중 프로그램을 가능하게 한다.

      • 선점과 비선점 방식이 있다.

        • 선점 방식은 실행중인 프로세스가 실행권을 우선순위가 높은 프로세스에게 강제로 빼앗아 실행할 수 있는 것이며,
        • 비선점 방식은 할당된 실행권을 다른 프로세스가 넘볼 수 없으며, 종료될 때 까지 독점하는데, 자신의 실행권을 자발적으로 다른 프로세스에게 넘겨주게 되는 경우도 있는 실행방식이다. (인터럽트 발생 등)
      • 스케줄링 정책:

        1. 선입 선처리 스케줄링(FCFS - First-Come First-Served)
          큐에 등록된 순서 그대로 프로세스를 처리하는 기본적인 정책.
          프로세스 생성 순이 아닌, 준비 큐에 등록된 순서임에 주의하자.
          순차 처리되는 특성때문에 실행 중인 스레드가 다른 프로세스에 의해 선점될 수 없다.
          비선점 방식의 스케줄링.

          • 실행 시간이 긴 프로세스가 제일 처음 배치 될 수 있으므로, 대기시간이 길 수도 있다는 비효율적인 특징이 있다.

            짧은 시간의 프로세스를 오랫동안 기다리게 하는걸 호송효과(convoy effect)라 한다.

        2. 순환 처리 스케줄링(RR - Round-Robin)
          모든 프로세스에 CPU 할당 시간을 부여하여 CPU 사용 시간을 제한하는 시분할 시스템(time-sharing system)을 위해 개발된 선점방식의 스케줄링 정책.
          모든 프로세스에 적절한 할당시간을 부여한다. 이후 준비 큐에 등록된 순서에 따라 프로세스를 처리.
          할당 시간을 모두 사용했을 시, 준비 큐의 맨 뒤에 등록되어 다시 자신의 차례를 기다림.

          • CPU 할당시간이 길 경우, 호송효과가. 너무 짧으면 빈번한 context switch로 인한 오버헤드가 발생할 수 있어, 적절한 시간분배가 필요.
        3. 다단계 피드백 큐 스케줄링 (multi-level feedback queue)
          여러개의 준비 큐를 사용하여, 준비큐 들 중 우선순위를 부여하여 순서대로 처리하는 정책. 다단계 큐 정책에서 피드백이 추가된 정책이다.

          기존 다단계 큐 :
          우선순위가 높은 프로세스가 계속해서 들어올 경우, 순위가 낮은 프로세스는 무한정 대기하여 영원히 실행되지 않는 현상, 기아(Starvation)가 발생할 수 있다.
          이 현상을 처리하는 기법을 에이징(aging)이라 한다.

          에이징: 오래 대기한 프로세스를 우선 순위가 높은 큐에 옮기는 기법.

          다단계 피드백 큐에서는 우선순위가 높은 큐에는 상대적으로 적은 할당 시간을, 그리고 우선순위가 낮은 큐에는 상대적으로 많은 할당 시간을 부여하는데, 할당시간이 초과된 큐는 우선순위가 한 단계 낮은 준비큐에 등록된다.
          이로 하여, 많은 CPU시간이 필요한 프로세스가 점점 낮은 단계로 이동하는 것.

  • 멀티 스레드가 공용 리소스에 접근할 때 임계구역을 다루는 방식

    • 세마포어(Semaphore):

      • 리소스의 현재 상태(사용 유무 등)를 나타내는 카운터를 설정하여, 멀티 스레드에게 행동을 중지시키거나, 동기화 시키는 기술.
      • 멀티 스레드가 임계구역에 접근 할 때, 한 개 이상의 스레드에게 Lock을 할당하여, 동시에 허용이 가능한 카운터의 제한을 둔다.
      • 이용하는 자원의 개수가 몇 개로 한정 되었을 때, 접근 컨트롤 시 사용 된다. 이 때, 세마포어의 카운터는 사용 가능 한 자원의 개수로 초기화 된다.

      https://jhnyang.tistory.com/101

    • 뮤텍스(Mutex):

      • 임계구역에 들어갈 때, Lock을 실행 하여 다른 스레드가 접근하지 못하게 한 다음, 임계구역에서 나올때 Lock을 해제한다.
      • 세마포어와는 달리 오직 1개만의 스레드가 임계구역에 접근할 수 있으며 이외에는 전부 접근 할 수 없다.

Todo

  • 학습 정리 및 프로세스와 스레드에 대한 강의 수강.
  • 마스터 클래스 수강

느낀점

  • 공부해도 공부해도 모르는게 너무많다.. 그리고 헷갈리는것도! 분명 저번에 한건데 다르게 알고있는 경우가 좀 있어서 정리할 때 주의 했는데.. 잘된지는 모르겠다.
    오늘치 집중력이 떨어진것같아서, 오늘은 이만 좀 일찍 쉬고 내일 아침에 일어나서 다시 잡아봐야겠다..
profile
노력

0개의 댓글