본문 바로가기
Knowledge/CS

[CS] 프로세스와 스레드 개념, 차이

by YoonJong 2022. 11. 30.
728x90

먼저 프로그램이란 무엇일까?

프로그램은 어떤 작업을 위해 실행할 수 있는 파일을 의미한다.

 

프로세스(Process) 란?

 - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램

 - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적개체)

 - 운영체제(OS)로부터 시스템 자원을 할당받는 작업의 단위

 - 실행된 프로그램을 뜻한다.

 

 

프로세스는 각각 독립된 메모리 영영(Code, Data, Stack, Heap)  을 할당받는다.

프로세스 당 최소 1개의 스레드(메인스레드)를 가지고 있다.

각 프로세스는 별도의 주소 공간에서 실행되고, 다른 프로세스의 변수나 자료구조에 접근할 수 없다.

한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스간의 통신 (IPC , Inter - Process - Communication ) 을 사용해야 한다.

 


스레드(Thread) 란?

 - 프로세스 내에서 실행되는 여러 흐름의 단위 

 - 프로세스의 특정한 수행 경로

 - 프로세스가 할당받은 자원을 이용하는 실행의 단위

- 스레드는 프로세스 내에서 각각 stack 만 따로 할당받고, Code & Data & Heap 영역은 공유한다.

- 스레드는 한 프로세스 내에서 실행되는 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 스레드 끼리 공유 할 수 있다.

- 여러 스레드들은 힙 공간을 공유한다.

- 한 스레드가 프로세스 자원을 변경하면, 다른 스레드에서 변경 결과를 볼 수 있다.

 


멀티 프로세스

 - 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것

 

장점 

 - 하나의 프로세스가 장애가 나도 다른 작업은 정상적으로 진행된다

 

단점

 - 컨텍스트 스위칭

  ** CPU에서 여러 프로세스를 돌아가면서 처리하는 작업을 의미한다. 

  프로세스는 자원을 공유할 수 없기 때문에, 컨텍스트 스위칭이 발생하면 모든 데이터를 모두 리셋하고 다시 캐쉬정보를 불러와야 한다.

 

멀티 스레드

 - 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하는 것.

 - 윈도우, 리눅스 등 멀티 스레딩을 기본으로 하고 있다.

 

장점

 - 시스템 자원 소모 감소

 - 시스템 처리량 증가

 - 간단한 통신 방법으로 인한 프로그램 시간 단축

 

단점

 - 주의 깊은 설계 필요

 - 디버깅이 어렵다

 - 멀티 스레드의 경우에 자원 공유의 문제가 발생한다 ( 동기화 문제 )

 - 하나의 스레드에 문제가 생기면 전체 프로세스에 문제가 생긴다.

 

 

멀티 태스킹

 - OS 를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드간에 나누는 행동

 - 이를 통해서 여러 응용프로그램을 동시에 열고 작업할 수 있다.

 

CPU는 한번에 한가지 명령어 밖에 처리하지 못한다.

동시에 처리하는 것이 아닌, 재빠르게 프로세스들을 번갈아가면서 처리 , 관리하는 것이다.

 

 

 

 

참고 

https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37

 

Process와 Thread 이야기

프로세스(Process)

charlezz.medium.com

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

[OS] 프로세스와 스레드의 차이 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4

 

👩‍💻 프로세스 vs 쓰레드 차이 정리

프로세스(Process) 프로세스라는 명칭은 낯설수 있는데, 프로그램은 친숙하리라 생각된다. 우리가 흔히 말하는 프로그램이 실행되면 프로세스 인스턴스가 생성된다. 인스턴스가 생성된다는 의미

inpa.tistory.com

 

728x90

댓글