프로세스

SIHA·6일 전

CS복습_OS

목록 보기
3/7

프로세스 관련 용어

프로세스 정의 및 주소 공간, 문맥

프로세스

  • 실행 중인 프로그램
  • 즉, 디스크에 있던 프로그램이 복사되어 메모리에 올라왔을 때.

프로세스 주소 공간

  • 프로세스가 실행 중에 사용하는 메모리 영역
  • 프로세스마다 독립적인 주소 공간을 가지며, 다른 프로세스와 공유하지 않음

주소 공간의 구성

  • 코드: 프로그램의 실행 코드가 저장
  • 데이터: 초기화된 전역 변수와 정적 변수가 저장
  • 힙: 동적으로 할당되는 메모리가 저장
  • 스택: 함수 호출 시 사용되는 지역 변수, 매개변수 등이 저장

프로세스 문맥(Context)

프로세스는 수행될 때, 스스로 수행되는 것이 아니라 CPU에 의해 수행되며, 하나의 CPU가 하나의 프로세스만을 계속 수행하고 있는 것은 좋지 않다.

  • 프로세스가 실행되면서 CPU가 관리해야 할 프로세스의 상태 정보
  • CPU가 한 프로세스에서 다른 프로세스로 작업을 전환할 때, 기존 프로세스의 정보를 저장하고 새로운 프로세스의 정보를 불러와야 함. 이때 저장되고 불러오는 정보

프로세스 문맥의 구성 요소

CPU 레지스터

  • CPU가 실행 중에 사용하는 데이터 저장소
  • 예: 프로그램 카운터(PC), 각종 레지스터 등이 포함

프로세스 제어 블록 (PCB)

  • 운영체제가 프로세스의 정보를 저장하는 데이터 구조
  • PCB에 프로세스 ID, 우선순위, 스케줄링 정보 등이 포함됨

메모리 관련 정보

  • 프로세스가 사용하는 메모리 위치나 페이지 테이블 정보가 포함됨
  • 예: 주소 공간 정보 (코드, 데이터, 힙, 스택 등)

열린 파일과 장치 정보

  • 프로세스가 사용 중인 파일이나 디바이스의 상태를 저장함
  • 열려 있는 파일의 디스크 위치

프로세스 상태

프로세스는 다양하게 상태가 변경되며 수행된다.

New

프로세스가 생성중인 상태

Ready

프로그램이 메모리에 올라가고 CPU를 기다리는 상태

Running

CPU를 점유하고 명령을 기다리는 상태
※ 디스패치: 스케줄링 결과로 선택된 프로세스를 실제로 CPU에 할당하고 실행하는 과정

Blocked

CPU를 할당받더라도 당장 명령을 수행할 수 없는 상태
(예: 프로세스가 입출력 명령을 기다리는 상황)

Terminated

수행이 끝난 상태

Suspended

운영체제는 너무 많은 프로세스가 메모리에ㅔ 올라와 있으면 당장 사용하지 않는 프로세스를 통째로 디스크로 쫓아낸다. (swap out)
이렇게 디스크로 쫓겨난 프로세스의 상태

프로세스 상태 관리 - 큐와 스케줄러

운영체제는 프로세스들을 관리하고 스케줄링을 하기 위한 큐를 두고 있음

Job Queue

  • 시작되지 않는 프로세스가 포함됨
  • 디스크에 저장된 상태로 메모리로 로드되기 전 단계
  • 새로운 프로세스가 메모리로 로드되면 Job Queue에서 제거되고 Ready Queue로 이동

Ready Queue

  • ready 상태의 프로세스들을 줄 세우는 큐
  • 운영체제는 스케줄러를 통해 이 큐에서 프로세스를 선택하여 CPU를 할당함

Device Queue

  • 입출력 장치의 입출력 작업을 대기하고 있는 프로세스의 집합
  • 각 디바이스(예: 디스크, 프린터, 네트워크 장치)마다 별도의 Device Queue가 있음
  • I/O 작업이 완료되면 프로세스는 Ready Queue로 복귀

스케줄러

장기 스케줄러 (Long-Term Scheduler)

디스크에 있는 프로세스(Job Queue) 중 어떤 프로세스를 메모리로 로드할지 결정함
메모리 내 프로세스 수를 제한하여 메모리 과부하를 방지함

중기 스케줄러 (Middle-Term Scheduler)

실행중인 프로세스를 메모리에서 디스크로 이동하거나, 디스크에서 다시 메모리로 복구함
메모리가 부족 시 우선순위가 낮은 프로세스를 Suspended 상태로 전환하고 여유로워지면 다시 복구 함

단기 스케줄러 (Short-Term Scheduler)

Ready Queue에 있는 프로세스 중 CPU를 할당받아 실행할 프로세스를 선택함
실행 속도가 매우 빠름
CPU의 효율적인 사용을 위해 빈번히 작동
다양한 스케줄링 알고리즘(예: Round Robin, SJF, 우선순위 기반)을 사용


프로세스 제어 블록 (PCB)

프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조로,
프로세스의 수행 상태 정보를 갖고 있으며, 커널의 데이터 부분에 저장된다.

PCB의 주요 구성 요소

OS 정보

  • 포인터: queue에 담겨진 PCB를 가리키는 용도
  • 프로세스 상태: ready, running 등
  • 프로세스 아이디 (PID): 프로세스 식별
  • 스케줄링 정보(우선순위, CPU 할당 시간 등)

CPU 정보

  • 프로그램 카운터 (PC): 다음에 수행할 명령어 위치
  • 레지스터: CPU 연산 시 사용했던 값의 정보

메모리 정보

  • 프로세스의 코드, 데이터, 힙, 스택의 주소 정보

파일 관련 정보

  • 어떤 파일을 읽고 있는지 정보

스레드

: 프로세스의 실행 단위
스택, 스레드 아이디, PC, 레지스터 집합으로 구성

  • 같은 프로세스 내의 다른 스레드와 코드 섹션, 데이터 섹션, 힙 섹션, 운영체제 자원 등을 공유함
  • 스레드 마다 별도의 스택을 가짐
    - 스택은 함수 호출 시 인지, 되돌아갈 주소값, 함수 내 변수 등을 저장하기 위해 사용하는 메모리 공간
    - 각 스레드마다 독립적인 함수 호출을 위해서는 별도로 스택 공간을 두어야 함
  • 스레드마다 별도의 PC, 레지스터 집합을 가짐
    - 각각의 스레드의 실행 위치를 저장하기 위해 PC를 별도로 가짐
    - 명령어 수행 중 값을 임시적으로 저장하기 위한 레지스터 집합 공간을 별도로 가짐

멀티 스레드

멀티 스레딩이란

하나의 프로세스에서 여러 스레드를 생성해 작업을 병렬로 수행하는 기술

멀티 스레딩의 장단점

장점

  • 응답성 향상
    하나의 스레드가 Blocked 상태가 되어도, 다른 스레드가 계속 실행될 수 있음
  • 자원 공유
    스레드는 같은 프로세스의 메모리 공간을 공유함
    자원 복사가 필요 없어 프로세스 간 통신보다 속도가 빠름
  • 비용 절감
    스레드는 프로세스보다 생성 및 관리 바용이 낮음
    문맥 전환 비용도 프로세스 간 전환보다 적음
  • 병렬 처리로 성능 향상
    멀티코어 CPU에서 여러 스레드를 병렬로 실행하여 성능을 극대화할 수 있음 (각 스레드가 CPU를 점유)

단점

  • 다른 프로세스 간에는 공유 자원이 없지만, 스레드 간에는 공유 자원이 있기 때문에 동일 자원에 동시 접근하여 문제를 일으킬 수 있음

멀티 프로세스

: 하나의 프로그램을 여러 개의 프로세스로 나누어 동시에 실행하는 구조로,
각 프로세스는 독립된 주소 공간과 자원을 가지며,
서로 간섭 하지 않아 안정성이 높다.
예: 크롬 브라우저의 탭 구조

멀티 프로세스의 장단점

장점

  • 안정성 높음
    하나의 프로세스가 비정상 종료되어도 다른 프로세스에 영향 없음
  • 병렬 처리 가능
    멀티 코어 CPU에서 여러 프로세스가 동시에 실행
  • 보안성 향상
    주소 공간이 분리되어 있어 침범이 어려움

단점

  • 메모리 낭비
    각 프로세스가 독립된 주소 공간을 가지므로 중복된 코드나 데이터 존재
  • 문맥 교환 (Context switching) 비용 증가
    프로세스 간 전환 시 PCB 저장 및 복원 필요
    -통신 복잡성 증가
    프로세스 간 데이터를 주고받기 위해 IPC(Inter-Process Communication) 필요

profile
뭐라도 해보자

0개의 댓글