본문으로 바로가기

[리눅스] 프로세스와 쓰레드

category 운영체제/리눅스 2019. 9. 30. 23:27
반응형

오늘은 프로세스와 쓰레드에 대해 알아보겠습니다.

1. 프로그램은 무엇일까요?

 

우리가 자주 사용하는 구글브라우저, 계산기, 윈도우 탐색기 등을 프로그램이라 부릅니다.

 

프로그램의 정의는 실행이 가능한 파일입니다.

 

우리는 컴퓨터를 하면서 많은 프로그램을 사용하고 있습니다.

 

 

 

 

2. 프로세스란 무엇일까요?

 

운영체제에서 시스템 자원(CPU 시간, 주소 공간, 메모리 영역 등)을 할당받아 연속적으로 실행되고 있는 프로그램입니다.

 

 

 

프로세스는 CODE, DATA, STACK, HEAP 메모리 영역을 가지고 있습니다.

 

특징은 아래와 같습니다. 
1. 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받습니다.
2. 프로세스는 최소 1개의 쓰레드를 가지고 있습니다.
3. 프로세스는 독립적인 메모리 영역을 가지고 있기 때문에, 다른 프로세스에서 접근이 불가능합니다.
4. 프로세스가 다른 프로세스의 자원에 접근을 하려면 IPC를 사용해야합니다
->파일, 소켓, 공유메모리, 메세지큐 등

 

 

 

3. 쓰레드란?

프로세스 내에서 실행되는 작업의 단위입니다.

 

위의 그림은 쓰레드의 메모리 영역을 나타낸 것입니다.

 

쓰레드는 STACK 메모리 영역만 가지고 있습니다. 나머지 부분은 프로세스에 있습니다.

 

특징은 아래와 같습니다.
1. 프로세스와는 달리 독리적인 메모리 영역은 Stack이고, 나머지 Code, Data, Heap 영역은 프로세스 내에서 공유합니다.
2. 같은 프로세스내에서는 쓰레드들 간에 Code, Data, Heap 메모리 영역에 있는 값들은 공유가 가능합니다

반응형

댓글을 달아 주세요