프로세스
프로그램을 메모리 상에서 실행중인 작업
프로세스마다 최소 1개의 스레드를 소유
하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드를 같이 생성
프로세스는 각각 별도의 독립적인 주소공간 할당
1. Code : 코드 자체를 구성하는 메모리 영역 ( 프로그램 명령)
2. Data : 전역변수, 정적변수, 배열 등
3. Heap : 동적 할당 시 사용
4. Stack : 지역변수, 매개변수, 리던 값 (임시 메모리 영역)
스레드
프로세스 안에서 실행되는 여러 흐름 단위
스레드는 Stack만 따로 할당 받고, 나머지 영역은 공유
멀티 프로세스
하나의 프로그램을 여러개의 프로세스로 구성하여, 각 프로세스가 병렬적으로 작업 수행
- 장점
- 안정성 (메모리 침범 문제 ➡️ OS 차원에서 해결)
- 단점
- 각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을 수록 과부하 발생.
(Context Switching으로 인한 성능 저하)
- 각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을 수록 과부하 발생.
Context Switching
운영체제에서 CPU가 여러 프로세스를 동시 실행할 때, 각 프로세스를 저장하고 복원하는 과정.
멀티 스레드
하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리.
➡️ 스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리
- 장점
- 멀티 프로세스에 비해 멀티 스레드의 공유 메모리만큼의 시간, 자원 손실이 감소
- 전역 변수와 정적 변수에 대한 데이터 공유 가능
- 단점
- 안정성 문제
하나의 스레드가 데이터 공간을 망가뜨리면, 모든 스레드가 작동 불능
- 안정성 문제
Critical Section ➡️ 멀티스레드의 안정성 대비
하나의 스레드가 공유 데이터 값을 변경할 때, 다른 스레드가 동시에 그 값을 읽으려할 때 발생하는 문제를 해결하기 위한 동기화 과정
상호 배제, 진행, 한정된 대기를 충족해야함
참고 출처
https://gyoogle.dev/blog/computer-science/operating-system/Process%20vs%20Thread.html
'CS' 카테고리의 다른 글
[컴퓨터구조] 총정리 (0) | 2024.03.10 |
---|---|
[JAVA] 객체 지향 설계의 5원칙 - SOLID 정리 (0) | 2024.03.10 |
운영체제 정리! -2 (0) | 2024.03.10 |
자료 구조 - 트리 구조 정리 (0) | 2024.03.07 |
운영체제 - 기초 (0) | 2024.03.07 |