forked from kimahhh/be-was
-
Notifications
You must be signed in to change notification settings - Fork 0
스레드 모델
sue06004 edited this page Jul 17, 2023
·
3 revisions
- 사용자 수준 스레드: 사용자 수준의 스레드 라이브러리가 만든 스레드로, 스레드가 생성 된 프로세스의 주소 공간에서 해당 프로세스에 의해 실행되고 관리된다.
- 커널 스레드: 커널에 의해 생성되고 운영체제에 의해 직접 관리된다.
- 하나의 커널 스레드에 여러 개의 유저 스레드를 연결하는 모델.
- 사용자 수준에서 스레드 관리가 이루어진다.
- 한 번에 하나의 유저 스레드만 커널에 접근할 수 있기 때문에 멀티코어 시스템에서 병렬적인 수행을 할 수가 없다.
- 요즘에는 잘 사용되지 않는다.
- 하나의 유저 스레드에 하나의 커널 스레드가 대응하는 모델
- 사용자 스레드가 생성되면 그에 따른 커널 스레드가 생성된다.
- 동시성을 높여주고, 멀티 프로세서 시스템에서 동시에 여러 스레드를 수행할 수 있도록 해준다.
- 커널 스레드를 생성하는 것은 오버헤드가 큰 작업이기 때문에 성능 저하가 발생할 수 있다.
- 윈도우와 리눅스가 이 모델을 구현하고 있다.
- 여러 유저 스레드에 더 적거나 같은 수의 커널 스레드가 대응하는 모델
- 가장 높은 정확도의 동시성 처리를 제공하는 모델
자바는 초기 Green Thread를 사용하다가 JDK 1.3 이후로 Native Thread로 스레드 모델을 변경하였다.
- Green Thread
- 다대일 모델
- 동기화 및 자원 공유가 용이하여 실행시간이 단축됨
- 멀티 코어 시스템의 이점을 살릴 수 없음
- Native Thread
- 다대다 모델
- 높은 정확도의 동시성 처리, 멀티 코어 시스템을 활용할 수 있음
- 스레드 동기화 및 자원 공유가 복잡함 -> 실행 시간 증가