[OS] 오퍼레이팅 시스템 중간 정리 - 4. Thread Concurrency

유보라·2022년 4월 25일
0

학교 공부

목록 보기
5/7
  1. OS란?
  2. OS Structure
  3. Process
  4. Process Scheduling
  5. Thread Concurrency
  6. Synchronization Tools

4. Thread Concurrency

Multithreaded Process Models

Multicore or Multiprocessor 프로그래밍이 가능해지면서 할 일을 어떻게 나누지? 에 대한 문제 발생
→ 할 일 나누기, 밸런스, 데이터 나누기, 데이터 의존성, 테스팅과 디버깅 등...

  • Parallelism(병렬성) : 둘 이상의 작업을 동시에 수행 가능하고 멀티 코어(책상이 여러개)
  • Concurrency(동시성) : 둘 이상의 작업을 동시에 수행 하지만 코어는 1개(하나의 책상을 나눠씀)

Threads Implementation: User Threads and Kernel Threads

1) User Level Threads

  • Kernel은 1개(심지어 유저 레벨이 쓰레드로 되어있다는 것을 모름), User-level만 thread
  • userlevel threads library를 통해 모든 쓰레드를 application이 관리
  • userlevel 내에서 할 일을 나눔
  • userlevel threads library는 어떤 유저 레벨 쓰레드가 Kernel을 차지할 것인지 스케쥴링함
  • thread switching이 커널 단위을 포함하지 않음. 즉, mode switching이 아님
  • 문제점 : P0 안에 있는 쓰레드 1이 I/O를 요청 -> 커널은 쓰레드의 존재를 모르기 때문에 P0 자체를 blocked 됨

2) Kernel Level Threads

  • Kernel level threads와 user level threads 둘 다 존재. 1:1 매핑
  • 커널은 user level threads의 존재를 앎
  • userlevel threads library는 없고, System call API & Kernel function for thread facility가 쓰레드들을 관리
    ex) thread switching, scheduling threads
  • blocking이 process가 아니라 thread 단위임
  • 동일 프로세스에서 스레드 전환 시 커널도 같이 전환해야 하므로 속도가 느려질 수 있음

3) Combined Threads

  • 유저가 쓰레드를 만들면 커널에서도 적당히 쓰레드를 만들어서 매핑 시킴
  • 유저 10만 명이 쓰레드를 만들면 커널도 10만 개를 만들어야하는 1:1 매핑의 단점을 보완하여 만들어짐.
  • 유저 쓰레드 > 커널 쓰레드
  • 우선 순위에 따라 어떤 유저 쓰레드가 커널 쓰레드에 매핑될 지 결정 -> 스케쥴링
  • User-Level threads library(어떤 유저 레벨 쓰레드를 커널 쓰레드에 매핑할 것인지에 대해 스케쥴링, context switching, thread 간 소통)와 System call API & kernel thread facility(어떤 커널 쓰레드를 코어에 할당할 것인지에 대해 스케쥴링, 유저레벨-커널레벨 간 매핑 담당, threads간 switching) 둘 다 존재! 하는 일은 비슷하지만 조금 다름.
  • 프로그래머가 대충 커널 쓰레드를 몇 개 만들 것인지 알려주어야함.

Thread Libraries

  • PThreads : Linux
  • OpneMP : C, CPP
    -> #pragma omp parallel (for)
profile
인하대학교 컴퓨터공학과 학생입니다😀

0개의 댓글