티스토리 뷰

  앞서 Process에 대해 다음과 같이 알아보았습니다.

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

2. 프로세스(Process)의 Lifetime과 Process State

3. 프로세스(Process)의 주소 공간(Address Space)

4. Process Management & Process Metadata


  PCB(Process Control Block)에 대해서 이어서 알아보도록 하겠습니다. Process Metadata들을 저장해 놓는곳이 PCB라 했습니다. 따라서 PCB에는 Process Metadata인 Process ID, State, Priority, etc...등이 저장이 되어집니다. 따라서 한 PCB에는 한 Process의 정보가 다 담겨있으므로 한 PCB를 보면 그에 해당하는 Process가 어떠한 상태인지 어디 있는지 등등을 알 수 있게 됩니다.( PCB는 C에서 사용하는 구조체(Structure) 형태로 되어있습니다. 따라서 다양한 정보를 가지고 있을 수 있습니다. )



 간략히 정리해보면 Program이 실행되면 Process가 생성되게되고 Process Address Space에 'code', 'data', 'stack'이 만들어지고 이 Prcess의 Metadata들은 PCB에 저장이되게 됩니다. 따라서 Process Management란 말은 곧 PCB Management란 말과 의미가 일치하게 됩니다. 그렇다면 OS는 어떻게 이러한 PCB들을 관리하게 될까요? 바로 Linked List 방식으로 PCB들을 관리하게 됩니다.


Process가 생성되면 해당 Process의 PCB가 만들어지게되고 그 PCB는 PCB List Head에 붙게 됩니다. 그리고 Process가 종료되면 PCB도 Link List에서 unlink되어 사라지게됩니다. 아래의 그림을 통해 PCB가 Head에 붙는걸 알아보겠습니다.



다음으로 PCB가 제거될때를 보겠습니다.



  PCB의 생성(Creation)과 제거(Termination)에 대해서 그림을 통해 보았습니다. 이 때 그림의 화살표 들은 다 Pointer로 이루어져있어 생성과 제거시에 주소값을 넘겨받아 연결이 이루어지게 됩니다. 일반적으로 OS에서는 다양한곳에서 Linked List를 사용합니다. 이러한 PCB, Ready Processes, Block Processes등등 도 이런 Linked List 방식으로 관리를 하게됩니다.


문제의 답은 드레그를 통해 확인 하실 수 있습니다. ( 모바일은 꾹 누르시면 드레그가 됩니다. )


Q. 바로 방금 Ready나 Block도 Linked List로 관리한다고 했는데요! PCB에서 관리를 이미 하고 있는데 왜 구지 따로 하는 것 일까요?

A. Process State는 3가지가 있는데 PCB List에는 이러한 상태들이 다 섞여있게 됩니다. 앞에서 잠깐 언급했던 CPU Scheduling은 Ready 상태인 Process를 가지고 하게 되는데요 PCB만 관리를 한다면 Ready만 다시 뽑아내야 하는 상태가 만들어 지게됩니다. Block과 Running도 마찬가지구요. 따라서 미리 Ready등을 Linked List로 관리하므로서 동작을 할 때 빠른시간에 할 수 있도록 하려는 목적이 있습니다.

 



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