ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 프로세스와 프로세스 제어 블록(PCB), 문맥 교환
    운영체제 2023. 3. 11. 23:30
    728x90
    반응형

    오늘은 운영체제에서도 핵심 내용인 프로세스에 대해서 공부할 겁니당.

     

     

    🧐 프로세스란?

    프로세스(process)란 실행 중인 프로그램을 말합니다.

    프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리일 뿐이지만, 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간부터 프로세스가 됩니다.


    프로세스 확인하기

    $ ps -ef

    터미널에 위 명령어를 입력하면 현재 프로세스를 직접 확인할 수 있습니다.


    📍프로세스의 종류

    • 포그라운드 프로세스 : 사용자가 볼 수 있는 공간에서 실행되는 프로세스
    • 백그라운드 프로세스 : 보이지 않는 공간에서 실행되는 프로세스


    백그라운드 프로세스 중에서도 사용자와 상호작용하지 않고 정해진 일만 수행하는 백그라운드 프로세스를 데몬 혹은 서비스라고 부릅니다.

    데몬(daemon): 유닉스 운영체제에서 부르는 말
    서비스(service): 윈도우 운영체제에서 부르는 말




     

    프로세스 제어 블록(PCB)

    🖥️ PCB가 사용되는 배경

    모든 프로세스는 실행을 위해 CPU를 필요로 하지만 동시에 사용할 수 없기 때문에 차례대로 돌아가며 CPU를 사용합니다. 자신의 차례가 되면 정해진 시간만큼 CPU를 이용하고, 시간이 끝났음을 알리는 인터럽트(타이머 인터럽트)가 발생하면 자신의 차례를 양보하고 다음 차례가 올 때까지 기다립니다.

    운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분합니다. 이때 프로세스 제어 블록(PCB: Process Control Block)을 이용합니다.

    📌 프로세스 제어 블록의 개념과 특징

    • 프로세스와 관련된 정보를 저장하는 자료구조
    • 마치 상품에 달린 태그와 같음
    • 프로세스에 하나당 PCB 태그 하나가 달려있는 격
    • 해당 프로세스를 식별하기 위해 필요한 정보들이 저장됨
    • 메모리 중에서도 사용자 영역이 아닌 커널 영역에 생성됨
    • PCB는 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기됨

     

    📌 PCB에 담기는 정보

    1. 프로세스 제어 블록에는 아래의 여섯 가지의 정보가 담깁니다.
    2. 프로세스 ID (PID) : 프로세스 식별을 위한 고유 ID
    3. 레지스터값 : 이전까지 진행했던 작업들을 이어 실행하기 위해 가져오는 레지스터의 중간값으로 프로그램 카운터 등의 정보
    4. 프로세스 상태 : 현재 프로세스가 입출력장치의 사용을 기다리는 중인지, CPU 사용을 기다리는 중인지, 혹은 CPU를 이용 중인지 등의 정보
    5. CPU 스케줄링 정보 : 프로세스가 CPU를 할당받는 순서에 대한 정보
    6. 메모리 관리 정보 : 프로세스가 메모리의 어느 주소에 저장되어 있는지에 대한 정보 및 베이스 레지스터, 한계 레지스터 값, 페이지 테이블 정보 등
    7. 사용한 파일과 입출력장치 목록 : 프로세스가 실행 과정에서 사용한 입출력장치, 파일 등에 대한 정보

     


     

    문맥 교환

    하나의 프로세스에서 다른 프로세스로 실행 순서가 넘어갈 때, 즉 CPU를 사용할 차례를 다른 프로세스에게 넘겨줄 때에는 많은 정보를 백업해야 합니다. 프로그램 카운터를 비롯한 각종 레지스터 값, 메모리 정보, 열었던 파일, 사용했던 입출력장치 등 지금까지의 중간 정보를 저장해야 다음 차례가 왔을 때 다시 이어서 실행을 재개할 수 있습니다. 여기서 말하는 중간 정보를 문맥이라고 합니다.


    💻 문맥(context)이란

    • 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
    • PCB에 기록되는 정보들을 문맥이라고 봐도 무방

     

    💻 문맥 교환(context switching)이란

    기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것

    문맥 교환은 여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리입니다. 문맥 교환이 자주 일어나면 프로세스는 그만큼 빨리 번갈아 가며 수행되기 때문에 우리의 눈에는 프로세스들이 동시에 실행되는 것처럼 보입니다.

     

    마치 코로센세처럼 말이죠

    위의 노랗고 동그란 생명체는 문맥교환의 빈도수가 많은 운영체제를 가진 컴퓨터라고 보면 되겠습니다.

    LIST
Designed by Tistory.