운영체제(OS) & Network

프로세스(Process) (1)

jih0ssang 2023. 9. 18. 15:11

목차

    프로세스

    Context

    • 프로세스의 상태 및 환경 정보
      • Program Counter: 다음 실행할 명령어 주소 저장(in memory)
      • 각종 레지스터
      • 프로세스 상태: CPU, memory etc. 자원 얼마나 사용중인지 등에 대한 상태 정보
      • Windows는 PCB가 컨텍스트를 관리한다.

     

    • 프로세스 관련 커널 자료 구조
      • PCB(Process Control Block)
        • PCB는 이 정보를 저장하고 관리하는 역할
        • 프로세스마다 PCB를 가지고 있음
        • PCB에 저장되는 정보
          • 프로세스 식별자(Process ID, PID) : 프로세스 식별번호
          • 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장
          • 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소
          • CPU 레지스터
          • CPU 스케쥴링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
          • 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
          • 입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록
          • 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등
      • Kernel Stack
    • 프로세스의 주소 공간
      • code, data, stack

     

    프로세스 상태

    • New: 프로세스가 생성중인 상태
    • Terminated: 실행이 끝난 상태

    ※리눅스에서는 priority(우선순위)가 있어서, 그걸로 프로세스에게 자원을 할당한다.

    Timer interrupt를 발생시켜 문맥교환

     

    프로세스를 스케줄링하기 위한 큐

    운영체제는 작업들을 모두 Queue에 넣고 관리한다.

    • blocked된 Queue에 있는 것은 CPU를 주지 않는다. Ready Queue에 있는 프로세스부터 CPU를 준다.
    • blocked된 Queue가 Ready Queue가 되었을 때, 인터럽트를 발생시켜 CPU를 사용할 수 있도록 한다.

     

    • Job queue
      • 현재 시스템 내에 있는 모든 프로세스의 집합
    • Ready queue
      • 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
    • Device queues
      • I/O Device의 처리를 기다리는 프로세스의 집합

    프로세스들은 각 큐들을 오가며 수행된다.

     

     

    공유데이터

    • 프로세스 끼리 공유해서 쓰는 데이터
    • 한 프로세스가 데이터를 쓰고 있어서, 다른 프로세스가 Blocked된 상태

     

    문맥 교환(Context Switch)

    • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
    • 절차
    1. CPU를 건네주기 전, 어디까지 명령어 실행했는지 프로세스의 상태를 PCB에 저장
    2. CPU를 새롭게 얻는 프로세스는 자신의 PCB를 보고 실행했던 데부터 다시 실행

    문맥 교환 사례

    1.  문맥 교환 아님! 사용자 프로세스가 달라지지 않았음
    2.  사용자 프로세스 A로부터 B로 CPU가 넘어갔으니 문맥교환 일어남!

     

    (1)의 경우에도 CPU 수행 정보 등 Context의 일부가 달라졌으므로 PCB의 변경이 일어나긴 하지만, (2)의 오버헤드(시간,자원 etc.) 더 크므로 (2)를 문맥교환이라 부른다.

     

    프로세스 스케줄링 큐의 모습

     

    '운영체제(OS) & Network' 카테고리의 다른 글

    케이블의 종류와 연결 방식 및 주소(address)  (1) 2023.09.18
    메모리  (0) 2023.09.18
    쓰레드(Thread)  (0) 2023.09.14
    스케줄러(Scheduler)  (0) 2023.09.13
    프로세스(Process) (2)  (0) 2023.09.13