[F-Lab 챌린지 14일차] TIL : Process

성수데브리·2023년 7월 13일
0

f-lab_java

목록 보기
12/73

학습 내용


프로그램 : 파일 시스템에 실행파일 형태로 존재하는 것

프로세스 : 프로그램이 운영체제로 부터 자원을 할당받고 실행중인 프로그램이다.

프로세스는 운영체제로 부터 독립적 공간인 Virtual Memory 를 할당 받는데, 0번째 주소부터 시작한다.

Virtual Memory 는 Code, Data, Stack 으로 구성된다.

커널 주소 공간의 내용

  • Code
    • 시스템콜, 인터럽트 처리 코드
    • 자원 관리를 위한 코드
    • 편리한 서비스 제공을 위한 코드
  • Data
    • 프로세스들을 관리하기 위한 자료구조
      • PCB
    • 하드웨어를 관리하기 위한 자료구조
      • CPU, Memory, Disk
  • Stack
    • 프로세스별 커널 스택

사용자 프로그램이 사용하는 함수

  • 사용자 정의 함수
  • 라이브러리 함수
  • 커널 함수
    • 시스템 콜

프로세스

  • 프로세스의 문맥
    • CPU 의 수행 상태를 나타내는 하드웨어 문맥
      • Program Counter
      • 각종 Register
    • 프로세스의 주소 공간
      • code, data, stack
    • 프로세스 관련 커널 자료 구조
      • PCB
      • Kernel Stack

프로세스의 상태

  • Running

    • CPU를 잡고 instruction을 수행중인 상태
  • ready

    • CPU를 기다리는 상태
  • blocked(wait, sleep)

    • CPU를 주어도 당장 instruction을 수행할 수 없는 상태
    • Process 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태
      • 예) 디스크에서 file 을 읽어와야 하는 경우
  • Suspended(stopped)

    • 외부적인 이유로 프로세스의 수행이 정지된 상태
    • 프로세스는 통째로 디스크에 swap out 된다.
      	blocked & suspended 차이
    
      	- Blocked : 자신이 요청한 event가 만족되면 Ready  
      	- Suspended : 외부에서 resume해 주어야 Active
  • new : 프로세스가 생성중인 상태

  • terminated : 수행이 끝난 상태

PCB (Process Control Block)

https://byjus.com/gate/process-control-block-notes/

https://byjus.com/gate/process-control-block-notes/

  • 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
  • 커널의 data 영역에 존재한다
  • 구성요소
    • OS가 관리상 사용하는 정보
      • Process State, Process ID
      • scheduling information, priority
    • CPU 수행 관련 하드웨어 값
      • Program counter, registers
    • 메모리 관련
      • code, datat, stack 의 위치 정보
    • 파일 관련

문맥 교환

  • CPU 를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
  • CPU 가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행
    • CPU 를 내어주는 프로세스의 상태를 그 프로세스의 PCB 에 저장
    • CPU 를 새롭게 얻는 프로세스의 상태를 PCB 에서 읽어옴
  • 주의
    • 시스템 콜이나 인터럽트 발생시 반드시 문맥교환이 발생하는 것은 아니다.
      1. 문맥교환 X 사용자 프로세스 A → ISR 또는 시스템 콜 함수 → 사용자 프로세스 A
      2. 문맥교환 O 사용자 프로세스 A → ISR 또는 시스템 콜 함수 → 사용자 프로세스 B

프로세스를 스케줄링하기 위한 큐

https://www.guru99.com/process-scheduling.html

https://www.guru99.com/process-scheduling.html

  • 운영체제는 프로세스를 큐에 넣고 스케줄링한다.
  • 큐 종류
    • Job queue : 현재 시스템 내에 있는 모든 프로세스의 집합
    • Ready queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
    • Device queue : I/O device 의 처리를 기다리는 프로세스의 집합
  • 프로세스들은 각 큐들을 오가며 수행된다.

스케줄러

운영체제가 메모리 관리를 위한 작업

  • Long-term scheduler
    • 시작 프로세스 중 어떤 것들을 ready queue 로 보낼지 결정
    • 프로세스에 memory 를 주는 문제
    • time sharing system 에는 보통 장기 스케줄러가 없음 (무조건 ready)
  • Short-term scheduler
    • 어떤 프로세스를 다음번에 running 시킬지 결정
    • 프로세스에 CPU를 주는 문제
    • 충분히 빨라야 함
  • Medium-term scheduler
    • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
    • 프로세스에게서 memory 를 뺏는 문제

0개의 댓글