본문 바로가기
ComputerScience/OS

[OS] Process Memory와 Thread

by seongju.lee 2022. 8. 3.

 

1. process란?

- process는 실행 중인 프로그램이라고 생각해도 무방하다.

하나의 프로그램이 실행될 때, 실행되고 있는 것을 프로세스라고 부르는 것.

 

1-1. Process의 메모리 공간

 

 
위 그림과 같이 프로세스를 위한 메모리 공간을 가진다.

 

각각의 프로세스는 이러한 메모리 구조를 독립적으로 가지게 된다.
독립적으로 가지기에 다른 프로세스에서의 접근이 불가하는 점이 있다. 안정성 보장을 위해서라도

각각의 프로세스는 각각 독립된 메모리 공간을 가지게 되는 것이다.

 

그렇다면, 독립된 실행객체인 프로세스 간 통신을 하고 싶을 때는 어떻게 해야 할까?

그 내용이 바로 IPC(Inter Process Communication)인 것이다.

 

 2. Thread

쓰레드는 하나의 실행 흐름이다.

프로세스를 구성하는 실행 흐름이기 때문에 다수로 처리할 수 있는 멀티쓰레드의 개념 또한 존재한다.

 

 2-1. Thread의 메모리 공간

출처:  https://mooneegee.blogspot.com/2015/01/os-thread.html

 

위 그림은 프로세스의 메모리 구조와 쓰레드의 메모리 구조를 비교해볼 수 있는 그림이다.

오른쪽 그림을 보면 하나의 프로세스 안에 3개의 쓰레드를 가지고 있다.

여기서 특징은 쓰레드의 메모리 구조는 Stack영역을 독립적으로 가지며,  Heap, Static, Code영역은 한 프로세스 내부에서 공유하고 있다.

 

이와 같은 쓰레드의 메모리구조 덕분에 한 프로세스 내부의 쓰레드들은 메모리를 공유하게 되는 것이다.

조금 더 자세하게는,

Code영역을 공유하기 때문에, 프로세스가 가지는 함수를 호출할 수 있다.

Data, Heap영역을 공유하기 때문에, 한 프로세스에 존재하는 A, B 쓰레드가 통신하기 위해서 Heap영역에 공간을 할당하고, 두 쓰레드가 접근하여 메모리를 공유한다.

 

 

 

* Reference

https://mooneegee.blogspot.com/2015/01/os-thread.html

'ComputerScience > OS' 카테고리의 다른 글

5. 프로세스 관련 시스템콜 & IPC  (0) 2022.12.28
4. 프로세스(2)  (0) 2022.12.26
3. 프로세스(1)  (0) 2022.11.08
2. 컴퓨터시스템 구조(2)  (0) 2022.11.06
1. 운영체제란 & 컴퓨터시스템 구조(1)  (0) 2022.11.02