1. 멀티스레딩 (Multithreading)
정의: 하나의 프로세스 내에서 여러 스레드를 사용해 동시에 여러 작업을 수행하는 방식입니다. 모든 스레드는 하나의 메모리 공간을 공유하면서 실행됩니다.
쉽게 말하면 한 사무실(프로세스) 안에 여러 직원(스레드)이 있고, 각 직원이 동시에 다양한 일을 하는 상황과 비슷합니다. 이때, 이 직원들은 사무실 내의 모든 자료(메모리)를 함께 사용합니다.
장점
자원 효율성
모든 스레드가 같은 메모리 공간을 공유하므로, 메모리 사용량이 줄어듭니다. 즉, 추가적인 메모리 공간을 할당하지 않아도 되니 자원을 덜 씁니다.
- 쉽게 말하면 같은 자료실을 여러 직원이 함께 사용하면 새로운 자료실을 만들 필요가 없는 것과 같아요.
빠른 통신
스레드 간 통신이 메모리 공유를 통해 이루어져, 데이터 교환 속도가 빠릅니다.
- 쉽게 말하면 한 사무실 안에서는 직원들이 말로 대화하는 것처럼, 자료를 빠르게 주고받을 수 있습니다.
응답성 향상
사용자와의 인터랙션이 중요한 프로그램(예 게임, GUI 프로그램)에서 멀티스레딩을 사용하면, 사용자 인터페이스가 멈추지 않고 응답성을 유지할 수 있습니다.
- 쉽게 말하면 게임을 하면서 동시에 그래픽을 처리하고, 사용자의 입력에 반응하는 걸 생각하면 돼요.
단점
동기화 문제
스레드가 같은 메모리 공간을 공유하기 때문에, 동시에 같은 데이터를 수정하면 오류가 발생할 수 있어요. 이를 해결하려면 상호 배제(Mutual Exclusion)와 같은 기법이 필요합니다.
- 쉽게 말하면 여러 직원이 같은 자료를 동시에 수정하려고 하면 자료가 꼬일 수 있어요. 그래서 누가 언제 자료를 사용할지 정해야 합니다.
디버깅 복잡성
여러 스레드가 동시에 실행되기 때문에, 버그가 발생하면 원인을 찾기가 어려울 수 있습니다.
- 쉽게 말하면 여러 사람이 동시에 말하면 누가 무엇을 잘못했는지 알아내기 어려운 것과 같아요.
2. 멀티프로세싱 (Multiprocessing)
정의: 여러 개의 프로세스를 사용해 동시에 작업을 수행하는 방식입니다. 각 프로세스는 독립적인 메모리 공간을 사용하고, 서로 간섭하지 않습니다.
쉽게 말하면 여러 사무실(프로세스)에 각각 한 명의 직원이 있고, 각 직원이 다른 사무실에서 독립적으로 일을 하는 상황과 비슷합니다. 이때, 각 사무실(프로세스)은 독립적인 자료실(메모리)을 사용합니다.
장점
안정성
각 프로세스는 독립적인 메모리 공간을 가지기 때문에, 한 프로세스가 문제가 생겨도 다른 프로세스에 영향을 미치지 않습니다.
- 쉽게 말하면 한 사무실에서 문제가 생겨도 다른 사무실에 영향이 없어서, 회사 전체에 큰 문제가 생기지 않아요.
병렬 처리 능력
멀티코어 CPU에서는 여러 프로세스를 동시에 실행시켜, 실제로 여러 작업을 동시에 병렬로 처리할 수 있습니다.
- 쉽게 말하면 여러 사무실이 각자 독립적으로 동시에 일하면 회사의 전체 작업 처리 속도가 빨라져요.
CPU 집중 작업에 적합
계산량이 많은 작업을 여러 프로세스에 나누어 처리할 때 효과적입니다.
- 쉽게 말하면 수학 문제를 풀 때 한 사람에게 모두 맡기기보다는, 여러 사람에게 나눠주면 전체적으로 더 빠르게 풀 수 있는 것과 같아요.
단점
높은 메모리 사용
각 프로세스가 독립적인 메모리 공간을 가지기 때문에, 메모리 사용량이 많아집니다.
- 쉽게 말하면 각 사무실마다 별도의 자료실을 두면 공간이 많이 필요해지는 것처럼, 메모리가 더 필요해요.
프로세스 간 통신 비용
서로 다른 프로세스가 데이터를 주고받으려면 IPC 같은 통신 방법을 사용해야 해서, 속도가 느리고 복잡할 수 있습니다.
- 쉽게 말하면 각 사무실이 편지나 전화로 소통하는 건 한 사무실 내에서 대화하는 것보다 느리고 불편해요.
프로세스 생성/종료 속도
새로운 프로세스를 생성하거나 종료하는 속도가 스레드보다 느립니다.
- 쉽게 말하면 새 사무실을 만들고 없애는 게, 사무실 안에서 새로운 직원 한 명을 뽑고 내보내는 것보다 시간이 오래 걸려요.
멀티스레딩과 멀티프로세싱의 차이 요약
구분 | 멀티스레딩 | 멀티프로세싱 |
---|---|---|
메모리 사용 | 하나의 프로세스 내에서 메모리 공유. 효율적이지만 충돌 위험 있음. | 각 프로세스가 독립적인 메모리 사용. 안정적이나 메모리 소모 많음. |
통신 속도 | 빠름 (메모리 공유) | 느림 (IPC 사용 필요) |
안정성 | 한 스레드의 오류가 프로세스 전체에 영향을 줄 수 있음. | 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않음. |
생성/종료 속도 | 스레드 생성과 종료가 빠름. | 프로세스 생성과 종료가 느림. |
적합한 작업 | I/O 작업 (예 웹 서버, 게임) | 계산량이 많은 작업 (예 영상 처리, 데이터 분석) |
쉽게 요약
- 멀티스레딩은 한 방 안에서 여러 직원이 같이 일하는 거라서 자료를 쉽게 공유하지만, 서로 충돌하지 않도록 주의해야 합니다.
- 멀티프로세싱은 여러 방에서 각자 일하는 거라서 더 안정적이고 강력하지만, 각 방이 독립적이라 공간(메모리)이 많이 필요하고 대화(통신)도 더 어렵습니다.
'운영체제' 카테고리의 다른 글
컨텍스트 스위칭(Context Switching)의 정의와 비용 (1) | 2024.10.26 |
---|---|
메모리 관리 기법(예: 페이징, 세그멘테이션) (1) | 2024.10.26 |
페이지 교체 알고리즘(예: LRU, FIFO, LFU)의 설명 (1) | 2024.10.26 |
데드락(Deadlock)의 개념과 해결 방법 (1) | 2024.10.26 |
프로세스와 스레드 차이점 (0) | 2024.10.26 |