CS/운영체제

[CS - 운영체제] 프로세스와 멀티 프로세스 (Process, Multi Process)

itisjustK 2023. 4. 1. 19:41

프로세스 (Process)

  • 개념
    • 일종의 명령어 리스트 또는 실행 파일인 프로그램하드 디스크에서 메모리로 적재되어, CPU에게 할당받아 실행(연산)되는 프로그램

 

  • 흐름 
    1. 우리가 코딩을 해서 프로그램을 작성
    2. 컴파일
    3. 하드디스크(HDD)에 프로그램 저장
    4. RAM 메모리에 적재
    5. CPU가 직접 접근해서 CPU에 할당
    6. CPU가 프로그램을 한줄 한줄 읽으며 처리함
    7. 명령어 처리가 진행되면 프로그램은 프로세스가 되었음

 

  • 메모리
    • 메모리 : CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치. 우리가 말하는 메모리는 RAM 메모리를 의미한다.
    • 메모리에는 4가지 영역이 존재한다.
      • 코드 : 프로그램의 코드를 저장하는 메모리 영역
      • 데이터 : 프로그램의 전역 변수, static 변수를 저장하는 메모리 영역
      • : 프로그래머가 직접 공간을 할당(malloc)/해제(free)하는 메모리 영역, 런타임에서 크기가 결졍된다.
      • 스택 : 프로그램에서 함수를 호출할 때 선언되는 지역 변수, 매개 변수를 저장하는 임시 메모리 영역, 컴파일에서 크기가 결정된다.
      • → 코드에서 스택으로 갈수록 메모리 주소값이 높아진다
    • 프로그램이 메모리에 적재되어야 하는 이유는 CPU가 메모리에 있는 프로그램에만 직접 접근할 수 있기 때문이다.

 

  • CPU의 프로세스 처리 메커니즘
    • CPU 내부에 있는 PC(Program Counter) register에 저장된 코드 주소값을 바탕으로 프로세스를 처리
      • PC register
        • 다음에 실행될 코드의 주소값이 저장되어 있음
        • 일종의 CPU만의 네이버 맵 내지 네비게이션. 어디로 갈지 알려준다
    • PC register가 메모리의 코드 영역에 다음 코드 주소값을 가리킨다 == PC register에 다음 코드 주소값이 저장되어 있다
    • CPU는 PC register에 저장되어 있는 주소값을 순차적으로 확인하면서 메모리의 코드 영역에 있는 코드를 처리한다 (다 같은 말)

 

 

멀티 프로세스 (Multi Process)

  • 개념
    • 말 그대로, 여러 개의 프로세스가 실행되는 것 (ex. 롤 하면서 유튜브로 노래 틀고, 카카오톡도 하고, 인터넷으로 맛집 검색도 하고)
    • 근데 CPU 1개가 여러 프로세스를 처리할 수도 있고, 여러 CPU가 여러 프로세스를 처리할 수도 있음
    • 전자는 동시성 (Concurrency), 후자는 병렬성 (Parallelism)

 

  • 동시성, Concurrency
    • CPU core가 1개일 때 (single core) 여러 개의 프로세스를 짧은 시간동안 번갈아 처리하는 것
    • 번갈아서 처리하기 때문에 동시에 처리하는 것처럼 보임
    • 번갈아 처리하기 위해선 CPU의 시간을 쪼개서 프로세스를 처리하는데, 이를 시분할 시스템(time sharing system)이라고 함
    • 하나의 CPU가 여러 프로세스를 담당한다 == “프로세스들은 CPU를 공유한다”

 

  • 병렬성, Parallelism
    • CPU core가 여러 개일 때 (multi core) 각각 CPU가 각각 프로세스를 하나씩 맡아서 처리하는 것
    • 실제로 여러 CPU가 동시에 프로세스를 처리함
    • 병렬성, 동시성이 동시에 발생할 수도 있음

 

  • 메모리 관리
    • 하나의 메모리에 여러 프로세스를 적재할 수 있음
    • 따라서, 여러 프로세스들이 서로의 영역을 침범하지 않도록 운영체제가 관리함
      • base register, limit register를 통해 각 process를 처리할 때에는 정해진 메모리 구간 외에는 접근할 수 없도록 막는다.
    • 하나의 메모리에 여러 프로세스를 담는다 == “프로세스들은 메모리를 공유한다”

 

CPU의 multi process 처리 메커니즘

설명에 필요한 개념들부터 살펴보자

  • Context
    • "하나의 CPU는 여러 프로세스를 번갈아가면서 처리해야 한다. 그러기 위해선 각 프로세스들이 어디까지 연산을 처리했고, 어디 할 차례이고, 지금은 어떤 상태고 … 등에 대한 정보가 필요하다. 이걸 Context라고 한다."
    • 각 프로세스의 진행 상황 및 상태 정보
    • 시분할 시스템에서는 한 프로세스가 매우 짧은 시간동안 CPU를 점유하여 일정 부분의 명령 수행하고 다른 프로세스에게 넘겼다가 다시 받음
    • 이런 상황에서 각 프로세스의 이전 진행 상황 정보가 필요하며, 이를 Context라고 함
    • Context는 PCB(Process Control Block)에 저장됨

 

 

  • PCB (Process Control Block)
    • "Context를 저장할, 담을 곳이 필요하다. 그게 PCB다. 각 프로세스에 대한 PCB들은 한 곳에 모아서 저장한다. 운영체제 프로세스를 담당하는 커널 스택이라고 하는 곳에 일괄 저장한다. 커널 스택은 메모리 최상단에 위치해있다."
    • 운영체제가 프로세스를 표현한 자료구조
    • 중요한 정보이기 때문에 일반 사용자들이 접근하지 못하도록 보호된 메모리 영역 내부에 저장
    • 일부 PCB는 커널 스택에 위치 → 보호 받으면서 접근이 편리함
    • 정보 종류
      • Process State - new, running, ready, waiting, halted 등
      • Process Number - 해당 프로세스의 number
      • Program Counter - 명령어 주소
      • Registers
      • Memory Limits
      • 메모리 정보, CPU 스케쥴링 정보, 우선순위 등

 

  • Context Switch
    • "CPU가 처리하는 프로세스를 바꾸는 것. 근데 이제 Save & Read를 곁들인 …"
    • 한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것
    • 이때 기존 프로세스 상태를 PCB에 저장하고 보관, 다음 프로세스의 PCB를 가져와서 프로세스 상태 복구 하는 과정이 있음

  • 전체 흐름
    1. 프로세스1 진행
    2. 바꿔야 함
    3. 프로세스1 의 Context → PCB1에 저장
    4. PCB2에서 프로세스2 Context 불러오기
    5. 프로세스2 복구 후 진행
    6. 바꿔야 함
    7. 프로세스2 PCB2에 Context
    8. … 반복
  •