728x90
반응형
SMALL
1. 프로세스 (Process)
정의: 프로세스는 운영체제에서 실행 중인 프로그램의 독립적인 단위입니다. 각각의 프로세스는 고유한 메모리 공간(코드, 데이터, 스택, 힙)을 가지고 있습니다.
메모리 구조:
- 코드 영역: 실행할 코드가 위치.
- 데이터 영역: 전역 변수나 정적 변수가 저장됨.
- 힙(Heap): 런타임 시 동적으로 할당되는 메모리 영역.
- 스택(Stack): 함수 호출 시 지역 변수나 매개 변수가 저장됨.
특징:
- 프로세스 간의 메모리 격리: 각각의 프로세스는 독립적인 메모리 공간을 사용합니다. 마치 각자 방을 사용하는 것처럼, 다른 프로세스의 메모리에 직접 접근할 수 없습니다. 이로 인해 한 프로그램에서 문제가 발생하더라도 다른 프로그램에 영향을 주지 않아요.
- IPC(Inter-Process Communication): 프로세스 간의 통신은 서로 다른 방에 있는 사람들이 편지나 전화를 통해 소통하는 것과 비슷해요. 파이프나 메시지 큐 같은 도구를 사용해 서로 정보를 주고받습니다.
2. 스레드 (Thread)
정의: 스레드는 프로세스 내에서 실행되는 작업의 단위입니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이 스레드들은 프로세스의 메모리 공간(코드, 데이터, 힙)을 공유합니다.
메모리 구조
- 공유: 코드, 데이터, 힙 영역을 다른 스레드와 공유. 여러 사람이 같은 방에서 일하는 것과 비슷해요.
- 개별 스택: 각 스레드는 독립적인 스택을 가집니다.
특징
- 스레드의 메모리 공유: 스레드는 같은 공간에서 일하기 때문에 메모리를 공유할 수 있습니다. 이로 인해 통신 속도가 빠르지만, 동시에 같은 자원을 사용할 때 충돌을 방지하기 위해 상호 배제(Mutual Exclusion)가 필요해요. 이는 자원을 사용할 때 "지금은 나만 사용해!"라고 표시하는 것과 같아요.
- 독립성과 문제 발생 시 영향: 스레드들은 같은 방에서 일하기 때문에, 한 스레드에서 문제가 발생하면 다른 스레드에도 영향을 줄 수 있어요. 마치 팀원 중 한 명이 실수로 데이터를 지워버리면 같은 방에 있는 다른 사람에게도 영향을 미치는 것처럼요.
차이점 요약
구분 | 프로세스 | 스레드 |
---|---|---|
메모리 공유 | 독립적인 메모리 공간 사용 | 같은 프로세스 내에서 메모리 공간을 공유 |
생성/종료 속도 | 스레드보다 느림 | 프로세스보다 빠름 |
통신 방법 | IPC 필요 (편지나 전화 같은 방식) | 직접 메모리 공유 (같은 방에서 대화) |
독립성 | 프로세스 간 독립적, 한 프로세스의 문제가 다른 프로세스에 영향 없음 | 한 스레드의 문제가 같은 프로세스 내 다른 스레드에 영향 |
반응형
SMALL
'운영체제' 카테고리의 다른 글
컨텍스트 스위칭(Context Switching)의 정의와 비용 (1) | 2024.10.26 |
---|---|
메모리 관리 기법(예: 페이징, 세그멘테이션) (1) | 2024.10.26 |
페이지 교체 알고리즘(예: LRU, FIFO, LFU)의 설명 (1) | 2024.10.26 |
데드락(Deadlock)의 개념과 해결 방법 (1) | 2024.10.26 |
멀티스레딩과 멀티프로세싱 차이점 (1) | 2024.10.26 |