[운영체제] 스레드

한결·2023년 10월 16일
0

CS

목록 보기
28/34
  1. 오래 걸리는 일 하나와 빨리 끝나는 일 여럿을 같이 할 때
  2. 어떤 긴처리를 진행하는 동안 다른 짧은 일을 처리해야 할 떄
  3. 기기에 있는 CPU를 모두 사용해야 할 때

-> 멀티 스레딩 필요


스레드 (Thread)
cpu가 독립적으로 처리하는 하나의 작업 단위

스레드가 여러개일 떄의 문제점
여러 프로세스와 여러 스레드를 동시에 실행해야 하는 운영체제는 일정 시간마다 프로세스와 그 안에 있는 스레드를 번갈아가며 실행한다.
이 때 프로세스 및 스레드를 번갈아가며 실행할 때 컨텍스트 스위치 해야함
-> 성능에 좋지 않음

컨텍스트 스위칭
CPU에 실행할 프로세스를 교체하는 기술

  • PCB(Process Context/Control Block)이라는 메모리 공간에 프로세스 상태값(PID, 메모리 정보, 프로세스 상태 등)을 저장
  • PCB에 저장하고 불러오는 행위, 메모리 캐시를 플러싱하고 리로드, 다양한 테이블과 리스트 갱신 -> 이 과정이 많아지므로 오버헤드가 발생할 수 있음
  • 다음 프로세스를 결정하는데에는 다양한 스케줄링 알고리즘이 있음

멀티 스레드 주의 사항
다수의 스레드가 동일한 값에 접근 시 예측할 수 없는 결과가 발생하는 경우가 있다.
이는 컨텍스트 스위치가 무작위로 일어나기 때문 -> 이를 막기위해 동기화(synchronize)라는 조작을 함
-> 대표적인 것이 뮤텍스(상호배제, mutual exclusion)

  • 뮤텍스 자체가 무겁기 떄문에 최대한 잘게 나누면 오히려 성능 떨어짐 -> 범위를 적당히 넓게 잡아야함
  • 영역이 너무 넓으면 스레드가 여럿이더라도 하나일 때와 별 차이가 없음

0개의 댓글