My Space

반응형

하나의 프로세스는 여러개의 스레드를 가질 수 있다.

- 하나의 process는 여러개의 thread를 가질 수 있고 thread가 process보다 좀 더 가벼우며, thread끼리는 같은 메모리 공간을 공유한다.

- process는 메모리 상에서 실행중인 프로그램을 말하고, thread는 process 안에서 실행되는 흐름의 단위를 말한다.

 

process : 자신만의 고유 공간과 자원을 할당받아 사용

thread : 다른 thread들과 공간과 자원을 공유하면서 사용

프로세스의 메모리 영역은 크게 code, data, stack, heap로 나뉜다.

code 영역 : 프로그램을 실행하기 위한 코드의 영역

data 영역 : 프로그램이 실행돼서 종료될 때까지 전역적 혹은 정적으로 필요한 변수들이 모인 영역

stack 영역 : 자료구조의 stack와 비슷하다. 함수들이 호출될 때마다 매개변수나 지역 변수들이 차곡차곡 쌓여있는 영역

heap 영역 : new나 malloc으로 생성된 객체들이 모여있는 영역(동적으로 할당되는 데이터)

 

프로세스의 문제점

- 생성시에 큰 오버헤드가 있다.(process 생성할때 많은 시간 소요)

- 컨텍스트 스위칭의 비효율성

- process 사이에 통신이 어려움

 

스레드가 생기게된 목적

- process보다 크기가 작은 실행 단위가 필요

- 빠른 컨텍스트 스위칭

- process들의 통신 시간, 방법 어려움 해소

 

멀티 태스킹

CPU하나에 프로세스가 두개가 동작한다고 했을 경우, CPU타임을 짧게 하여 두개의 프로세스가 번갈아가며 동작하게 만들어서 사용자가 느끼기엔 여러 프로그램이 동시에 동작되는 것처럼 인지.

그러나 실제로는 타임시간을 아주 짧게 쪼개서 프로세스가 번갈아가며 동작을 하는 것.

 

※ 멀티 태스킹의 부족함.

- 하나의 프로세스가 동시에 여러 작업을 수행 할 수 없다.

- 프로세스의 컨텍스트 스위칭은 무거운 작업이다. (서로다른 프로세스간의 교체)

- 프로세스끼리의 데이터 공유가 어렵다.

 

멀티 스레드

스레드는 CPU에서 실행되는 단위이다.(unit of execution)

이전에는 프로세스가 CPU에서 실행되는 단위였음.

 

하나의 프로세스에 하나 이상의 스레드가 존재할 수 있어서, 이를 통해 하나의 프로세스가 동시에 여러 작업을 실행 할 수 있다.

 

멀티 프로세싱

두 개 이상의 프로세서나 코어(CPU)를 활용하는 시스템

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading