본문 바로가기

프로그래밍/기본기ㆍ자료구조

스레드와 프로세스의 차이

728x90
반응형

# 프로세스

- 운영체제로부터 자원을 할당받은 작업의 단위

- 현재 실행 중인 프로그램의 인스턴스를 프로세스라고 보면 된다.

- 완전히 독립적이며 *자원을 다른 프로세스와 공유하지 않는다.

(공유하기 위해서는 *IPC 라는 방법을 사용해야 한다.)

- 독립적이기 때문에 다른 프로세스의 Code영역의 함수를 호출할 수 없다.

*자원

- CPU, 주소, Code, Data, Stack, Heap의 구조로 되어 있는 독립적인 메모리 영역

*IPC

- 프로세스 간 통신을 말한다. 프로세스들 사이에 서로 데이터를 주고 받는 행위

 

# 스레드

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

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

- 프로세스는 안정성 문제 때문에 다른 프로세스의 메모리에 접근할 수 없는데

이러한 프로세스의 한계를 해결하기 위해 만들어진 개념이다.

- 스레드간에 메모리를 공유하며 작동이 가능하다.

(스레드끼리 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되는 것)

- 기본적으로 하나의 프로세스에 하나의 스레드가 같이 생성된다.

 

# 멀티 태스킹

- 컴퓨터에서의 멀티 태스킹이란, 하나의 운영체제에서 동시에 여러개의 프로그램을 실행하여 사용하는 것을 말한다.

(유튜브를 보면서 블로그를 보는 것처럼)

- 사람 눈에는 동시에 처리되고 있는 것 같지만 사실은 아주 빠른 속도로 조금씩 번걸아가면서 작업을 처리하고 있다.

- 멀티 프로그래밍, 시분할, 실시간 시스템 방식으로 스케줄링 된다.

1. 멀티 프로그래밍

- 최대한 CPU를 많이 활용하도록 하는 시스템

- 단일 프로세서 상에서 여러 개의 프로그램이 동시에 실행되는 것

- OS의 통제하에 여러 프로그램이 일부씩 수행하는 것을 아주 빨리하여 동시에 일어나는 것처럼 보인다.

2. 시분할

- 다수의 프로그램이 거의 동시에 수행될 수 있도록 시간을 분할하는 것.

- 사용자의 자원을 위해 컴퓨터 응답 시간을 최소하하는 시스템

3. 실시간

- 데이터가 발생한 시점에서 필요한 계산처리를 즉석에서 처리하여 그 결과를 발생지로 되돌려 보내는 방식

# 멀티 프로세싱

- 여러 CPU에서 하나의 응용프로그램을 병렬로 실행하여 실행속도를 극대화시키는 것.

- 여러 개의 프로세스 중 하나에 문제가 발생 시 해당 프로세스만 종료되고 다른 프로세스는 영향을 받지 않는 장점이 있다.

- *Context Swiching에서 오버헤드가 발생한다.

(캐쉬 메모리 초기화 등 무거운 작업이 진행되어 많은 시간을 소모한다)

(프로세스는 독립적인 메모리 영역을 할당 받고 있어서 캐시에 있는 모든 데이터를 모두 리셋하고 다시 불러와야 한다)

*ContextSwitching

- CPU를 점유하고 있던 프로세스가 할당된 시간을 모두 사용한 후 새로운 프로세스로 교체되는 것.

 

# 멀티 스레드

- 하나의 프로세스에서 여러개의 스레드를 갖고 하나의 작업을 병렬 처리 하는 것.

- 멀티 프로세싱과 달리 Stack영역만 독립적이고 나머지 영역은 서로 공유하며 쓰기/읽기가 가능하다.

- 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.

(멀티 프로세싱의 경우 IPC라는 방법을 이용해야 서로 통신을 할 수 있는데 정보를 주고 받을 때 시스템 콜을 호출한다)

- Stack 영역을 제외하고 모든 메모리를 공유하기 때문에 Context Swiching이 빠르다.

 

다람쥐와 포동포동이

 

 

 

 

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관

chipmunk-plump-plump.tistory.com

반응형

'프로그래밍 > 기본기ㆍ자료구조' 카테고리의 다른 글

C# Random - System.Random  (0) 2021.02.16
메모리 풀과 오브젝트 풀  (0) 2021.02.11
C# string 비교 == 과 Equals()  (1) 2021.02.05
OOP 객체지향 5가지 원칙  (1) 2021.02.04
OOP 객체지향 4가지 특징  (0) 2021.02.03