Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 플러터
- 숙명여자대학교
- audioPlayer
- 백준
- C++
- GDSC Sookmyung
- 프로세스
- ICPC Sinchon
- swift
- dalgona
- SMUPC
- CodeForces
- DART
- ALGOS
- 신촌연합
- Flutter
- formatTime
- 2024 하반기
- Dart 문법
- People's Choice Award
- 1260 c++
- BOJ1260
- Solution Challenge
- 운영진
- 알고리즘
- ZeroZone
- 스레드
- 운영체제
- 프로그래머스
Archives
- Today
- Total
Whaeun Story
멀티 스레드와 멀티 프로세스 본문
1. 멀티 스레딩
멀티 스레딩은 운영체제가 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 말한다.
1.1 스레드가 포함하고 있는 내용
- 스레드 수행 상태 (수행, 준비 등)
- 수행 중이 아닐 때 저장되어 있는 스레드 문맥
- 수행 스택
- 지역 변수 저장을 위해 각 스레드가 사용하는 정적 저장소
- 프로세스의 메모리 및 자원에 대한 접근으로, 메모리 및 자원은 프로세스 내의 모든 스레드에 의해 공유됨
1.2 멀티 스레딩의 장점
- 시스템의 자원 소모가 감소하여 자원의 효율성이 늘어나고 시스템의 처리율이 행상되며 처리 비용이 감소한다.
- 스레드 간 작업량이 적어 캐시 메모리를 비울 필요가 없으며 문맥 교환이 빠르다.
- 프로세스 내 스택 영역을 제외한 메모리 영역을 공유하고 있어 통신하는데 드는 비용이 적다.
1.3 멀티 스레딩의 단점
한 프로세스 내의 모든 스레드들은 동일 주소 공간 및 전역 변수, 파일, 힙 영역과 같은 자원들을 공유한다. 따라서 공유 자원에 대해서 동시 접근을 하게 될 경우, 병목현상, 데드락과 같은 동기화 문제가 발생할 수 있다.
- 한 공유 변수에 대해 읽기 연산은 동시 접근이 가능하나, 쓰기 연산은 한 순간에 하나만 가능하다. 쓰기 연산 중인 값을 읽어들이려 할 경우, 잘못된 값을 얻어 올 수 있다.
2. 멀티 프로세싱
두 개 이상의 프로세스가 협력하여 하나 이상의 작업을 동시에 처리하는 것을 의미한다.
2.1 멀티 프로세싱의 장점
- 독립된 구조로 이루어져 있어 안전성이 높다.
- 프로세스 중 하나에 문제가 생기더라도 다른 프로세스에 영향을 주지 않기 때문에 작업이 중지되지 않는다.
2.2 멀티 프로세싱의 단점
- 독립된 메모리 영역이기 때문에 작업량이 많을 경우, 오버헤드가 발생해 성능저하가 생길 수 있다.
- 문맥 교환 과정에서 캐시 메모리 초기화와 같은 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생한다.
3. 멀티 스레드와 멀티 프로세스
- 멀티스레드는 멀티 프로세스보다 작은 메모리 공간을 차지하고 문맥 교환이 빠른 장점이 있지만, 동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료될 수 있다는 위험을 가지고 있다.
- 멀티 프로세스는 하나의 프로세스가 죽어도 다른 프로세스에 영향을 주지 않아 안전성이 높지만, 멀티 스레드보다 많은 메모리 공간과 CPU시간을 차지한다.
참고 자료 📚
📚'공부 > CS 스터디' 카테고리의 다른 글
CPU 스케줄러 (0) | 2022.11.04 |
---|---|
스케줄러 (0) | 2022.11.04 |
웹 통신의 큰 흐름 (4) | 2022.10.31 |
DNS Round Robin (0) | 2022.10.31 |
프로세스와 스레드 (0) | 2022.10.30 |