[운영체제]프로세스와 프로그램 차이

Geeho.a·2020년 10월 27일
0

★자주 헷갈리니 알아두기

Program(프로그램)이란?

  • 실행파일! 파일 시스템에 존재하는 실행파일이 프로그램이다. 보조기억장치에 존재하며 실행되기를 기다리는 명령어와 정적인 데이터의 묶음.
    어쩌구.exe...이런거..?

Process(프로세스)란?

  • 프로그램을 실행 시키는 실행 주체.. 프로그램의 명령어와 정적데이터가 메모리에 적재되면 프로세스가 됨. 즉, 실행중인 프로그램..

프로세스의 구성(PCB)

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

  • PID(Process IDentification) : 운영체제가 각 프로세스를 식별하기 위해 부여된 프로세스 식별번호

  • 프로세스 상태 : CPU는 프로세스를 빠르게 교체하면서 실행하기 때문에 실행중인 프로세스도 있고 대기중인 프로세스도 있다 이러한 프로세스의 상태를 저장

  • 프로그램 카운터 : CPU가 다음으로 실행할 명령어를 가리키는 값. CPU는 기계어를 한 단위씩 읽어서 처리하는데 프로세스를 실행하기 위해 다음으로 실행할 기계어가 저장된 메모리 주소를 가리키는 값이다.

  • 스케쥴링 우선순위 : 운영체제는 여러개의 프로세스를 동시에 실행하는 환상을 제공. 운영체제가 여러개의 프로세스가 CPU에서 실행되는 순서를 결정하는 것을 스케줄링이라고 한다. 이 스케줄링에서 우선순위가 높으면 먼저 실행 될 수 있는데 이를 스케줄링 우선순위라고 한다.;

  • 프로세스의 부모와 자식 프로세스 : 최초로 생성되는 init프로세스를 제외하고 모든 프로세스는 부모 프로세스를 복제해서 생성되고 이 계층관계는 트리를 형성한다. 각 프로세스는 자식 프로세스와 부모프로세스에 대한 정보를 가지고 있다.

  • 프로세스의 데이터와 명령어가 있는 메모리 위치를 가리키는 포인터 : 프로세스는 프로그램에 대한 정보를 가지고 있어야 한다. 이 정보는 프로세스가 메모리에 가지는 자신만의 주소 공간에 저장된다. 이 공단에 대한 포인터 값을 가짐

  • 프로세스에 할당된 자원들을 가리키는 포인터

  • 실행문맥 : 프로세스가 실행상태에서 마지막으로 실행한 프로세서의 레지스터 내용을 담고 있다. CPU에 의해 실행되는 프로세스는 운영체제에 의해 계속 교체되는데 교체되었다가 다시 자신의 차례가 되어서 실행될 때 중단된적 없고 마치 연속적으로 실행된것처럼 하기 위해 이 레지스터 정보를 가지고 있다.

프로세스의 상태

  • New(생성) : 프로세스 생성상태
  • Running(실행) : 프로세스가 CPU에 할당되어 실행중인 상태
  • Ready(준비) : 프로세스가 CPU에 할당되기를 기다리는 상태
  • Waiting(대기) : 보류(Block)라고도 하며, 프로세스가 입출력이나 이벤트를 기다리는 상태
  • Terminated(종료) : 프로세스 종료 상태

프로세스의 상태 전이

  • Admitted(승인) : 프로세스 생성이 가능하여 승인됨
  • Scheduler Dispatch(스케줄러 디스패치) : 준비 상태에 있는 프로세스 중 하나를 선택하여 실행시키는 것.
  • Interrupt(인터럽트) : 예외, 입출력, 이벤트 등이 발생하여 현재 실행 중인 프로세스를 준비 상태로 바꾸고, 해당 작업을 먼저 처리하는 것.
  • I/O or Event wait(입출력 또는 이벤트 대기) : 실행중인 프로세스가 입출력이나 이벤트를 처리해야 하는 경우, 입출력/이벤트가 모두 끝날 때까지 대기 상태로 만드는 것.
  • I/O or Event Completion(입출력 또는 이벤트 완료) : 입출력/이벤트가 끝난 프로세스를 준비 상태로 전환하여 스케줄러에 의해 선택될 수 있도록 만드는것

프로세스 스케줄링(Process Scheduling)

비선점 방식 : 어떤 process가 CPU자원을 사용하고 있을 때 다른 프로세스가 해당 자원을 빼앗아 올 수 없도록 하는 상태

  • FCFS(First Come First Service)
    작업큐에 먼저 삽입된 순서대로 자원을 할당
  • SJF(Short Jop First)
    작업시간이 가장 짧은 순서대로 자원을 할당. 실행시간이 긴 프로세스는 무한 대기상태가 될 수 있다.
  • HRN(Highest Response-raio Next)
    SJF의 단점을 보완한 방법으로 우선순위 알고리즘으로 계산한 값이 큰 프로세스부터 실행
    (실행시간 + 대기시간) / 대기시간 = 우선순위

선점방식 : 프로세스가 CPU자원을 사용하고있어도 다른 프로세스가 해당 자원을 빼앗아 올 수 있다.(시분할 시스템에서 사용하는 방식)

  • RR(Round Robin)
    프로세스의 종료 여부와 관계없이 일정시간 간격으로 돌아가면서 모든 프로세스를 실행. 시간간격이 짧으면 오버헤드가 발생
  • SRT(Shortest Remaining Time)
    실행중인 프로세스의 남은 시간보다 대기중인 프로세스의 실행시간이 더 짧으면 대기중인 프로세스에게 자원을 할당
  • 다단계 큐
    프로세스들을 특정 그룹으로 분류해서 다양한 스케줄링 방법을 사용하는 여러 작업큐로 할당
  • 다단계 피드백 큐
    다단계 큐에서 큐에 있는 프로세스가 다른 큐로 이동할 수 있도록 기능을 추가한것

교착상태??
다중 프로그래밍 시스템 하에서 각 프로세스가 각자의 수행 완료를 위해 필요한 자원의 일부분을 점유하고 있으면서 같은 그룹의 다른 프로세스에 의해 점유된 나머지 자원들의 해제를 기다림으로 인해 어떠한 프로세스도 수행을 계속 할 수 없는 영구히 봉쇄되어 있는 상태. 두개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있음..

교착 상태 발생의 조건

  • 상호배제 조건 (Mutual Exclusion)
    각 프로세스들이 각각 필요 자원에 대해 상호 배제적인 사용을 요구
  • 점유 및 대기 조건 (Hold and Wait)
    프로세스가 자신에게 할당된 자원을 가지고 있으면서 다른 자원의 할당을 요구
  • 비선점 조건 (Non-preemption)
    프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음
  • 환형대기 조건(Circular Wait)
    프로세스 간의 자원 요구가 원형의 사슬 형태로 존재

교착상태의 회복을 위한 자원 선점시 고려할 사항으로는 희생자 선정, 복귀(되돌림), 기아현상이 있으며, 기아현상을 해결하는 방법으로 에이징(Aging) 기법을 사용

aging
시스템에서 어떤 자원을 기다린 시간에 비례하여 프로세스에게 우선 순위를 부여하는 것. 기아현상을 방지하기 위한 기법

기아현상?
어떠한 우선순위 기준에 따라서 자원을 할당하는데 대상들이 계속 유입되는 상황에서 우선순위가 낮은 자료들은 영영 자원을 할당받지 못하게 됨,.

0개의 댓글