🌟프로세스 생명주기와 프로세스 메모리
💻 프로그램과 프로세스
0-1. 프로그램이 저장되는 곳
- 프로그램은 보조 기억장치에 저장됩니다. 예를 들어, 카카오톡 💬은
C://Applications/KakaoTalk.app에 저장되죠.
0-2. 프로그램이 로딩되는 곳
- 실행될 때, 주 기억장치로 로딩됩니다. 맥북에서 활성 상태 보기에서 메모리 사용 상태를 확인할 수 있어요.
0-3. 프로세스를 실행하는 주체
- 실행 중인 프로그램은 프로세스입니다. 예를 들어, 카카오톡을 실행하는 프로세스는 CPU에서 동작해요.
0-4. 작업을 처리하는 쓰레드
- 프로세스 내에서 쓰레드가 작업을 처리합니다. 예를 들어, 메시지 발송 📤을 처리하는 쓰레드와 수신📥을 처리하는 쓰레드가 각각 있죠.
🔄 프로세스 상태 변화
1. 상태 변화와 스케줄링
- 프로세스 상태 변화는 스케줄링에 따라 이루어집니다. 상태 변화의 기본 흐름은 다음과 같습니다:
- 수행 → 대기 (Running → Waiting): I/O 요청 발생 시
- 수행 → 준비 (Running → Ready): 인터럽트 발생 시
- 수행 → 종료 (Running → Terminate): 프로세스 종료 시
2. 예시
- 카카오톡 💬 메시지를 보내는 경우, 프로세스는
준비 상태가 됩니다. 이후 CPU 스케줄링에 따라 수행 상태로 변하며, 메시지 발송이 이루어집니다.
🧠 프로세스 생명주기
- 프로세스는 다음과 같은 상태를 거칩니다:
- 신규 (New): 메모리에 올라온 상태
- 준비 (Ready): 실행 준비 완료
- 수행 (Running): CPU에서 실제로 수행 중인 상태
- 대기 (Waiting): I/O 작업 대기 중인 상태
- 종료 (Terminated): 실행 완료 후 메모리 해제 상태
⚙️ 스케줄링 종류
1. Job Scheduler (Long Term)
- 메모리에 올라갈 프로세스를 선택하는 스케줄러로, 자주 발생하지 않으며 메모리 가득 찼을 때 주로 사용됩니다.
2. CPU Scheduler (Short Term)
- Ready Queue에 있는 프로세스 중, 어떤 프로세스가 CPU를 사용할지를 결정하는 중요한 스케줄러입니다. 1초에도 수십 번 일어날 수 있어요.
3. Device Scheduler
- I/O 장치를 사용하는 순서를 결정합니다. 예를 들어, 프린터, 키보드, 마우스 등의 장치가 이에 해당하죠.
🛠️ Swapping
- Swapping은 메모리 관리 기법으로, 오래 동작하지 않은 프로세스를 HDD로 내리고, 다시 필요할 때 메모리로 올리는 작업입니다.
- Swap Out: 메모리에서 HDD로 이동
- Swap In: HDD에서 메모리로 복귀
📌 Midium Term Scheduler는 Swapping 순서를 결정하며, 적절한 시점에 프로세스를 메모리로 복귀시킵니다.
🧑💻 문맥 교환 (Context Switching)
-
Context Switching은 여러 프로세스가 CPU를 공유할 때, 기존 프로세스를 중단하고 다른 프로세스로 전환하는 작업입니다. CPU 스케줄러가 이를 담당하며, 프로세스 간의 정보를 저장하고 복원하는 과정이 포함됩니다.
-
Dispatcher: Context Switching 시, 프로세스 상태와 정보를 관리하는 역할을 수행하는 프로그램입니다.
💾 프로세스 메모리 구조
프로세스 메모리는 4가지 주요 영역으로 구성됩니다:
- Code 영역: 실행할 프로그램의 명령어가 저장됩니다.
- Data 영역: 전역변수와 정적변수가 저장됩니다.
- Stack 영역: 함수 호출과 관련된 데이터가 임시로 저장됩니다. LIFO 방식으로 처리됩니다.
- Heap 영역: 런타임 시 동적으로 할당되는 메모리입니다.
🛡️ 커널 메모리와 PCB
- 커널: 운영체제의 핵심 인터페이스로, 하드웨어와 프로세스를 연결하는 역할을 합니다.
- PCB (Process Control Block): 프로세스의 중요한 정보가 담긴 자료구조로, 메모리 상태, PID, 레지스터 정보 등을 포함합니다. 프로세스마다 하나씩 존재하며, 운영체제의 핵심 부분에서 관리됩니다.
🔍 정리
- 프로세스는 메모리에 올라온 프로그램입니다.
- 프로세스 생명주기는 신규 → 준비 → 수행 → 대기 → 종료 순으로 이루어집니다.
- 스케줄링은 Long Term, Short Term, Device Scheduling으로 이루어집니다.
- Swapping은 사용하지 않는 프로세스를 HDD로 내리는 작업입니다.
- Context Switching은 프로세스 간 전환 작업이며, Dispatcher가 이를 담당합니다.
- 프로세스는 Code, Data, Stack, Heap 영역으로 구성됩니다.
- PCB는 각 프로세스의 상태 정보를 관리하는 중요한 자료구조입니다.