[프로세스 생명주기와 프로세스 메모리]

변우영·2024년 10월 23일

🌟프로세스 생명주기와 프로세스 메모리


💻 프로그램과 프로세스

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가지 주요 영역으로 구성됩니다:

  1. Code 영역: 실행할 프로그램의 명령어가 저장됩니다.
  2. Data 영역: 전역변수와 정적변수가 저장됩니다.
  3. Stack 영역: 함수 호출과 관련된 데이터가 임시로 저장됩니다. LIFO 방식으로 처리됩니다.
  4. Heap 영역: 런타임 시 동적으로 할당되는 메모리입니다.

🛡️ 커널 메모리와 PCB

  • 커널: 운영체제의 핵심 인터페이스로, 하드웨어와 프로세스를 연결하는 역할을 합니다.
  • PCB (Process Control Block): 프로세스의 중요한 정보가 담긴 자료구조로, 메모리 상태, PID, 레지스터 정보 등을 포함합니다. 프로세스마다 하나씩 존재하며, 운영체제의 핵심 부분에서 관리됩니다.

🔍 정리

  • 프로세스는 메모리에 올라온 프로그램입니다.
  • 프로세스 생명주기는 신규 → 준비 → 수행 → 대기 → 종료 순으로 이루어집니다.
  • 스케줄링은 Long Term, Short Term, Device Scheduling으로 이루어집니다.
  • Swapping은 사용하지 않는 프로세스를 HDD로 내리는 작업입니다.
  • Context Switching은 프로세스 간 전환 작업이며, Dispatcher가 이를 담당합니다.
  • 프로세스는 Code, Data, Stack, Heap 영역으로 구성됩니다.
  • PCB는 각 프로세스의 상태 정보를 관리하는 중요한 자료구조입니다.
profile
개발자로 한걸음!

0개의 댓글