티스토리 뷰

  앞서 프로세스(Process)와 프로그램(Program)의 차이점을 통해 간단히 프로세스가 무엇인지 알아보았습니다.


프로세스(Process)란 무엇일까?


이번엔 Process Lifetime과 Process State에 대해서 알아보겠습니다.


1. Process Lifetime


 ' 프로세스(Process)란 무엇일까? ' 에서 보았지만 프로그램(Program)이 실행될 때 프로세스(Process)가 생성(만들어) 되어 지는것을 알 수 있었습니다. 그렇다면 프로세스는 언제 종료되게 될까요?? 바로 프로그램에서 종료버튼을 눌러 종료를 실행할 때입니다. 썰렁 개그처럼 당연한 거였지요... 아니면 작업관리자를 통한 강제종료도 프로세스의 종료에 해당됩니다.


  이러한 프로세스(Process)의 생성(Creation)에서 종료(Termination) 까지의 기간을 'Process의 Lifetime'이라 칭하게 됩니다.


2. Process State


  Process이 상태(State)에 대해서 알아보겠습니다. 우선 결론부터 말하자면 아래의 3가지 상태가 있습니다.


  큰 틀로 보이는 3가지 state인 'Ready' 'Block' 'Running' state가 보이실 겁니다. 각각에 대해 알아보겠습니다.


1) Running State

  'Running State'는 CPU에 의에서 실행되고 있는 상태(State)를 의미합니다. 따라서 Process가 CPU에 의해서 열심히 자기일을 하고있는 상태입니다.


2) Ready State

  'Ready State'는 말 그대로 Ready 즉 준비하고 있는 상태입니다. 'Ready State'에 있는 Process들은 위의 전개도에서 보실 수 있듯이 CPU allocation 즉 CPU 할당을 받으면 바로 Running State로 들어가 실행을 할 수 있는 상태입니다.( CPU를 사용하지 않고 있습니다. )


3) Block State

  'Block State'는 Event를 기다리고 있는 State입니다. 간단한 예를 들어보겠습니다. C언어로 프로그램을 짤 때 scanf 함수를 만나면 사용자가 키보드를 통해 값을 입력하고 엔터를 치기 전까지 그 프로그램은 아무런 일도 하지 않고 사용자의 응답을 기다리게 됩니다. 이러한 이벤트적인 행동을 기다리는 상태를 'Block State'라고 합니다.


  Process State를 간단히 알아보았습니다. 'Block State'에서 왜 'Running State'로 가지않고 'Ready State'로 갈까? 이런 의문점들이 생기실 수 있습니다. 생길수 있는 의문점을 간단히 정리해 보겠습니다.


Q1. 왜 'Block State'가 필요한가요?

A1. 일단 Block State가 없다면 사용자 응답을 Running State에서 받게될 것입니다. 그렇게 되면 사용자가 금방 응답하면 괜찮지만 응답하지 않을경우 CPU의 효율 낭비로 이어지게 됩니다. 따라서 운영체제의 효율적인 운영을 위해서 'Block State'를 만들게 되었을 겁니다.


Q2. 왜 'Block State'가 끝난 뒤 'Ready State'로 가게 되나요?

A2. 'Ready State'는 CPU가 자신을 실행시켜 주는것을 기다리고 있는 상태입니다. 이러한 이유는 후에 살펴볼 'CPU Scheduling'과 연관이 있게 되는데요~ 지금은 CPU가 한 가지 Process만 실행시키는 것이 아니기 때문에 'Ready State'가 있다~ 라고만 생각하면 될 것 같습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday