* 프로세스( Process )
- 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태
* Multi Process
- OS를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드 간에 나누는 행위.
* 각 구조의 특징
- code : 프로그래머가 작성한 프로그램이 코드영역에 작성
- stack : 코드가 실행되면서 사용한 변수나 파일들의 각종 데이터들이 모여있음
- data : 호출한 함수가 종료되면 되돌아올 메모리 주소를 스택에 저장하거나 변수 사용 범위에 영향을 미치는 영역을 구현 할때 사용한다.
- heap : 동적으로 할당되는 데이터들을 위해 존재하는 공간.
- code와 data 영역은 선언할때 크기가 결정되는 정적 영역이지만, stack과 heap 영역은 실행되는 동안 크기가 늘어났다 줄어들기도 하는 Dynamic한 영역.
* 스레드 (Thread)
- 스레드는 어떠한 프로그램 내에서, 특히 프로세스내에서 실행되는 흐름의 단위.
- 하나의 프로그램은 하나 이상의 프로세스를 가지고 있고, 하나의 프로세스는 반드시 하나 이상의 스레드를 갖는다.
- 스레드는 프로세스 내에서 각각 stack만 따로 할당받고, code, data, heap 영역은 공유한다. 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 같은 프로세스 안에 있는 여러 스레드들은 같은 heap 공간을 공유함.
* 멀티 프로세스
- 멀티 프로세스란 하나의 프로그램이 여러개의 프로세스로 구성되며, 각 프로세스가 하나의 작업을 처리하는 것.
* 멀티 프로세스의 특징
- 안정성이 좋다. 여러 개의 자식 프로세스 중 하나에 문제가 발생해도, 다른 자식 프로세스에 영향이 확산되지 않는다.
- 구현이 비교적 간단하고, 각 프로세스들이 독립적으로 동작하며 자원의 서로 다르게 할당됨.
- 메모리 사용량이 많음
- 스케쥴링에 따른 Context Switch 가 많아지고, 성능 저하의 우려가 존재함.
* 멀티 스레드
- 하나의 프로그램을 여러 개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다.
* 멀티 스레드의 특징
- 응답성이 좋다.
- 구현 및 디버깅이 어렵다.
- 동기화 및 교착상태가 발생하지 않도록 주의해야함.
'Computer Science > OS' 카테고리의 다른 글
Call by Value 와 Call by Reference 란? (0) | 2024.11.18 |
---|