ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [전산기초] 프로세스
    비전공자 공부일기/:: Computer Science 2021. 7. 10. 10:32

    프로세스 관리 및 스케줄링

    1. 프로세스의 정의

    일반적으로 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 즉 실행중인 프로그램을 의미

    작업(Job) 또는 태스트(Task)라고 하기도 함

     

    프로세스는 다음과 같이 여러 형태로 정의할 수 있다.

    - 실기억장치에 저장된 프로그램

    - 프로세서가 할당되는 실체

    - 운영체제가 관리하는 실행 단위

    - 실행중인 프로그램

     

     

    2. 프로세스 상태 전이

    프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미

     

    프로세스의 상태에 대한 분류

    - 제출(Submit) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태

    - 접수(Hold) : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태

    - 준비(Ready) : 프로세스가 CPU를 할당받기 위해 기다리고 있는 상태로, 준비상태 큐에서 실행을 준비

    - 실행(Run) : 준비상태 큐에 있는 프로세스가 CPU를 할당받아 실행되는 상태

    - 대기(Wait), 보류, 블록(Block) : 프로세스에 입-출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입-출력 처리가 완료될 때까지 대기하고 있는 상태

    - 완료(Complete) : CPU를 할당받아 주어진 시간 안에 수행을 완료한 상태

    - 디스패치(Dispatch) : 준비 상태에서 대기하고 있는 프로세스 중 우선순위가 가장 높은 프로세스가 CPU를 할당받아 실행 상태로 전이되는 과정

     

    3. 스케줄링

    정의

    프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업이며, 이를 수행하는 것을 스케줄러라고 함

    프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거침

     

    종류

    1) 비선점 스케줄링(Non-preemptive)

    : 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

    FCFS = FIFO 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
    SJF 준비상태 큐에서 기다리고 있는 프로세스들 중에서
    실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법
    HRN 실행시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것으로,
    대기 시간과 서비스(실행) 시간을 이용하는 기법
    우선 순위 준비상태 큐에서 기다리는 각 프로세스마다 우선 순위를 부여하여
    그 중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법

     

     

    2) 선점 스케줄링 (Preemptive)

    : 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법

    SRT 현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행시간을 비교하여
    가장 짧은 실행시간을 요구하는 프로세스에게 cpu를 할당하는 기법
    라운드 로빈
    (RR; Round Robin)
    규정시간 또는 시간조각(Slice)를 미리 정의하여 CPU 스케줄러가 준비상태 큐에서 정의된 시간만큼 각 프로세스에 CPU를 제공하는 시분할 시스템에 적절한 스케줄링 기법
    다단계 큐 프로세스를 특정 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비상태 큐를 사용하는 기법
    다단계 피드백 큐 특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계 큐 기법을 준비상태 큐 사이를 이동할 수 있도록 개선한 기법

     

    교착 상태

     

    1. 교착 상태 (Dead Lock)

    정의

    다중 프로그래밍 상에서 두 개의 프로세스가 실행 중에 있을 때, 각 프로세스는 자신이 필요한 자원을 가지고 실행하다가 서로 자신이 점유하고 있는 자원을 포기하지 않은 상태에서 다른 프로세스가 자원을 요구하여 두 프로세스 모두 실행을 할 수 없게 되는 현상을 의미

     

     

    교착 상태 발생의 필요충분조건

    교착 상태가 발생하기 위해서는 다음의 네 가지 조건이 충족되어야 하며,

    이 네 가지 조건 중 하나라도 충족되지 않으면 교착 상태가 발생하지 않음

    상호 배제(Mutual Exclusion) 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함
    점유와 대기(Hold and Wait) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
    비선점(Non-preemption) 다른 프로세스에 할당된 자언은 사용이 끝날 때까지 강제로 빼앗을 수 없음
    환형 대기, 순환 대기
    (Circular Wait)
    공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함

     

     

    기억장치 관리 전략

     

    기억장치의 관리 전략은 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것이다

     

    1. 반입 전략 (Fetch)

    보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략

     

    - 요구반입(Demand Fetch) : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법

    - 예상반입(Anticipatory Fetch) : ~ 프로그램이나 데이터를 미리 예상하여 적재하는 방법

     

    2. 배치 전략 (Placement)

    새로 반입되는 프로그램이나 데이터를 주기억장치에 어디에 위치시킬 것인지를 결정하는 정략

     

    - 최초 적합(First Fit) : 프로그램이나 데이터가 들어갈 수 있는 빈 영역 중에서 첫 번째 분할영역에 배치시키는 방법

    - 최적 적합(Best Fit) : ~ 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법

    - 최악 적합(Worst Fit) : ~ 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법

     

    * 단편화란?

    주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우,

    분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억공간 (즉, 할당하고 남는 공간 ㅋ_ㅋ)

     

     

    3. 교체 전략 (Replacement)

    페이지 교체 알고리즘은 *페이지 부재가 발생했을 때 가상기억장치의 필요한 *페이지를 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 *페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할지 결정하는 기법이다.

     

    * 페이지(Page) : 프로그램을 일정한 크기로 나눈 단위

    * 페이지 프레임(Page Frame) : 페이지 크기로 일정하게 나누어진 주기억장치의 단위

    * 페이지 부재(Page Fault) : 프로그램 실행 시 참조할 페이지가 주기억장치에 없는 현상

     

    주요 교체 전략들

    OPT
    (Optimal replacement, 최적교체)
    앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
    FIFO(First In First Out) 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
    LRU(Least Recently Used) 꼐수기를 두어 가장 오랫도안 참조되지 않은 페이지를 교체하는 기법
    LFU(Least Frequently Used) 사용 빈도가 가장 적은 페이지를 교체하는 기법
    NUR(Not Used Recently) 최근에 사용하지 않은 페이지를 교체하는 기법
    MUR(Most Recently Used)
    = MFU(Most Frequently Used)
    사용빈도가 가장 많은 페이지를 교체하는 기법 (많이 썼으니까 그담에 안쓰겠지?)

     

    댓글

coding wanee