📍1. 스레드
✔️ 하나의 프로세스 내에 있는 수행 흐름임
📍2. 멀티스레드 응용 프로그램
✔️ 하나의 프로세스 안에 여러 개의 스레드가 있는 것을 말함
웹서버는 대표적인 멀티 스레드 응용프로그램임
✔️ 사용자가 서버 DB에 자료를 요청하는 동안 서버의 다른 기능을 이용할 수 있음
✔️ 멀티 스레드 웹브라우저
단일 탭 또는 창 내에서 브라우저 이벤트 루프, 네트워크 처리, I/O 및 기타 작업을 관리하고 처리함
📍3. 멀티 스레드 응용프로그램의 장점
1️⃣ 스레드는 프로세스보다 가벼움
✔️ 스레드는 스택 영역을 제외한 나머지 영역을 서로 공유하기 때문에 기본적으로 내장되어 있는 데이터 용량이 프로세스보다 작음
✔️ 스레드는 프로세스 내에서 생성되기 때문 에스 레드의 수행환경을 설정하는 작업이 매우 간단하여 생성 및 종료가 빠름
2️⃣ 자원의 효율성
✔️ heap 영역과 같은 공유 메모리에 대해 스레드 간에 자원 공유가 가능
✔️ IPC을 사용하지 않고도 데이터를 공유할 수 있음
✔️ 자원의 효율적인 활용이 가능해 시스템 자원 소모가 줄어듦
3️⃣ 컨텍스트 스위칭 비용 감소
✔️ 스레드 스위칭할 때 스레드 간에 공유하는 자원을 제외 한스 레드 정보(스택, 레지스터)만을 교체하면 됨
4️⃣ 응답시간 단축
✔️ 스레드 간의 통신이나 자원 공유가 더욱 용이하고, 스위칭 오버헤드가 적어 응답시간이 프로세스보다 빠름
✔️ 웹서버에서 클라이언트 요청을 처리하는 경우, 하나의 스레드를 생성하여 요청을 처리하므로,
오버헤드가 감소해 더욱 빠른 응답시간을 보장할 수 있음
✔️ 멀티 코어 환경에서 멀티 스레드를 사용하여 작업을 처리하는 것이 더 효율적임
📍4. 멀티 스레드 응용프로그램의 단점
1️⃣ 안정성 문제
✔️ 멀티 스레드 모델에서는 기본적으로 하나의 스레드에서 문제가 발생하면 다른 스레드들도 영향을 받아 전체 프로그램이 종료될 수 있음
✔️ 예방 방법
- 에러가 발생할 경우 이에 대한 적절한 예외 처리 설정
- 에러 발생 시 새로운 스레드를 생성하거나 스레드 풀에서 잔여 스레드를 가져오던 지하여 프로그램 종료를 방지할 수 있음
2️⃣ 동기화로 인한 성능 저하
✔️ 여러 개의 스레드가 공유자원에 동시에 접근할 수 있기 때문에 동기화 문제가 발생함
➡️ 데이터 접근을 제어하기 위한 필수적인 기술이 필요
✔️ 동기화 작업은 자원에 대한 순차적인 접근을 강요하기 때문에 성능이 저하될 가능성이 높음
3️⃣ 데드락
✔️ 공유자원에 대한 동시 접근 문제를 해결하기 위해 자원관리 정책인 상호배제, 점유와 대기, 비선점 조건을 보장한 결과 발생함
✔️ 멀티 프로세스 모델에서도 발생함
4️⃣ 디버깅이 어려움
✔️ 여러 개의 스레드가 동시에 수행되기 때문에, 각 스레드의 동작을 추적하기 어려울 수 있음
✔️ 어떤 스레드가 언제 어떤 자원에 접근하고, 어떤 순서로 수행되는지 등을 파악하기 어려움
'운영체제' 카테고리의 다른 글
[운영체제] 7. 교착상태 - (2) 교착상태 해결 (0) | 2025.05.01 |
---|---|
[운영체제] 7. 교착상태 - (1) 교착상태 개념 (0) | 2025.05.01 |
[운영체제] 4. 스레드 관리 - (4) 멀티코어와 멀티스레딩 (0) | 2025.04.17 |
[운영체제] 4. 스레드 관리 - (3) 스레드 구현 유형 (2) | 2025.04.17 |
[운영체제] 4. 스레드 관리 - (2) 스레드 주소 공간과 컨텍스트 (0) | 2025.04.17 |