목차
쓰레드
구성
공유되는 영역
- Program Counter(PC): 쓰레드가 명령어의 어디까지 수행하였는지 순서를 나타낸다.
- register: 쓰레드가 어디까지 수행했는지 정보 저장
- stack: 함수 호출 , 변수 저장 등에 사용되는 메모리 공간(=stack)이 독립적이라는 것은 독립적으로 함수 호출이 가능하다는 것이다.
공유되지 않는 영역
- code
- data
- OS resources
EX 1)
- 예외로 Chrome 브라우저는 각각의 창을 별도의 프로세스로 실행하는 멀티 프로세스 아키텍처를 채택한다. 이것은 확장 프로그램의 충돌로부터 브라우저를 보호하기 위한 성능 최적화 설계를 위함이다.
EX 2)
- 한 프로세스에서 특정 작업(EX. i/o)을 요청하는 동안, 사용자들에게 대기 페이지(로딩중)를 보여주어야 한다.
- 즉, 하나의 스레드가 blocked (waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 하는 듯한 효과를 보여줄 수 있다.(사용 친화적)
장점
- 멀티 쓰레딩
- 프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우, 메모리 공간과 시스템 자원 소모 감소 효과
- 프로세스에 비해 쓰레드는 Heap을 공유하므로, 통신도 용이
- ex) 한 스레드가 i/o 작업으로 인해, Blocked 되면 다른 스레드가 display로 대기페이지 보여주는 작업 실행
- 문제점: 프로세스 간 공유하는 자원이 없으므로 동일한 자원에 동시에 접근하는 일이 없었지만,
멀티 쓰레딩은 Heap을 공유하므로 문제가 생길 우려 있음
- 멀티 쓰레딩: 한 스레드가 i/o 작업으로 인해, Blocked 되면 다른 스레드가 display로 대기페이지 보여주는 작업을 실행)
- 리소스 공유
- 경제적 (EX. 멀티 프로세스는 컨텍스트 스위칭으로 인한 오버헤드 발생하지만 멀티 쓰레드는 리소스 공유하므로 발생 부담 감소)
- 멀티 프로세서(CPU가 여러 개인 환경)에서 여러 쓰레드를 여러 CPU에 배치하면 병렬구조로 작업 처리하여 수행 속도 빠름
멀티 프로세스 vs 멀티 쓰레드
멀티 프로세스
- 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 끼치지 않는다.
- 많은 메모리 공간과 CPU 시간 차지
- ex) Chrome같은 경우, 확장 프로그램과의 충돌로 인해 전체의 프로그램이 종료되지 않기 위해 멀티 프로세싱 방식을 채택하고 있음.
멀티 쓰레드
- 멀티 프로세스보다 메모리 공간 차지 적음
- Context Switch 빠름
- 오류로 인해 하나의 스레드가 종료되면 전체의 스레드가 종료될 수 있다는 점
- 동기화 문제
- 여러 쓰레드가 동일한 리소스 접근 시 문제 우려
쓰레드 구현 방식
커널 쓰레드(Kernel Threads)
- OS가 각 쓰레드들의 존재를 알게 구현
- OS가 한 쓰레드에서 다른 쓰레드에게 CPU를 넘기기 가능
유저 쓰레드(User Threads)
- OS가 쓰레드의 존재를 모르게 구현
- OS가 한 프로세스에 CPU를 주면 알아서 내부적으로 나눠서 씀
'운영체제(OS) & Network' 카테고리의 다른 글
메모리 (0) | 2023.09.18 |
---|---|
프로세스(Process) (1) (0) | 2023.09.18 |
스케줄러(Scheduler) (0) | 2023.09.13 |
프로세스(Process) (2) (0) | 2023.09.13 |
데드락(Deadlock) (0) | 2023.09.05 |