프로세스(Process)와 스레드(Thread)
프로세스(Process) : 운영체제로부터 할당 받은 작업의 단위
스레드(Thread) : 프로세스가 받은 자원을 이용하는 실행 흐름의 단위
쉽게 말하면 프로세스 안에 스레드가 있는 것이다.
프로세스는 최소 1개 이상의 스레드를 보유하게 되며, 프로세스는 별도의 주소 공간을 독립적으로 받는다.
스레드는 이 중 stack 영역을 따로 받게 되고 나머지 부분은 공유하게 된다.
자주 사용하는 크롬 브라우저를 실행하면 프로세스 하나가 생성된다.
여러 개의 탭을 생성하면 각각의 탭이 하나의 스레드인 것이다.
프로세스 자원 구조
- code 영역 : 프로그래머가 작성한 프로그램 함수들의 코드가 기계어의 형태로 저장 되어 있다.
- data 영역 : 코드 실행 시 사용하는 전역 변수나 각종 데이터들이 모여 있다.(.data / .rodata / .bss)
- stack 영역 : 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적인 공간. 함수 호출 시 할당되며 완료되면 소멸된다.
- heap 영역 : 생성자, 인스턴스와 같은 동적으로 할당되는 데이터들을 위해 존재하는 영역.
stack & heap 영역은 프로세스 실행 중 늘어났다가 줄어들기도 하는 동적인 영역이다.
스레드 구조
스레드는 stack 영역만을 독립적으로 할당 받고 나머지 영역들은 서로 공유하며 작업을 진행한다.
멀티 프로세스 (Multi-Process)
하나의 프로그램을 여러 프로세스로 나누어 각각의 프로세스가 하나의 작업을 처리하게 한다.
CPU는 한번에 한가지 명령어만 처리 가능하기 때문에 빠른 속도로 프로세스를 번걸아가면서 실행하고 관리한다.
이 과정을 Context Switching이라고 한다.
Context Switching
프로세스의 상태를 PCB(Process Control Block)에 보관하고, 다음 순서의 프로세스가 동장하고 이전 PCB에 보관한 프로세스의 상태를 복구하는 작업.
PCB(Process Control Block)
운영체제에서 프로세스를 관리하기 위해 해당 프로세스의 상태 정보를 담고 있는 자료구조를 뜻한다.
프로세스 스케줄링을 위해 프로세스의 모든 정보를 저장하는 임시 저장소이다.
프로세스 생성 시 만들어지며 종료 시 삭제 된다.
장점
- 한 프로세스가 비정상적으로 종료되어도 다른 프로세스에 영향을 미치지 않아 프로그램 안정성이 확보 된다.
- 프로세스는 독립적이기에 새로운 기능, 모듈 추가 시 다른 프로세스에 영향을 주지 않는다.
단점
- Context Switching OverHead 발생 가능 : PCB를 저장하고 복원하는데 비용이 발생하고 메모리 접근 시간 등이 늘어나 성능 저하 가능성이 있음.
- 프로세스는 독립적이기 때문에 늘어 날 수록 메모리 사용량이 증가하게 된다.
멀티 스레드 (Multi-Thread)
하나의 프로세스 안에 여러 개의 스레드를 두는 것을 말한다.
이로 인해 하나의 프로그램에서 두가지 이상의 동작을 동시에 처리 가능해진다.
장점
- 하나의 프로세스의 자원을 공유하기 때문에(code, data, heap) 시스템 자원 소모를 최소화 할 수 있다.
- 스레드 간 통신이나 자원 공유가 용이하고 가볍기 때문에 응답시간이 빠르다.
단점
- 하나의 스레드에서 문제가 발생하면 다른 스레드들에 영향을 미치기 때문에 안정성에 문제가 있다.
- 자원 공유로 인해 여러 개의 스레드가 동시에 접근하면 동기화 문제가 발생 할 수 있다.
- 여러 개의 스레드가 서로 대기하면서 교착상태가 발생 할 수 있다.
출처 및 참고
👩💻 완전히 정복하는 프로세스 vs 스레드 개념
한눈에 이해하는 프로세스 & 스레드 개념 전공 지식 없이 컴퓨터의 프로그램을 이용하는데는 문제 없어 왔지만 소프트웨어를 개발하는 사람으로서 컴퓨터 실행 내부 요소를 따져보게 될때, 아
inpa.tistory.com
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-multi-process-multi-thread
👩💻 멀티 프로세스 vs 멀티 스레드 비교 💯 완전 총정리
멀티 프로세스와 멀티 스레드는 한 어플리케이션에 대한 처리방식 이라고 보면 된다. 단순히 프로그램을 여러개 띄워놓는 것이 멀티 프로세스가 아니라 이 둘은 언제 어느때에 어떤 방식으로
inpa.tistory.com
https://trumanfromkorea.tistory.com/51
[운영체제] 프로세스와 스레드 (Process & Thread)
프로세스 개념 프로세스는 메모리에 올라와 실행되고 있는 프로그램의 독립 객체를 말합니다. 우리가 프로그램을 실행시키면 프로세스 객체가 생성됩니다. 이는 프로그램 실행에 필요한 내용
trumanfromkorea.tistory.com
'간단이론정리' 카테고리의 다른 글
[OOP] 객체 지향 4대 특징 및 객체 지향 5대 원칙(SOLID) (0) | 2024.06.20 |
---|---|
[OOP] 디자인 패턴(Design Pattern) 정리 (0) | 2024.06.20 |
Filter, Interceptor 그리고 AOP (0) | 2024.06.12 |
트랜잭션 격리수준(Isolation Level) (0) | 2024.06.11 |
HTTP Method 정리하기 (0) | 2024.05.25 |