2.1 프로세스

  • 프로세스(process) : 실행 중인 프로그램
    • 프로그램: 동작을 하지 않는 정적,수동적 개체
    • 프로세스: 동작을 하는 능동적 개체

         

  • 운영체제로부터 자원을 할당받아 동작
    • 자원: CPU, 메모리, 입출력장치, 파일 등
    • 동작: CPU가 프로세스의 명령을 실행

         

  • 사용자 및 시스템 프로세스 존재

   

  • 프로세스와 운영체제
    • 프로세스 관리자의 역할
      • 프로세스를 생성 및 삭제
      • 프로세스를 실행(CPU 할당)을 위한 스케줄 결정
      • 프로세스의 상태를 관리하며 상태 전이를 처리

           

  • 프로세스의 상태
    • 5-상태 모델

         

      • 생성: 처음 작업이 주어진 상태, 프로세스를 운영하기 위한 필요자원 파악.
      • 준비: 실행 준비가 되어 CPU할당을 기다리는 상태,
      • 실행: 프로세스가 처리되는 상태
      • 대기: 프로세스가 특정자원을 할당 받을 때까지 또는 I/O작업이 끝날 때까지 작업이 보류되는 상태
      • 종료: 모든 처리가 완료되어 사용자에게 반환되는 상태

         

    • 프로세스의 상태변화
      • 디스패치: 준비상태에 있는 프로세스를 실행상태로 전이시키는 작업을 수행하는 운영체제 내의 모듈
      • 할당시간 만료: 더 우선순위가 높은 프로세스가 들어왔을 때 혹은 지정된 할당시간을 초과했을 때.
      • 이벤트 대기: 다른 자원이나 입출력작업이 필요해 졌을 때.
      • 재개조건 만족

           

  • 프로세스 제어 블록
    • 프로세스 제어 블록(Process Control Block, PBC)

         

      • 프로세스의 관리를 위한 목적
      • 프로세스의 정보를 보관
      • 각 프로세스마다 존재
      • 프로세스가 진행함에 따라 내용 변경

           

  • 프로세스의 생성과 종료
    • 프로세스 생성 작업
      • 프로세스의 이름(번호, PID)결정
      • 준비 큐에 삽입
      • 초기 우선순위 부여
      • 프로세스 제어 블록(PCB) 생성 등
    • 프로세스 생성 방법 : 시스템 호출

   

  • 프로세스 생성 시스템 호출
    • 하나의 프로세스가 프로세스 생성 시스템 호출을 통해 새로운 프로세스를 생성

      Ex) fork()

    • 호출하는 프로세스: 부모 프로세스
    • 생성되는 프로세스: 자식 프로세스
    • 시스템 프로세스와 사용자 프로세스 모두 부모 프로세스가 될 수 있음

   

  • 생성되는 프로세스의 자원
    • 운영체제로부터 직접 얻는 경우
    • 부모 프로세스 자원의 일부를 얻는 경우

         

  • 자식 프로세스의 자원은 부모 프로세스의 자원으로 제한
    • 과도한 자식 프로세스 생성에 따른 시스템 과부하 방지

   

  • 프로세스 종료
    • 프로세스의 마지막 명령이 실행을 마치는 경우
    • 프로세스 종료 시스템 호출(ex: exit( ) )을 통하는 경우
    • 프로세스 종료 후 부모 프로세스에게 실행결과를 되돌려 줌

         

  • 프로세스 종료 시스템 호출
    • 부모에 의해서만 호출
    • 자식 프로세스가 할당된 자원의 사용을 초과할 때 혹은 더 이상 필요치 않을 때.

         

         

  • 프로세스 간의 관계

  

독립적 프로세스

유기적 프로세스

의미

다른 프로세스의 영향을

받지도 않고 주지도 않음

다른 프로세스와 영향을

주고받음

프로세스

상태

다른 프로세스와 공유하지 않음

다른 프로세스와 공유함

실행

결정적, 재생 가능

다른 프로세스와 무관하게

중단 및 재시작 가능

비결정적, 재생 불가

데이터

다른 프로세스와 공유하지 않음

다른 프로세스와 공유함

   

 

2.2 쓰레드

   

  • 프로세스와 쓰레드
    • 전통적인 프로세스
      • 처리의 기본 단위
      • 자원 소유의 단위(하나의 주소공간) 및 디스패칭의 단위(하나의 제어흐름)
      • 단일 프로세스 내에서 동시처리 불가능 -> 쓰레드 등장

           

    • 쓰레드(Thread)
      • 프로세스 내에서의 다중처리를 위해 제안된 개념
      • 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재
      • 하나의 쓰레드 내에서는 하나의 실행점만 존재(디스패칭의 단위)
      • 실행에 필요한 최소한의 정보만을 가지며, 자신이 속해 있는 프로세스의 실행환경을 공유

        * <--- 실행점(프로그램 카운터)

           

        ->전통적인 프로세스에서는 프로세스 하나가 자원 소유의 단위이자 디스패칭의 단위였지만

        쓰레드 개념의 도입으로 디스패칭의 단위는 쓰레드 단계로 내려감

           

           

    • 다중 쓰레드의 장점
      • 멀티CPU 혹은 멀티코어 시스템에서는 병렬처리 가능
      • 처리 속도 별로 쓰레드가 나눠진 경우 효율적인 처리 가능

           

           

           

           

2.3 스케줄링

  • 스케줄링 단계

   

   

  • 상위단계 스케줄링
    • 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후 프로세스 준비 큐에 전달
    • 선택 기준: 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것
    • 입출력(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택

         

  • 하위단계 스케줄링
    • 사용가능한 CPU를 준비상태의 어느 프로세스에세 배당할지를 결정
    • CPU를 배당받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨
    • 수행 주체는 디스패처(dispatcher)

         

  • 중간단계 스케줄링
    • 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화시킴
    • 시스템에 대한 단기적인 부하를 조절

   

   

  • 스케줄링 정책
    • 스케줄링 기본 목표
      • 공정성: 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함
      • 균형: 시스템의 자원들이 충분히 활용될 수 있게 함

           

         

         

    • 선점(Preemptive) 스케줄링 정책
      • 진행중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케줄링 전략
      • 높은 우선순위의 프로세스를 긴급하게 처리하는 경우에 유용
      • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용
      • 문맥 교환에 따른 오버헤드 발생

           

        *문맥

        CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태

        *문맥교환

        CPU가 현재 실행하고 있는 프로세스의 문맥을 PCB에 저장하고, 다음 프로세스의 PCB로부터 문맥을 복원하는 작업

           

    • 비선점(Nonpreemptive) 스케줄링 정책
      • 프로세스가 CPU를 할당받아 실행이 시작되면

        작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨

      • 모든 프로세스가 공정하게 순서에 따라 실행됨(응답시간 예측 가능)
      • 짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음

'운영체제' 카테고리의 다른 글

04 병행 프로세스 I  (0) 2016.03.12
3. 스케줄링 알고리즘  (0) 2016.03.06
1. 운영체제 개요  (0) 2016.03.05
Posted by redcode.
,