Operating System : 운영체제

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

(ii) State Transition

@ 앞에서 Process는 어떤 state 위에서,

    // 수행되는 execution stream이라고 표현했었습니다.

    // 이 때, state라고 하는 것은 

        > 그 프로세스가 수행하기 위해서 기억해야할 정보입니다.

 

@ State Transition 에서 말하는 State는 그것과는 차이가 있습니다.

    // 이는, 어떤 프로세스가 지금 어떤 상황에 있는가를 얘기합니다.

    // State Transition은 각 프로세스들의 State를 변화시키는 것이라고 보시면 되겠습니다.

    // 프로세스 역시 탄생과 사망을 경험하게 됩니다.

        > 이렇게 프로세스가 생성되었을 때 부터 종료될 때 까지 발생하는 일련의 상태 변화를

            .. 프로세스 생명 주기(Process Life Cycle)이라고 부릅니다.

     State Transition

    

@ Process Life Cycle은 다음과 같습니다.

    // New 

        > 생성

    // Ready

        > active한 프로세스이지만, CPU를 받지 못해서 수행을 하지 못하고 있는 상태

        > 여러개 있을 수 있을 것입니다.

            .. 이런 상황에서는 어떤 Data structure를 이용할까요?

            .. Ready queue 혹은 Ready List라고 부릅니다.

                .. 이는 Ready 상태의 프로세스들을 관리하기 위한 Queue 형태의 자료구조로,

                .. 일반적으로 PCB들을 Linked List로 연결하여 구현합니다.

    // OS 선택 -> Running

        > Single Process System에서는 0개 혹은 1개일 것입니다.

    // 이 때 Running 상태의 Process가 sync I/O request를 하게 되면

    // Waiting 상태로 전이가 됩니다.

        > 이는 어떤 event가 발생하기를 기다리기에 CPU를 내주고

            .. 대피해 있는 상태라고 생각하시면 됩니다.

        > 원하는 event가 들어오게 되면 Ready상태로 전이됩니다.

 

@ 위에서 설명한 일련의 상태를

    // State Transition이라고 부릅니다.

    

?Question Waiting 상태에도 여러개의 Process가 있을 수 있나요?

    // 있을 수 있습니다.

    // 이 때 각 Process들이 Waiting상태에 있는 이유는 다를 수 있습니다.

        > 어떤 이는 Keyboard 입력

        > 어떤 이는 Memory block data 등

    // 그렇기에 OS는 Waiting 이유에 따라 별도의 큐를 사용하게 됩니다.

        > 각 I/O Device 별로 별도의 device queue가 존재하게 됩니다.

    

@ OS의 Process는 이렇게 일련의 상태를 거치는데

    // 위에서 설명한,

        > Ready

        > Running

        > Waiting

            .. 이 3가지가 가장 Basic합니다.

    // 사실은 이 외에도 많은 상태가 존재합니다.

        > Ex) zombi state

        

@ OS는 그렇다면 결국 어떤 활동을 하는 것인가 살펴보겠습니다.

    // Process가 생성되면,

        > PCB를 할당합니다. (물론 자원도 할당합니다)

            .. 그 프로세스를 일련의 조건에 따라 다른 상태로 전이시킵니다.

    // 이것이 바로 OS가 Algoritmical하게 수행해야 하는 일입니다.

    

@ 그렇다면 이제 상태의 전이를 조금 더 자세히 살펴보겠습니다.

    // Ready to Running?

        > OS System scheduler가 수행합니다.

    // Running to Ready

        > 수행중 interrupt가 발생하여,

            .. CPU를 빼앗기는 현상입니다.

            .. 이를 선점(preemptive) Scheduling이라고 합니다.

    // Running to Waiting

        > (생략하겠습니다.)

    // Waiting to Ready

        > 원하는 event가 발생하면 됩니다.    

    

@ 이와 같이 OS은 여러 State별로 Data structure(queue)를 만들어두고,

    // 여러 프로세스들에 해당하는 event가 발생하면

        > State Transition을 drive하게 됩니다.

댓글

댓글 본문
작성자
비밀번호
버전 관리
박천명
현재 버전
선택 버전
graphittie 자세히 보기