03 프로세스

코이그·2023년 6월 17일

CS 스터디

목록 보기
1/4

프로세스 생명 주기

프로세스 상태

생성 (New)

  • 보조기억장치에 데이터 덩어리로 저장되어있던 프로그램이 주기억장치에 올라왔지만 아직 실행은 불가능한 상태.
  • 생성 상태에서 갈 수 있는 상태: 준비 상태

준비 (Ready)

  • 생성된 프로세스가 실행될 수 있도록 변수 초기화 등 기초 세팅을 통해 프로세스를 준비시키는 상태.
  • 준비 상태가 될 수 있는 상태:
    1. 생성 - 프로세스가 생성됐을 때
    2. 수행 - 프로세스가 실제로 수행을 하다가 OS에 의해 중단이 되었을 때
    3. 대기 - 대기 상태에서 입출력이 완료되었을 때
  • 준비 상태에서 갈 수 있는 상태: 수행 상태

수행 (Running)

  • 실행될 준비를 마친 프로세스들이 실제로 프로세서에 의해 실행되는 상태.
  • 수행 상태가 될 수 있는 상태: 준비 상태
  • 수행 상태에서 갈 수 있는 상태:
    1. 준비 - 스케쥴러(OS)에 의해 프로세스가 중단이 되었을 때
    2. 대기 - 입출력 이벤트를 받아야할 때
    3. 종료 - 프로세스가 끝났을 때

대기 (Waiting)

  • 입출력 작업이 들어왔을 때 프로세스가 입출력장치로 넘어가 프로세서가 기다리는 상태.
  • 대기 상태가 될 수 있는 상태: 수행 상태
  • 대기 상태에서 갈 수 있는 상태: 준비 상태

종료 (Terminated)

  • 프로세스의 수행이 끝난 상태.
  • 종료 상태가 될 수 있는 상태: 수행 상태

대기 큐

  1. Job queue - 프로세스가 실행되려면 프로그램이 보조기억장치에서 주기억장치로 올라와야 하는데 주기억장치에 공간이 없거나 cpu가 다른 작업을 하는 중일 때 프로세스가 대기하는 큐.
  2. Ready queue - 프로그램이 주기억장치에 올라왔지만 바로 프로세스가 실행되지 못하는 상태일 때 프로세스가 대기하는 큐.
  3. Device queue - 입/출력이 필요한 프로세스가 입/출력 작업이 끝날 때까지 대기하는 큐.

스케줄링

  1. Job scheduler - job queue에 있는 프로세스들을 어떤 순서로 메모리에 올릴 지 결정. (프로그램 시작 시 / 주기억장치에 공간 없을 시)
    • Long Term Scheduler: 긴 간격으로 동작하는 스케줄러 (자주 발생하지 않음)
  2. CPU scheduler - ready queue에 있는 프로세스들을 어떤 순서로 실행할 지 결정.
    • Short Term Scheduler: 짧은 간격으로 동작하는 스케줄러 (엄청 자주 발생함)
  3. Device scheduler - device queue에 있는 프로세스들이 어떤 순서로 입/출력 장치를 이용할 지 결정.

주-보조 교환(Swapping)

  • 메모리 할당이 일정 기간동안 필요하지 않은 프로세스들을 잠시 보조기억장치로 내려놓고(swap out) 메모리 할당이 당장 필요한 프로세스들을 주기억장치로 올려(swap in) 실행하는 작업.
  1. PCB(Process Control Block)에 프로세스의 정보 저장
    • PID, 레지스터(지금까지의 작업 상태 등), 프로세스 상태, 메모리 정보, CPU 스케줄링 정보, 사용한 파일 / 입출력장치 정보 등
    • 예) 프로세스A가 일정 기간동안 실행될 필요가 없을 때 프로세스A의 정보를 PCB에 저장.
  2. 다음 프로세스의 정보를 PCB에서 가져오기
    • 예) 당장 실행되어야 하는 프로세스B의 정보를 PCB에서 가져오기
  3. PCB에서 가져온 정보를 바탕으로 프로세스B를 이어서 실행
  4. 1-3 반복
  • Medium Term Scheduler: 적당한 간격으로 동작하는 스케줄러

문맥 교환(Context switching)

  1. Context switching - 수행 상태의 프로세스를 스케줄러가 준비 상태로 내리고 다른 프로새스를 수행 상태로 올리는 작업.
    • 프로세스들의 메모리와 실행의 적절한 분배 등
  2. Scheduler - 어떤 프로세스가 어떤 순서로 수행될 지 결정하는 녀석.
  3. Dispatcher - 주-보조 교환에서 설명했던 1~3번 작업을 수행하는 녀석.

프로세스 메모리

프로세스 메모리 구조

  1. 코드 영역 - 프로그램 실행에 필요한 명령어 저장되는 공간 (말그대로 코드)
  2. 데이터 영역 - 프로그램 시작 시 필요한 데이터 저장되는 공간 (전역 혹은 정적 변수)
  3. 힙 영역 - 직접 할당 가능한 공간 (malloc, new)
  4. 스택 영역 - 데이터가 일시적으로 저장되는 공간 (매개변수, 지역변수)
  • 정적 데이터 영역: 코드, 데이터

  • 동적 데이터 영역: 힙, 스택

  • 힙 영역과 스택 영역은 동적(크기가 고정되어있지 않음)이기 때문에 힙 영역은 데이터 영역 위에서 위로, 스택 영역은 메모리 영역의 맨 위에서 아래로 쌓인다.

커널

  • 운영체제에서 핵심적인 기능을 수행하는 인터페이스.

  • 하드웨어와 프로세스들 사이에서 다양한 작업 수행:

    1. 메모리 관리
    2. 프로세스 관리
    3. 입출력 관리
    4. 파일 시스템 관리
profile
COYG🔴⚪

0개의 댓글