프로그램이 주메모리에 적재되어 CPU에 의해 요청받은 작업을 수행하는 것을 프로세스라고 하며, 프로세스관리는 요청받은 작업을 처리하기 위해 CPU, 메모리, 파일, 입출력장치와 같은 자원을 이용하여 수행되는 프로세스들에 대한 관리를 의미합니다.


프로세스는 프로그램이 주메모리에 적재되어 수행되는 작업 단위를 말하며, 각각의 프로세스는 독립적인 주메모리 영역을 할당받으며 작접전환 속도가 느리다는 단점이 있습니다.

스레드는 프로세스 하위에서 수행되는 한 개 이상의 작업 단위를 말하며, 개별 프로세스에 할당된 주메모리의 존재하는 Code, Data, Heap 영역을 생성된 스레드끼리 서로 공유하며 스레드 간의 작업 전환 속도가 빠르다는 장점이 있습니다.


○ 프로세스 제어블럭(PCB : Process Control Block)

운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 저장소를 의미합니다. 운영체제가 제어를 다른 프로세서에 넘겨줄 때 현재 실행 중인 프로세스의 정보를 해당 PCB에 저장 후 넘겨줍니다.

PCB의 역할로는 각 프로세스가 생성될 때마다 PCB가 생성되고, 완료되면 PCB는 제거됩니다. 운영체제에게 프로세스에 대한 정보를 제공해 주는 자료구고 테이블입니다. 부모 프로세스와 자식 프로세스는 PCB를 공유하지 않습니다.


○ 프로세스를 생성하는데 필요한 작업

 - 프로세스의 이름을 결정

 - 프로세스 리스트에 생성된 프로세스를 추가

 - 생성된 프로세스에 우선순위 부여 

 - 생성된 프로세스에 PCB를 생성

 - 생성된 프로세스에 초기자원 할당


○ 프로세스 상태

하나의 프로세스가 생성되어 완료될 때까지 여러 단계의 상태변화를 거치게 됩니다. 이러한 상태변화에서 각 단계별 상태에 대해서 다루겠습니다.

 - 생성(Created or New)

   작업을 위해 프로그램을 하드디스크나 시디롬 등의 보조저장장치로부터 주기억장치에 적재하여 새로운

   프로세스를 생성한 상태로 준비(Ready) 상태가 되기를 기다립니다.

 - 준비(Ready)

   프로세스가 실행을 위해 CPU 할당을 기다리는 상태입니다.

 - 실행(Ready)

   프로세스가 CPU자원할당을 받아 실제로 실행되는 상태입니다.

 - 대기(Waiting or Blocked)

   프로세스가 실행되다가 사용자 입력이나 파일 열기와 같은 이벤트 발생을 기다리며 멈추는 상태입니다.

 - 종료(Terminated)

   프로세스의 실행이 완료되어 CPU 할당이 해제되고 주메모리에서 제거되기를 기다리는 상태입니다.


○ 프로세스 전이 상태(Process State Transition)

 - Dispatch(Ready -> Running)

   준비상태의 프로세스가 CPU 할당을 받아 실행 상태로 전이되는 과정입니다.

 - Timer Runout(Running -> Ready)

   실행상태의 프로세스에 할당된 CPU 사용 시간이 만료되어 준비상태로 돌아가는 과정입니다.

 - Wake UP(Waiting -> Ready)

   대기 상태에 있던 프로세스가 기다리던 이벤트가 완료되어 다시 나머지 부분의 실행을 위해 준비상태로

   전이되는 과정을 말합니다.


○ 프로세스의 구성요소

프로세스는 코드(Code)영역, 데이터영역, 스택영역, 힙(Heap) 영역으로 구성됩니다.

 - 코드영역

   프로그램 코드 자체를 구성하는 명령이나 기계어 명령을 위한 메모리 공간을 말합니다.

 - 데이터영역

   프로그램의 전역변수(Global Variable)나 정적변수(Static Variable)의 할당을 위해 존재하는 공간입니다.

 - 스택영역

   지역변수(Local Variable), 매개변수(Parameter), 복귀번지(Return Address), 함수 호출시 전달되는 인수

   (Argument) 값 저장을 위한 메모리 공간입니다.

 - 힙영역 : 프로그램 상에서 필요로 하는 일시적이고 동적인 메모리 할당을 위해 사용되는 공간입니다.



'ComputerTerm' 카테고리의 다른 글

기억장치의 종류  (0) 2017.12.04
프로세스 스케줄링  (0) 2017.12.03
운영체제의 구조와 발전  (0) 2017.11.30
운영체제의 주요기능  (0) 2017.11.28
정보 기술 아키텍처(ITA)  (0) 2017.11.28

+ Recent posts