[2024 동계 모각코] 5회차

MoonGoon·2024년 1월 16일
0

동계모각코

목록 보기
11/13

목표

멀티 쓰레드에 대한 학습

멀티 스레드 스케줄링 방식

  • 하나의 프로세스에 2가지 이상의 작업을 처리하는 것

스레드

  • CPU 스케줄링의 기본 단위
  • PC (Program Counter), Register, Stack으로 구성
  • 프로세스의 데이터 영역을 공유함

쓰레드의 이점

  • 새로운 쓰레드를 만드는 데 시간이 적게 걸린다.
    • register와 stack만 만들면 되기 때문
  • 쓰레드를 없애는 데 시간이 적게 걸린다.
  • context switch 하는데 시간이 적게 걸린다.
  • 쓰레드간 통신하는 데 시간이 적게 걸린다.

User-level thread

커널 레벨 쓰레드보다 빠르다.

Kernel-Level Thread

스레드 스케줄링 방식의 종류

데드라인 스케줄링 방식은 데드라인을 지킬 수 없는 프로세스는 작동하지 않는다. 이때 주어진 프로세스들 중에서 최대의 이익을 뽑아낼 수 있는 프로세스를 실행하는데, 내 프로그램의 경우에는 실행 시간이 긴 프로세스가 짧은 프로세스보다 이익이 크다고 판단하여 이를 기준으로 설계하였다.

고정 우선순위 스케줄링의 경우 프로세스를 실행중에 다른 프로세스가 주어졌을 때, 새로 주어진 프로세스의 우선순위가 높다면 그 프로세스를 실행하게 된다. 내 프로그램의 경우 프로세스가 동시에 주어진다고 가정하여서 우선순위대로 프로세스를 먼저 처리해주도록 하였다.

라운드 로빈 스케줄링의 경우 FIFO로 동작을 하되, 시간을 쪼개서 공평하게 프로세스가 실행되도록 한다. 내 프로그램의 경우에도 동일하게 구현하였다.

스레드를 무제한으로 만들수 없다면, 프로세스가 많아질 때 성능 향상을 할 수 있는 방법이 무엇일까?

  • 병렬 처리를 통해 하나의 프로그램을 처리하여 속도를 향상 시킬 수 있다.
  • 여러개의 CPU를 사용하면 처리속도가 올라간다.
    • 그러나 직렬연결로 작동하게 하면 큰 변화가 없다. 따라서 병렬 연결로 해야한다.
  • TCB (Thread Control Block)을 사용한다.
profile
Swift 개발자를 희망합니다

0개의 댓글