본문 바로가기

Learn/이론 정리

[IT 개념 정리] OS - 02. 프로세스 & 스케줄링

프로세스란?

 프로그램의 명령어와 정적 데이터가 메모리에 적재되어 실행 중인 프로그램을 의미한다. 즉 프로그램의 인스턴스로 운영 체제의 가장 기본적인 실행 단위이다.

 

프로세스의 메모리 구조

 프로세스의 주소 공간은 Text, Data, Heap, Stack영역으로 구성되어있다. 지역변수나 함수 호출과 같은  것은 스택영역에 할당되고, 동적인 데이터는 힙 영역에 할당이 된다.

 

프로세스의 상태

 프로세스는 총 5개의 상태(New, Ready, Running, Waiting, Terminated) 중 하나의 상태로 존재한다.

1. 프로그램의 실행을 위해 OS에 요청하면 New 상태로 생성된다.

2. 이후 프로세스가 실행 가능한 상태가 되면 Ready 상태가 된다.

3. CPU 스케줄러에 의해 실행 순서가 오면 Running 상태가 된다.

   이 상태를 디스패칭(dispatching) 이라고 한며 디스패처(dispatcher)가 수행한다.

4-1. 실행중인 프로세스는 수행 후 I/O 혹은 이벤트 대기에 의해서 Waiting 상태가 되거나

4-2. 인터럽트에 의해서 Ready 상태가 된다.

   인터럽트는 프로세스가 CPU를 자발적으로 반납하지 않고 독점하는 것을 방지하기 위해서 OS가 주기적으로 인터럽팅 클록을 발생시키는 것을 의미한다.

5. Waiting 상테에서 I/O나 이벤트가 완료되면서 Ready 상태가 된다.

6. 실행중인 프로그램이 종료되면 Terminated 상태가 되면서 OS에 의해 자원이 회수된다.

* 프로세스를 다시 사용하기 전에 입출력 완료 대기를 기다려야 하는 상황에서는 완료가 될때까지 Blocked 상태가 된다.

 

프로세스의 구성

 프로세스에 대한 정보는 프로세스 제어블록(PCB, Process Control Blcok)라는 자료구조에 저장된다.

PCB에 저장된 정보

  • PID : 운영체제가 각 프로세스를 식별하기 위해 부여된 프로세스 식별 번호
  • 프로세스 상태
  • PC, Program Counter : 다음에 실행될 명령어의 주소를 가지고 있다.
  • 가상메모리를 위한 페이지 테이블
  • 권한 : 프로세스가 접근 할 수 있는 자원을 결정하는 정보
  • 프로세스의 부모와 자식 프로세스 정보
  • 프로세스가 실행 상태에서 마지막으로 실행한 프로세서의 레지스터 내용

이외 다양한 정보들을 가지고 있다.

 

프로세스의 처리

싱글코어 프로세서일 경우 하나의 CPU는 한 순간에 하나의 프로세스만 실행 할 수 있지만 CPU가 실행할 프로세스를 빠른 속도로 교체하면서 실행하고 있기 때문에 실제 컴퓨터를 사용할떄 여러가지 프로그램들이 실행되는 것처럼 보이는 것이다.

 

스케줄링

프로세스의 처리 과정에서 가장 중요한 역할을 하는 것이 바로 스케줄러 이다.

스케줄러는 스케줄링을 결정 해주는 것을 의미하며 크게 장기 스케줄러와 단기 스케줄러로 나뉜다.

 - 장기 스케줄러는 새로 프로세스를 실행하는 것이 덜 주기적이어도 되는 작업이며 복잡한 알고리즘으로 만들어 질 수 있다.

 - 단기 스케줄러는 실행중인 프로세스를 멈추고 다른 프로세스를 실행하려는 것과 같이 매우 짧은 주기로 실행되는 스케줄러이다. 자주 실행 되므로 단순한 알고리즘으로 만들어 져야 한다.

 

스케줄링 방법으로는 선점형과 비선점형으로 나뉠 수 있다.

  • 선점형 스케줄링 : 프로세스가 실행 중에 waiting 상태로 변경 되는 경우
    • FCFS 스케줄링(First Come First Served Scheduling)
    • SJF 스케줄링(Shortest Job First Scheduling)
    • 우선순위 스케줄링(Priority Scheduling)
    • HRN 스케줄링(Highest Response Rate Next Scheduling) = SJF + 에이징
    • Deadline 스케줄링
  • 비선점형 스케줄링 : 프로세스가 I/O 작업, wait 시스템 콜로 waiting 상태가 되는 경우
    • RR 스케줄링(Round Robin Scheduling)
    • SRTN 스케줄링(Shortest Remaining-Time Next Scheduling)
    • 다단계 큐 스케줄링(MQ, Multilevel Queue Scheduling)
    • 다단계 피드백 큐 스케줄링(MFQ, Multilevel Feedback Queue Scheduling)
    • RM 스케줄링(Rate Monotonic Scheduling)
    • EDF 스케줄링(Earlist Deadline First Scheduling)

시스템 별 스케줄링

  • Batch System : FCFS/FIFO, SJF, SRTN
  • Interactive System : RR, Priority Scheduling, MLFQ, Guaranteed, Lottery,Fair-share
  • Real-Time System : Deadline

 

다음 포스팅에서는 OS - 03. 쓰레드, 동기화, 세크멘테이션 등에 대해서 알아보려고 한다.

 

※ 각 이미지는 수강했던 대학교 OS 수업자료에서 가져 왔습니다.