주제
배경 및 목표에 대해 1문장으로 기재
프로세스(옷)
단일 스레드: 한 사람이 실 하나로 옷 제작 → 작업 순차적, 느림, 단순
멀티스레드: 여러 사람이 각자 실로 작업 ⇒ 병렬로 작업하지만 협력필요
smt(공장): 작업 효율을 극대화 하기 위해서 여러 기계를 활용, 자원 분배 최적화
예시: 회사(프로세스)
•
팀1 ← 멀티 프로세스 ?
•
팀2
◦
팀원1 ← 쓰레드
▪
팀원1의 모니터 2대 ← SMT
◦
팀원2 ← 멀티 쓰레드
스레드의 기본구성 요소
스레드와 프로세스 비교
멀티스레드 프로세스 설계의 주요 이점과 과제
ㅇㅇ
운영체제가 스레드를 표현하는 방식
API를 사용 ⇒ 멀티스레드 애플리케이션 설계
스레드(Thread)
thread 실, 가닥을 의미.
컴퓨터 스레드
등장 배경
초기 컴퓨터 시스템에서는 작업의 기본 단위로 프로세스가 사용되었다. 프로세스는 실행중인 프로그램의 인스턴스를 의미하며, 고유한 Text, Data, Stack, Heap 메모리 공간을 갖는다.
프로세스는 독립적인 메모리 공간을 갖고 있기 때문에 여러 프로세스를 처리하기위해서 데이터 교환을 위해 프로세스 간 통신(IPC)이라는 메커니즘이 필요했다. 또한 프로세스 간 문맥 교환이 빈번하게 일어나면서 오버헤드가 발생하는 문제가 있었다. 기존 프로세스 처리 방식은 프로세스 간 독립성을 강조하며 각 프로세스가 독립적인 메모리 공간과 자원을 사용했다. 하여 컨텍스트 스위칭 비용이 크고, 자원 공유가 비 효율적인 단점이 있다. (예:)
이를 해결하기 위해 같은 프로세스 내에서 자원을 공유하며 더 작은 실행 단위인 스레드가 도입되었다.
스레드는 프로세스 내에서 작업의 최소 실행 단위를 의미한다. 프로세스의 자원을 공유하며,
원리
1.
프로세스의 메모리 구조 , 자원 공유
프로세스의 메모리 구조는 아래와 같은 영역으로 되어 있다.
섹션 | 내용 |
스택(Stack) | 함수 호출 시 및 지역 변수를 저장
(예: 함수 매개변수, 반환 주소, 지역 변수) |
힙(Heap) | 동적 메모리 할당에 사용 ← 이부분이 동적 라이브러리 연결이 맞나? |
데이터(Data) | 전역 변수(Global)와 정적 데이터? 정적 변수? 가 저장 |
텍스트(Text) | 실행 가능한 코드가 저장 |
프로세스의 Text, Data, Heap 영역을 공유서, 독립적으로 실행될 수 있다.
•
공유 영역: Text, Data, Heap
•
독립 영역: Stack
•
스레드는 프로세스의 자원(코드, 데이터, 힙)을 공유하며, ⇒ 메모리 오버 헤드를 줄임
각 스레드는 독립적인 스택과 레지스터를 가진다. ⇒ 함수 호출과 지역 변수 사용이 겹치지 않는다.
하나의 스레드에서 예외가 발생하면, 동일 프로세스 내 다른 스레드에도 영향을 미칠 수 있다. 스레드는 경량
2.
스케줄링과 컨텍스트
스레드를 스케줄링 단위로 간주하고, CPU 자원을 스레드 단위로 분배한다.
CPU는 컨텍스트 스위칭(Context Switcing)을 통해 여러 실행 흐름을 교대로 실행된다. 스레드는 동일한 프로세스 내에서 동작하므로 스레드 같
Single thread vs Multi threading
단일 스레드: 한 사람이 실 하나로 옷 제작 → 작업 순차적, 느림, 단순
•
Thread: 프로세스 내 실행의 기본단위, 독립적인 단일 실행 흐름을 처리한다.
◦
소프트웨어적인 실행 단위
멀티 스레드: 여러 사람이 각자 실로 작업 ⇒ 병렬로 작업하지만 협력필요
•
Mulithreading: 한 프로세스에서 여러 스레드를 병렬적으로 실행하여 작업의 효율성을 높임 CPU의 멀티 코어 구조를 활용
◦
소프트웨어에서 다중 스레드를 관리
멀티 스레드
1.
스레드 생성
2.
메모리 공유
3.
스케줄링 및 실행
4.
동기화
5.
작업 완료 및 종료
SMT(Simutaneous Multithreading)
예시: 회사(프로세스)
•
팀1 ← 멀티 프로세스 ?
•
팀2
◦
팀원1 ← 쓰레드
▪
팀원1의 모니터 2대 ← SMT
◦
팀원2 ← 멀티 쓰레드
CPU 물리적 코어 하나로 여러 스레드를 동시에 실행하여 하드웨어 자원을 최대한 활용
•
하드웨어 수준에서 병렬 처리 성능을 극대화 하는 기술
특성 | Thread | Multithread | Simultaneous Multithreading (SMT) |
단위 | 단일 실행 흐름 | 하나의 프로세스 내 여러 스레드
// 하나 프로세스에서 여러 스레드 how??
//가능 할수있었던 것은
- 멀티코어, sw 기술 , switching | 하나의 물리적 코어 내 여러 논리 코어
// core 하나에 여러개 ← 내가 조사한게 이부분인것 가타.. 근데 결국엔 논리 cpu : thred 로 보면 1:1 비율인거지 |
병렬성 | 없음(단일 흐름) | 소프트웨어 레벨에서 병렬성 제공 | 하드웨어 레벨에서 병렬성 제공 |
메모리 공유 | 프로세스 메모리를 공유 | 스레드 간 메모리를 공유
//how??? | 논리 코어 간 일부 하드웨어 자원 공유 |
컨텍스트 스위칭 | 없음 | 단일 코어에서 스위칭 필요 | 스위칭 없이 동시 실행 가능 |
성능 | 기본 성능 제공 | 멀티코어에서 성능 향상 | CPU 자원을 최적 활용, 성능 극대화 |
Related Posts
Search