Program
명령어의 집합으로, 어떤 작업을 수행하기 위한 파일입니다.
Process
운영체제로부터 시스템 자원을 할당받는 작업의 단위이고, 실행된 프로그램을 의미합니다.
각각의 프로세스는 코드, 데이터, 스택, 힙 영역을 포함하는 독립적인 메모리 공간을 할당받습니다.
프로세스가 사용하는 메모리 공간은 다음과 같습니다.
1. 코드 영역:
- 프로그램의 실제 실행 코드가 저장되는 영역.
- 읽기 전용으로 되어있어서 프로그램이 실행중에 수정할 수 없습니다.
2. 데이터 영역(static영역이라고도 함):
- 전역변수와 정적변수가 저장되는 영역.
- 초기화된 데이터와 초기화되지 않은 데이터 포함허묘ㅡ 프로그램 실행 도중에 값을 변경 가능합니다.
3. 스택 영역:
- 함수 호출과 관련된 정보를 저장하는 영역.
- 지역변수와 함수 호출 정보가 스택에 저장되며, 지역변수, 매개변수, 스택 프레임등이 저장됩니다.
- LIFO 구조이며, 함수 호출시 새 프레임이 스택의 상단에 추가됨.함수가 반환될 때 해당 프레임이 제거됩니다.
4. 힙 영역:
- 동적 할당된 데이터가 저장되는 영역.
- 주로 동적 데이터 구조나 객체를 저장할때 쓰입니다.
Multi Process
하나의 응용 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 Task를 수행하는 것을 의미합니다
프로세스는 각각의 독립된 메모리 영역을 할당받아서, 하나의 프로세스가 문제가 생기면 자식 프로세스를 제외하곤 다른 프로세스에 영향을 끼치지 않습니다. 또한 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없습니다.
Thread
프로세스가 할당 받은 자원을 이용하는 실행 단위로, 한개의 프로세스는 하나 이상의 스레드를 포함할 수 있습니다. 위에서 설명한 메모리 구조에서 stack형식으로 할당된 메모리 영역은 따로 할당받고, code, data, heap메모리 영역은 서로 공유합니다. 따라서 한 스레드가 프로세스의 자원을 변경하면, 다른 이웃 스레드도 변경된 사항을 확인할 수 있게 됩니다.
Multi Thread
하나의 프로그램을 여러개의 스레드로 구성하여, 각 스레드가 하나의 작업을 처리하도록 합니다. 스레드는 프로스세내의 stack영역을 제외한 모든 메모리를 공유하기 때문에, 통신의 부담이적어서 프로그램 응답시간을 단축시킬 스 있습니다. 단점은 동기화를 제대로 진행하지 않는다면, 하나의 스레드에 문제가 생기면 전체 프로세스에 문제가 생길 수 도 있습니다.
즉, 결론적으로 프로세스와 스레드의 차이는각각의 프로세스는 자신만의 별도 주소공간을 독립적으로 할당받는 반면, 스레드는 다른 스레드와 공간(data, heap, code영역)을 공유하면서 사용합니다.
'CS > Operating Systems' 카테고리의 다른 글
데드락과 데드락을 해결하는 방안 (0) | 2023.09.10 |
---|---|
Context Switching (0) | 2023.09.10 |
동시성과 병렬성 (0) | 2023.09.01 |
교착 상태 (0) | 2021.09.26 |
프로세스 주소공간 (0) | 2021.08.18 |