본문 바로가기

Subject/정보보안 산업기사

1장] 운영체제 - 2) 프로세스, 스케줄링

0. 프로세스와 쓰레드


 

프로세스 

쓰레드 

정의 

 프로그램이 메모리에 로딩되어 실행중인 상태

하나의 프로그램 내에서 여러 개의 실행흐름을 두기 위한 모델

영역 

프로세스 별로 독립된 리소스를 할당받음

같은 프로세스 내의 자원을 공유




1. 프로세스 생성 


 1) 이름 결정

 2) 프로세스 리스트에 추가

 3) 우선순위 부여

 4) *PCB 생성

 5) 초기자원 할당 


 *PCB(Process Control Block)

 >프로세스 제어 블럭.

 >프로세스에 대한 중요정보가 저장.

 >프로세스가 생성될 때 생성, 완료시 제거.  //'완료'라는게 뭘 나타내는건지 아직 불명확.

 >부모/자식 프로세스 관계에서도 공유되지 않음.

 >운영체제가 제어를 다른 프로세스에게 넘겨줄 때, 현재 실행 중인 프로세스의 정보를 해당 PCB에 저장 후 넘김.



2. 프로세스 상태


 1) 생성(New): 생성만 된 상태, 운영체제에 의한 실행 불가.



 2) 준비(Ready): 실행을 위해 CPU 할당을 기다림.



 3) 실행(Run): CPU를 할당받아 실행됨.

      

     >Dispatch: 준비 -> 실행

     >Timer Runout: 실행 -> 준비 (CPU 사용시간 만료)



4) 대기(Wait): 실행(Run) 중에, 특정 작업(입출력 등)을 기다리는 동안 멈추어 있는 상태.



5) Wake Up: 대기 -> 준비



6) 종료(Exit): 작업이 완료되어 CPU 할당이 해제됨.




2. 프로세스 교착 상태(DeadLock)


 -둘 이상의 프로세스가, 자신의 자원을 놓아주지 않으면서 상대의 자원을 기다리는 무한 대기 상태.

 -조건

   1) 상호 배제(Mutual Exclusion): 프로세스들이 자원에 대한 배타적 통제권을 요구할 때.

   2) 점유와 대기: 다른 프로세스의 자원을 요구하며, 자신의 자원을 해제하지 않고 기다릴 때

   3) 비선점 조건: 상대 프로세스의 자원사용을 도중에 선점할 수 없을 때.

   4) 환형 대기 조건(Circular wait): 이런 상태가 고리형으로 이뤄질 때(서로 엮여서 해결 불가)


 -해결 방안

   >교착상태 예방: 교착 조건을 부정하여 미리 막음.

   >     〃    회피: 교착 가능성을 염두하고 적절히 회피 //설명이 겁나 애매하게 나와있음 ㅡㅡ

   >     〃    탐지: 교착 발생시 원인을 규명하여 해결.

   >     〃    복구: 교착을 일으킨 프로세스를 종료, 교착 상태의 자원을 선점하여 해결.

 



3. 프로세스 메모리 구성


 -코드 영역: 프로그램 동작 코드(명령어)가 담김.

 -데이터 영역: 전역 변수, 정적(Static) 변수.

 -스택 영역: 지역 변수, 매개 변수, 리턴 어드레스.

 -힙 영역: 동적 메모리.




4.프로세스 스케줄링


 -프로세스의 실행 순서 결정.

 -'어떤 프로세스에게 CPU 사용권을 넘겨줄 것인가'

 -CPU 성능 평가 요소  //왜 갑자기 이 설명이 튀어나오는건지 모르겠지만, 일단 외우셈

 

  1) CPU 이용률(Utilization): 프로세스들이 CPU를 사용하는 비율, CPU가 쉬는 시간을 측정하여 나머지 시간을 사용.

  2) 시스템 처리율(Throughput): 단위 시간당 완료된 작업 수.

  3) 반환 시간(Turnaround Time): 작업에 소요되는 모든 수행시간.

  4) 대기 시간(Waiting Time): 프로세스가 준비 큐에서 대기하는 시간.

  5) 응답 시간(Response Time): 프로세스가 요구한 시점부터 응답하기까지 걸린 시간.



 -스케줄링 정책


  >선점형 스케줄링 정책(Preemptive Scheduling Policy)

    >>어떤 프로세스가 CPU를 사용중에도. 더 높은 우선순위의 프로세스에 의해 선점당할 수 있는 방식.

    >>실시간 프로세스, 대화식 시분할 시스템에서 유용. 

    >>종류


       1) 최단 잔여 시간(SRT: Short Remaining Time)

        -> 가장 빨리 종료될 수 있는 작업을 우선 처리.


       2) 순환할당 스케줄링(RR: Round Robin)

        -> 각 프로세스에게 번갈아가며, 동일한 사용시간을 할당.


       3) 다단계 큐(Feedback)

        -> 우선순위 별로 큐를 준비.

        -> 대기 큐에 따라 정해진 스케줄링 실행.

        -> 큐 내의 작업은 FCFS 방식으로 처리.   

        -> 일반적으로 사용됨.



   >비선점형 스케줄링 정책(Non-Preemptive)

     >>CPU를 사용중인 프로세스가 제어를 넘겨주어야 사용 가능.

     >>종류


       1) 선입선출(FIFO)

        -> 도착한 순서대로 처리.

       

       2) 우선순위(Priority) 스케줄링

        -> 작업 중요도에 따라 처리.

        -> 중요도가 동일할 시, 도착 순서를 비교.

        -> 무한 정지, 기아 상태가 될 수 있음

            ->> 에이징 기법으로 해결.



       *)최단작업 우선 처리(SJF)

         -> CPU 사이클이 작은 것부터 처리.

         -> 선점, 비선점 모두 사용가능.

         


    >기한부(Deadline) 스케줄링

      >>명시된 시간 내에 작업이 완료되도록 하는 방식.

      >>실시간 처리 시스템에 유용.