[OS] 프로세스

귀찮Lee·2023년 4월 10일
0

Operating System

목록 보기
9/14

◎ 프로그램 & 프로세스

  • 프로그램 : 저장장치에 저장되어 있는 정적인 상태
  • 프로세스 : 실행을 위해 메모리에 올라온 동적인 상태
  • 프로그램과 프로세스의 관계
    • 프로그램이 운영체제로부터 프로세스 제어 블록(PCB)을 얻으면 프로세스가 됨
    • 프로세스가 종료 → 해당 프로세스 제어 블록(PCB)이 폐기된다는 의미

◎ 프로세스의 상태

생성 상태

  • 프로그램이 메모리에 올라오고 PCB를 할당받은 상태

준비 상태

  • 실행 대기중인 모든 프로세스가 자기 순서를 기다리는 상태
  • PCB는 준비 큐(Ready Queue)에서 기다리며 CPU 스케쥴러에 의해 관리
    • CPU 스케쥴러 : 큐를 몇 개 운영할건지, 어떤 PCB를 실행상태로 보낼지 결정
    • CPU 스케쥴러가 dispatch(PID) 명령 실행시, 실행 상태로 바뀜

실행 상태

  • 프로세스가 CPU를 할당 받아 실행하는 상태
    • 자신에게 주어진 타임 슬라이스 동안만 작업할 수 있다.
    • 한 프로세스가 실행 상태가 끝나게 되면, CPU 스케쥴러는 새로운 프로세스를 실행 상태로 가져옴
  • 실행 상태가 끝나는 경우
    • timeout(PID) : 주어진 타임슬라이스를 다 사용한 경우; 다시 준비 상태로 이동
    • exit(PID) : 실행 상태동안 작업이 완료; 프로세스가 정상 종료(완료 상태)
    • block(PID) : 입출력을 요청한 경우; 대기 상태로 이동함

대기 상태

  • 프로세스가 입출력이 완료될 때까지 기다리는 상태
  • 완료되면 인터럽트가 발생하고, wakeup(PID)을 통해 해당 프로세스의 PCB가 준비 상태로 이동

완료 상태

  • 프로세스가 종료되는 상태 (exit()을 사용)
  • 코드와 사용했던 데이터를 메모리에서 삭제하고 PCB 파기
  • 코어 덤프(core dump) : 강제 종료(오류나 비정상적 종료)를 만나면 디버깅하기 위해 종료 직전의 메모리 상태를 저장장치로 옮김

휴식 상태

  • 프로세스가 작업을 일시적으로 쉬고 있는 상태
  • 종료 상태가 아니기 때문에 원할 때 다시 시작할 수 있다.

보류 상태

  • 프로세스가 메모리에서 잠시 쫓겨난 상태
  • 보류 상태가 되는 상황들
    • 메모리가 꽉 찼을 때
    • 프로그램에 오류가 있을 때
    • 바이러스와 같은 악의적인 공격을 하는 프로세스라고 판단할 때
    • 매우 긴 주기로 반복되는 프로세스
    • 프로세스의 입출력이 계속 지연될 때

◎ 프로세스 제어 블록 (PCB, Process Control Block)

프로세스 제어 블록

  • 프로세스를 실행하는 데 필요한 중요 정보를 관리하는 자료 구조
  • 프로세스는 고유한 PCB를 가짐
  • 프로세스 생성시 만들어져 완료되면 폐기함

프로세스 제어 블록의 구성

  • 포인터 : 준비 상태나 대기 상태의 큐를 구현할 때 사용
    • 대기 상태에는 같은 입출력을 요구하는 프로세스끼리 연결할 때 포인터 사용
  • 프로세스 상태 : 프로세스가 현재 어떤 상태에 있는지를 나타내는 정보
  • 프로세스 구분자 : 여러 프로세스를 구현하기 위한 구분자 (Process ID)
  • 프로그램 카운터 : 다음에 실행될 명령어의 위치를 가리킴
  • 프로세스 우선순위 : 프로세스의 실행 순서를 결정하는 우선순위
  • 각종 레지스터 정보 : 프로세스가 실행하던 중에 사용하던 레지스터 값
  • 메모리 관리 정보 : 프로세스가 메모리의 어디에 있는지 나타내는 메모리 위치정보
    • 경계 레지스터 값, 한계 레지스터 값, ...
  • 할당된 자원 정보 : 프로세스를 실행하시 위해 사용하는 입출력 자원이나 오픈 파일 등의 정보
  • 계정 정보 : 계정 번호, CPU 할당 시간, CPU 사용 시간, ...
  • PPID, CPID : 부모 프로세스 구분자, 자식 프로세스 구분자

◎ 문맥 교환

  • CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업
  • 나가는 프로세스 제어 블록에는 현재 작업 내용 저장, 들어오는 프로세스는 작업 내용을 불러옴
profile
장비를 정지합니다.

0개의 댓글