Concurrency

  • 병행성, 병행적인 프로세스들의 집합으로 응용 프로그램을 구조화함으로써 구현됨
  • fork()
  • Overhead in Process Model : 여러 개의 프로세스를 사용하는 모델에서 각각의 프로세스는 독립적, 통신을 위해서는 커널을 통한 IPC(Inter Process Communication)가 필요 + PCB의 크기가 크다 ⇒ 프로세스의 생성과 context switching에 오랜 시간이 걸림

Thread

  • CPU 스케줄링의 기본 단위
  • 한 프로세스 안에서 제어의 흐름
  • pc, registers, stack ( 프로세스보다 작아 오버헤드를 줄임 )
  • 자신만의 레지스터 상태와 스택을 가짐
  • 같은 프로세스 안에서 여러 스레드 생성 가능, 프로세스를 위한 코드와 주소 공간과 운영 자원을 공유 가능
  • 스레드가 실행되는 환경 : task

single은 기존의 process와 같다

 

Multithreading

 

  • Single Processor : Concurrency 달성(병렬적인 것처럼 보임, 계산 속도를 증가)

  • Multiple Processor : Concurrency 달성(동시에 여러 스레드 실행, core의 병렬성)

 

User-level vs Kernel-level

  • User-level threads : 유저 레벨에서 라이브러리 호출을 통해 커널 위에서 유지됨
    • 스레드 관리가 유저 레벨에서 된다.
    • 커널 모드로 전환 불가능, 빠르고 간편
    • 애플리케이션에 특화된 스케줄링
    • Blocking problem : 하나의 스레드에서 I/O처리를 시작했을 때 다른 스레드에서 일 진행 못함, 멀티 프로세서의 concurrency유지 못함(커널이 스레드의 존재를 모름)
  • Kernel-level threads : 운영체제 안, 커널 안의 함수를 사용
    • 커널에 의해 관리된다.
    • 유저레벨에 비해 느리다
    • Blocking problem 없음
    • 현대 OS들은 커널을 지원
  • Multithreading Models(Mapping Model)
    • Thread libraries : 스레드를 생성하고 관리하기 위한 API, 유저 레벨과 커널 레벨의 역할이 서로 다름

user-level : 커널와 1:1 매칭 / kernel level : 다양한 매칭

  • Thread Mapping and scheduling
    • user level에서의 스케줄은 thread library를 통해 kernel level과 매핑되어 수행
    • kernel level의 스케줄은 물리적 cpu와 kernel level 스레드들이 커널을 통해 매핑
    • 병렬 실행 : virtual processor(커널 레벨)에 있는 스레드의 병행성, 물리적 코어들에 있는 스레드의 병행성
    • 실제 병렬성(parallelism) : 하나의 스레드 : 하나의 코어의 1:1 관계(thread pinning)

 

Threading Issues

  • fork() 이후에 exec()이 바로 호출되면, 모든 스레드를 복사할 필요가 없다.
  • Signals(sw interrupt)
    • Synchronous signals : 시그널을 발생시킨 동작을 수행한 프로세스에 전달
    • Asynchronous signals : 동작 중인 프로세스 바깥에서 발생한 이벤트에 의해 발생
  • Thread pools : 할 일을 기다리는 많은 스레드가 존재하는 풀 생성
    • 새 스레드를 생성하는 것보다 요청에 응답하는 게 조금 더 빨라짐
  • Thread Local Storaged(TLS) : 각각의 스레드들이 자기 자신만의 데이터를 가지게끔

 

❗ Concurrency는 한번에 많은 것을 처리(SW) / Parallelism은 한 번에 많은 일을 처리(HW)

'Computer Science > Operating System' 카테고리의 다른 글

[개념] Memory Management 1  (0) 2021.08.12
[개념] Virtualization  (0) 2021.08.12
[개념] IPC  (0) 2021.08.12
[개념] I/O Management  (0) 2021.08.12
[개념] Process Management  (0) 2021.08.12

+ Recent posts