• [ 운영체제 ] Process Scheduling

    2021. 3. 19.

    by. KimBangg

     

    1. CPU scheduling

    스케줄러의 역할은레디큐안에 잇는 프로세스를 선택하여, 그들에게 CPU core를 할당해주는 역할을 한다.

    => 더 높은 효율을 위한 스케줄링을 위한 다양한 알고리즘이 존재하는데 이후에 자세히 다룰 예정!

     

    Long term Scheduling : 어떤 프로세스가 디스크에 레디큐로 갈지를 결정하는 역할

    Mid-term Scheduling : 메모리에서 프로세스를 제거하고 다시 메모리에 올리는 역할 [ Swapping ]

    Short term Scheduling : 어떤 프로세스가 레디큐에서 CPU를 할당받아서 실행될지 결정

     

    장기 계획 스케줄링은 프로세스의 두 가지 유형을 골고루 선택 해야한다.

    Processes => I/O bound [ 입출력에 더 많은 시간이 기여되는 ] vs CPU bound [ 연산을 위해 더 많은 ]

     

    2. Context Switching

    하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다. 한 프로세스의 문맥은 그 프로세스의 프로세스 제어 블록[PCB]에 기록되어 있다.

     

    대표사진 삭제

    사진 설명을 입력하세요.

    3. Operations on Prcesses

     

    대부분의 시스템에서 프로세스[ 실행중인 프로그램 ] 은 동시에 작동하고, 동적으로 생성되며 삭제된다.

    이에 따라, 시스템은 프로세스의 생성과 삭제를 위한 메커니즘을 가지고 있어야한다.

     

    3-1) 프로세스의 생성

     

    1) 프로세스를 생성하는 Process를 Parent Process라고 부른다. 이후, 생겨나는 프로세스는 다른 프로세스를 만들어 내기 때문에 트리 형태로 구성이 된다.

    2) 대부분의 운영체제는 프로세스를 Process Identifie(PID : Unique Integer Value)라는 번호를 통해 식별한다.

    3) 자녀 프로세스는 운영체제로 부터 직접 자원[CPU, Memory, I/O] 을 얻거나 부모가 할당해주는 자원만을 얻는다.

     

     

    부모가 자녀 프로세스를 생성 하는 경우

    1) 부모 프로세스는 자녀 프로세스와 동시에 운영

    2) 자녀프로세스가 끝날때까지 대기한다.

     

    자녀 프로세스 주소값을 받는 방법들

    1) 부모의 주소값을 복사한다. ( => UNIX : fork(), exec() ) : 상속

    첫번째 자녀프로세스의 경우, 부모의 주소값을 그대로 복사 -> 이후 새로운 자녀들을 추가할 때는 Binary file -> memory에 적재함으로써 프로세스간의 의사소통 및 분리 상태로 작업을 진행할 수 있다.

     

    2) 새로운 주소값을 가지고 온다. ( => Windows : createProcess() ) : 비상속

     

    사진 삭제

    사진 설명을 입력하세요.

     

    3-2) 프로세스의 종료

    자녀 프로세스들을 종료하기 위해서는, 그들의 PID를 알아야하기 때문에 생성시 그들의 값을 부모에게 전달해야한다.

    종료한다는 것은 자녀 프로세스가 가진 모든 자원을 다시 돌려준다는 의미를 가진다.

    부모 프로세스가 종료되면 대부분의 운영체제는 자녀 프로세스를 중단시킨다. ( = Cascading Termination )

     

    4) Interprocess Communications

     

    4-1) 협업이 필요한 이유

    1. 여러개의 어플리케이션들은 같은 정보를 요구하는 경우가 많다.

    2. 하나의 작업을 여러 프로세스로 분리하면 속도가 증가한다.

    3. 이동이 편이하다.

     

    *** 4-2) Interprocess communication Mechanism [ IPC ]

    프로세스들이 협업을 하기 위해서는 데이터를 교환 할 수 있는 IPC가 필요로 한다.

     

    4.2.1) Shared Memory System

    빠른 속도와 교류의 편이성을 제공한다.

    시스템콜을 통해 Shard-Memory zone을 형성 할 수 있다.

     

    생성 : 공유된 메모리의 주소는 생성자 프로세스의 주변에 생성이 되며, 공유를 원하는 프로세스가 접근을 해야한다.

    삭제: 일반적으로 운영체제는 다른 프로세스의 접근을 금하지만, 2개 이상의 프로세스가 동의하면 접근이 가능하다.

    [ Example ; Producer[Complier, Server] & Consumer[Loader, Client] Problem ]

    교환 : 읽기와 쓰기를 통해 교류가 이루어진다.

     

    생산자와 소비자가 함께 운영되기 위해서는, 생성자 & 소비자 모두가 접근 & 제어 할 수 있는 버퍼가 존재 해야하고 동기화가 되어 생성하는 동안 소비하는 경우를 막아야한다.

    => 버퍼 크기의 제한 유무에 따라 1) Unbounded Buffer 2) Bounded Buffer로 나뉜다.

     

    4.2.2) Memory Passing System

    - O.S가 수단을 제공한다.

    - 작은 양의 데이터를 보낼 때 용이하고, 사용하기쉽다.

     

     

    1) 제약조건 [ Requirement ]

    프로세스에 의해 보내지는 메세지의 크기는 일정하거나 & 변경 가능해야한다.

    전]송자와 수신자간의 커뮤니케이션 링크가 존재해야한다.

     

    2) Naming

     

    2.1) Direct Communication

    Symmetry : 수신자와 송신자는 모두 서로의 이름을 명확히 안다 => Send = P // Recevie / Q;

    Asymmetry : 송신자만 수신자의 이름을안다.

    => 두가지의 단점은 이동[Modularity]이 제한되어있고, 하나의 id를 변경하면 모든 프로세스를 검사해야한다.

     

    2.2) Indirect Communication

     

    - 상호간의 협업은 유일한 확인명을 가진Mail box or Ports를 통해 이루어진다.

    - 메일 박스는 한명의 주인에게만 관리되는 경우에는, 주인 프로세스가 사라지면 메일 박스도 사라진다.

    - 메일박스가 운영체제에 의해 관리하는 경우 독립적으로 운영된다.

     

    2.2.2) Sychronization

     

    1. Blocking => Producer & Consumer 문제는 자연스럽게 해결!

    [송신]수신자 또는 메일함에 의해 메세지가 받아질때 까지 송신자는 보낼 수 없다.

    [수신] 메세지가 이용 가능할 때까지, 수신자는 대기해야한다.

     

    2. Non blocking

    [송신] 수신의 여부와 상관없이 전송이 가능하다.

    [수신] 비어있더라도, 수신이 가능하다.

     

    3) Buffering

    메시지 교환 방식에 상관없이, 교환된 메세지는 임시 저장소에 보관된다.

     

    Buffer 의 유형

    1) Zero Capacity

    메세지 큐의 최대 크기가 0이여서, 메세지를 보관 할 수 없다. 그렇기 때문에 송신자는 수신자가 받을 때까지 메세지를 전송 할 수없다.

     

    2) Bounded Capacity

    제한된 양에 도달하기 전까지 메세지를 지속적으로 보낼 수 있다.

     

    3) Unbounded Capacity

    제한이 없음으로 수신자는 제한되지 않고 끊임없이 메세지를 받을 수 있다.

     

    댓글