본문 바로가기

CS/OS

[OS] Thread & Concurrency

overview

Untitled

  • multithreaded programming 장점
    • Responsiveness : nonblock으로 execution 계속 실행
    • Resource Sharing : data영역이 공유되므로, shared memory or msg-passing이 쉽다.
    • Economy : 프로세스 복제가 필요없이, 안에서 thread-switching 등 쓰레드를 여러개 쓰는게 훨씬 쉽다.
    • Scalability : multiprocessor architectures 등 확장성이 굉장히 좋다.
  • java에서의 thread 사용법
    • Thread 상속, Thread implement(가장 많이 쓰임), Runnable 람다 표현식 사용

Multicore Programming - 4.2

  • Multithreading in a Multicore system
    • single-core : interleaved
    • multi-core : parallel
  • Challenges in a Multicore systems
    • Identifying tasks : 업무를 명확하게 부여해야함
    • Balance : 쓰레드마다 비슷한 부하
    • Data splitting : data가 잘 나누어져함
    • Data dependency : data 동기화가 잘 이루어져야함
    • Testing and debugging : single thread보다 어렵다
  • Type of parallelism
    • data parallelism, task parallelism → 분산 시스템 등으로 인해 중요하진 않다.
  • Amdahl's Law
    • Serial한 문제는 쓰레드가 많아도 도움이 안된다.

Multithreading Models - 4.3

  • User threads
    • 사용자 모드에서 사용, 커널의 서포트가 없다.
  • Kernel threads
    • 커널 모드에서 사용, 운영체제가 직접 관리한다.
    • 유저 쓰레드와 N:M 관계(N≤M)

Thread Libraries - 4.4

  • Pthreads - linux
    • fork를 통해 만든 프로세스는 변수 공유x, thread에서는 공유o

Implicit Threading - 4.5

  • concurrent and parallel application design이 어렵다
    • 멀티코어 시스템에서 멀티쓰레딩을 해야함
    • 컴파일러(open-api), libraries(java.concurrent) 사용
  • Thread Pools
    • threads를 Pool 안에 만들어놓고, 프로세스에서 필요한 만큼 가져가고 돌려놓음.
  • Fork & Join
    • explicit threading이지만, implicit하게 사용 할 수 있음
  • OpenMP
    • compiler directives로 쉽게 사용 in c/c++
    • 특정 부분을 parallel으로 처리하라고 directive해주면, 그 부분을 병렬처리 → 순서는 계속 바뀜

'CS > OS' 카테고리의 다른 글

[OS] Synchronization Tools - part2  (0) 2021.12.16
[OS] Synchronization Tools - part1  (0) 2021.12.16
[OS] Scheduling  (0) 2021.12.16
[OS] Process  (0) 2021.12.15
[OS] Structure  (0) 2021.12.15