TIL 240321

hyeo71·2024년 3월 21일
0

2024 내배캠 AI 트랙

목록 보기
57/108

프로세스 생명주기

  1. 신규(New)

    • 프로세스가 메인메모리에 올라온 상태
  2. 준비(Ready)

    • 변수 초기화 등 기초 준비작업을 모두 끝내고 실행을 할 수 있는 상태
  3. 수행(Running)

    • CPU가 실제로 프로세스를 수행하고 있는 상태
  4. 대기(Waiting):

    • 프로세스 도중에 I/O 작업이 필요하여 I/O 작업을 수행하는 상태
  5. 종료(Terminated)

    • 프로세스가 종료된 상태

대기 큐(Waiting Queue)

  1. Job Queue

    • HDD의 프로그램이 메모리에 올라올 때, 메모리가 가득 차거나 CPU가 다른 작업을 수행 시 HDD 프로그램이 잠시 기다리는 곳
  2. Ready Queue

    • 메모리에 올라온 프로세스가 실행을 위해 대기하는 곳
  3. Device Queue

    • I/O 장치는 각자의 대기 큐를 가지는데 이를 통틀어 부르는 명칭

스케쥴링(Scheduling)

  1. Job Shceduler

    • Job Queue의 프로그램을 어떤 순서로 메모리에 올릴지 결정
    • 프로그램이 새로 시작할 때, 메인 메모리가 가득찬 경우에만 발생(Long Term Scheduler)
  2. CPU Scheduler

    • Ready Queue의 프로세스를 어떤 순서로 서비스 할 것인가를 결정
    • 가장 중요
    • Short Term Scheduler
  3. Device Scheduler

    • Device Queue의 프로세스를 어떤 순서로 I/O 장치를 이용하게 할 것인가를 결정

Swapping

여러 사용자가 하나의 메모리를 공유하는 경우 한 사용자가 자리를 비우면 그가 돌아올 때 까지 해당 프로세스에 메모리를 할당할 필요 X

PCB(Process Control Block)의 CPU Time을 확인하여 동작이 없는 프로세스를 HDD로 내리고 다른 프로세스, 기존 프로세스에 메모리 할당

동작이 없던 프로세스가 다시 작업을 수행하면 HDD에서 메모리로 프로세스를 올림

  • Swap Out: 메모리에서 HDD로 내리는 것
  • Swap In: HDD에서 다시 메모리로 올리는 것
  • 이 때 사용되는 HDD공간을 Backing Store or Swap Device라 함
  • Midium Term Scheduler

문맥 교환(Context Switching)

CPU 시간 공유 시스템의 경우 일정 시간이 지나면 기존 프로세스를 준비 상태로 만들고 다른 프로세스를 수행 상태로 만들어서 실행

프로세스를 Switch 하는 것을 통틀어서 Context Switching이라 함

  1. Scheduler: CPU Scheduler (위 내용 참고)

  2. Dispatcher

    프로세스 A를 수행하다가 B로 넘어가면 해당 정보를 저장하고 다시 A의 차례가 왔을 때 저장한 정보를 사용하여 PC, SP, Register 등에 할당


프로세스 메모리

사진 출처: https://zangzangs.tistory.com/107

  1. Code

    • 실행할 프로그램의 코드 저장
  2. Data

    • 전역변수, 정적변수 저장
  3. Stack

    • 호출된 함수의 수행을 마치고 복귀할 주소, 데이터를 임시로 저장
    • 1,2,3은 컴파일 할 때 data, stack 영역의 크기를 계산해 메모리 영역을 결정
  4. Heap

    • 동적 데이터 영역
    • 메모리 주소 값에 의해서만 참조되고 사용되는 영역
    • 런타임에 결정(자바에선 객체가 Heap 영역에 생성되고 GC에 의해 정리)
    • GC(Garbage Collector): heap 영역을 치우는 청소부

정리하기
1) 프로세스 : 메모리에 올라온 프로그램

2) 프로세스 생명주기 : 신규 - 준비 - 수행 - 대기 - 종료

3) PCB : 프로세스의 실행 정보와 상태 정보를 저장하는 자료구조 (PID, PC, Register, MMU 등)

4) 대기 큐 (Queue) : Job, Ready, Device Queue 등

5) Scheduler : Job, CPU, Device Schduler 등

6) Swapping : 안쓰는 프로세스 HDD로 내리고, 다시 쓰이면 메모리로 올리는 작업

7) Context Switching : Running 프로세스를 Ready로 만들고 다른 프로세스로 전환

8) Dispatcher : 컨텍스트 스위칭할 때 필요한 정보(PCB를 저장하고 꺼내는 프로그램)

9) CPU 시간공유 시스템 : (대부분의)OS에서 프로세스(스레드)가 시간단위로 나누어서 CPU를 사용할 수 있도록 관리해주는 시스템

10) 프로세스 메모리 공간 : 프로세스 주소 공간은 Code, Data, Stack, Heap 으로 구성됨

11) 커널 : 커널은 대부분의 운영 체제(OS)의 주요 구성 요소이며 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스

12) PCB : 프로세스의 실행 정보와 상태 정보를 저장하는 자료구조로 커널 프로세스에 존재

0개의 댓글