프로세스

Judo·2021년 7월 19일
0
post-custom-banner

프로세스의 개념

  • 작업/프로그램
    • 메모리에 올라가지 않고 실행 요청 전의 프로그램 + 데이터
  • 프로세스
    • 메로리에 적재되어 시스템 커널에 등록된 작업이고 커널에 의해 관리된다.
    • 실행중인 프로그램이라고 생각하면 된다.
  • 자원(Resource)의 개념
    • 프로레서, 메모리, 모니터, 메세지, 파일 등 커널의 관리 하에 프로세스에게 할당/반납되는 수동적 개체

PCB(Process Control Block)

  • PCB
    • 운영체제 내에 커널 공간에 존재하며 각 프로세스들에 대한 정보를 관리된다.
    • 프로세스가 생성되면 PCB도 생성된다.
  • PCB가 관리하는 정보
    • PID: 프로세스 고유 식별 정보
    • 스케줄링 정보: 프로세스 우선순위 등과 같은 스케줄링 관련 정보
    • 프로세스 상태: 생성, 준비, 실행, 대기 중단 등 상태 표시
    • 메모리 관리 정보
    • 입출력 상태 정보: 할당 받은 입출력 장치, 파일 등에 대한 정보
    • 문맥 저장 영역: 프로세스의 레지스터 상태를 저장하는 공간 등
    • 계정 정보

프로세스 상태 변화

  • 프로세스 - 자원 간의 상호작용에 의해 결정
  • Created State
    • 작업을 커널에 등록하고 PCB 할당 및 프로세스 생성
    • 가용 메모리 여부에 따라 Ready와 Suspended ready로 나뉜다.
  • Ready State
    • 프로세서 외에 다른 모든 자원을 할당 받은 상태
    • 즉시 실행 가능 상태
    • Dispatch(or Schedule): Ready state → running state
  • Running State
    • 프로세서와 필요한 자원을 모두 할당받은 상태
    • Preemption
      • Running state → ready state
      • 프로세서 스케줄링
      • 운영체제는 프로세스가 프로세서를 독점하지 못하도록 Interrupt Clock을 두고 타임아웃되어도 프로세서를 반환하지 않으면 운영체제가 이를 제어하여 ready state로 바꾸고, ready queue의 첫 번째 프로세스를 running state로 바꾼다.
    • Block/sleep
      • Running state → asleep state
      • I/O 나 새로운 자원 요청 문제로 프로세서를 스스로 양보하는 경우
  • Blocked/Asleep State
    • 프로세서 외에 다른 자원을 기다리는 상태
      • 자원 할당은 System call에 의해 이루어진다.
    • Block되었다가 다른 자원을 할당 받은 경우 ready state로 이동한다.(wake-up)
  • Suspended State
    • 메모리를 할당 받지 못하거나 할당 받았다가 빼앗긴 상태
      • 빼앗긴 경우 Memory image를 swap device에 보관(책갈피를 꽂아두는 것과 비슷)
      • swap-device에 저장해뒀다가 메모리를 할당받으면 다시 받아와서 진행을 이어감
    • Swap-out(suspended), Swap-in(resume)
      • 메모리를 빼앗긴 경우 swap-out
      • 메모리를 할당 받은 경우 swap-in
  • Terminated/Zombie state
    • 프로세스 수행이 끝난 상태

인터럽트

예상치 못한, 외부에서 발생한 이벤트

  • 종류
    • I/O interrupt: 키보드를 치거나 마우스를 클릭하는 것
    • system call interrupt: system call에 의한 인터럽트
  • 인터럽트 처리 과정
    • 인터럽트 발생 → 프로세스 중단과 함께 PCB에 Context Saving과정이 발생 → 인터럽트 handling → 인터럽트 서비스 루틴 호출(실행해야 할 서비스를 호출하는 것) ⇒ ready state로 있는 process를 context restoring과 함께 복구하고 실행

Context switching

  • Context
    • 프로세스와 관련된 정보들의 집합
    • CPU register context ⇒ in cpu
    • Code & data, stack, PCB ⇒ in memory
  • Context saving
    • interrupt나 다른 경우로 인해 실행중인 process가 멈추는 경우 현재 프로세스의 register context를 저장하는 작업
  • Context restoring
    • register context를 프로세스 레짓 복구하는 작업
  • Context switching
    • 인터럽트나 시스템 호출 등으로 실행중인 프로세스의 제어를 다른 프로세스에 넘겨 실행 상태가 되도록 하는 것
    • Context saving과 Context restoring의 합친말
profile
즐거운 코딩
post-custom-banner

0개의 댓글