운영체제 Ch.4 Multithreaded Programming

박우민·2020년 6월 3일
0

Threads
프로세스의 실행 흐름

프로세스 내 한 작업만을 수행하는 것은 싱글 스레드, 하나의 프로세스가 동시에 여러 작업을 수행하는 것은 멀티스레드라고 한다.

프로세스를 여러개 돌리지 않고, 스레드를 나누는 이유는?

  1. 프로세스간 통신을 위한 효율이 좋지 않고, 관리가 어려움
  2. 스레드 전환에 대한 컨텍스트 스위치가 속도가 더 빠름

Multithreaded Server Architecture

Servlet Container(Tomcat)

클라이언트에서 요청을 수신한 서버는 스레드를 생성하고 처리를 할당함

Multicore Programming

core를 이용한 병렬 처리
프로세서에 스레드를 pinning하여 동시에 수행
병렬성은 멀티코어 시스템에서 사용되는 방식으로, 여러 개의 코어가 각 스레드를 동시에 수행하는 방식이다.

User Threads and Kernel Threads

Kernel thread는 안정적이지만 유저모드와 커널모드를 계속 변경해줘야 하기 때문에 성능이 저하된다. 반대로 user thread는 안정성은 떨어지지만 성능이 저하되지 않는다.

두 스레드간에는 여러가지 관계 모델이 있다.

One to One Model: 하나의 유저 스레드에 하나의 커널 스레드가 대응되는 모델로, 동시성을 높여주고, 멀티프로세서(코어) 시스템에서는 동시에 여러 스레드를 수행할 수 있도록 해줌, 유저 스레드를 늘리면 커널 스레드도 똑같이 늘어나는데, 커널 스레드를 새성하는 것은 오버헤드가 큰작업으로 성능저하가 발생할 수 있음

Many to Many Model(user thread <= kernel thread)
Two Level Model: 특정 유저스레드를 위한 커널 스레드를 따로 제공하는 모델

profile
안녕하세요 Software Development Engineer 입니다.

0개의 댓글