프로세스
- 프로그램은 실제 실행하기 전까지는 단순한 파일에 불과하다.
- 프로그램을 실행하면 프로세스가 만들어지고 프로그램이 실행된다.
- 이렇게 운영체제 안에서 실행 중인 프로그램을 프로세스 라 한다.
- 프로세스는 실행 중인 프로그램의 인스턴스이다.
- 자바 언어로 비유를 하자면 클래스는 프로그램이고, 인스턴스는 프로세스이다.
프로세스는 실행 중인 프로그램의 인스턴스이다. 각 프로세스는 독립적인 메모리 공간을 갖고 있으며, 운영체제에서 별 도의 작업 단위로 분리해서 관리된다. 각 프로세스는 별도의 메모리 공간을 갖고 있기 때문에 서로 간섭하지 않는다. 그 리고 프로세스가 서로의 메모리에 직접 접근할 수 없다. 프로세스는 이렇듯 서로 격리되어 관리되기 때문에, 하나의 프 로세스가 충돌해도 다른 프로세스에는 영향을 미치지 않는다. 쉽게 이야기해서 특정 프로세스(프로그램)에 심각한 문제 가 발생하면 해당 프로세스만 종료되고, 다른 프로세스에 영향을 주지 않는다.
프로세스의 메모리
- 구성코드 섹션 : 실행할 프로그램의 코드가 저장되는 부분
- 데이터 섹션: 전역 변수 및 정적 변수가 저장되는 부분(그림에서 기타에 포함)
- 힙 (Heap) : 동적으로 할당되는 메모리 영역
- 스택 (Stack) : 메서드(함수) 호출 시 생성되는 지역 변수와 반환 주소가 저장되는 영역(스레드에 포함)
스레드 (Thread)
프로세스는 하나 이상의 스레드를 반드시 포함한다.
스레드는 프로세스 내에서 실행되는 작업의 단위이다. 한 프로세스 내에서 여러 스레드가 존재할 수 있으며, 이들은 프로세스가 제공하는 동일한 메모리 공간을 공유한다. 스레드는 프로세스보다 단순하므로 생성 및 관리가 단순하고 가볍다.
메모리 구성
- 공유 메모리 : 같은 프로세스의 코드 섹션, 데이터 섹션, 힙(메모리)은 프로세스 안의 모든 스레드가 공유한다.
- 개별 스택: 각 스레드는 자신의 스택을 갖고 있다.
프로그램을 실행하면 운영체제는 먼저 디스크에 있는 파일 덩어리인 프로그램을 메모리로 불러오면서 프로세스를 만든 다. 프로그램이 실행된다는 것은 사실 프로세스 안에 있는 코드가 한 줄씩 실행되는 것이다.
스레드는 프로세스 내에서 실행되는 작업의 단위이다. 한 프로세스 내에 하나의 스레드가 존재할 수 있고, 한 프로세스 내에 여러 스레드가 존재할 수도 있다. 그리고 스레드는 프로세스가 제공하는 동일한 메모리 공간을 공유한다.
- 단일 스레드 : 한 프로세스 내에 하나의 스레드만 존재
- 멀티 스레드 : 한 프로세스 내에 여러 스레드가 존재
하나의 프로세스 안에는 최소 하나의 스레드가 존재 한다. 그래야 프로그램이 실행될 수 있다.
멀티스레드가 필요한 이유 : 하나의 프로그램도 그 안에서 동시에 여러 작업이 필요하다.
'운영체제' 카테고리의 다른 글
컨텍스트 스위칭 (0) | 2024.11.17 |
---|---|
Thread - Scheduling,Thread (0) | 2024.11.17 |
Thread - 멀티태스킹 + 멀티프로세싱 (0) | 2024.11.17 |
주소 바인딩 (0) | 2024.06.14 |
교착상태 (0) | 2024.06.14 |