본문 바로가기
개발 지식/기본지식

프로세스 관리

by greenyellow-s 2025. 5. 8.
728x90

 

 

    프로세스 관리

    운영체제는 자원을 프로세스에 할당하고, 프로세스가 정보를 공유와 교환을 가능하게 하며, 각 프로세스 자원을 다른 프로세스로부터 보호 하고, 동기화를 통해 협력을 가능하게 한다.

     

    이러한 요구를 중족하기 위해 운영체제는 각 프로세스를 위한 자료 구조를 관리한다.

     

    이를 통해, 프로세스의 상태와 자원 소유권을 기술할 수 있으며, 운영 체제는 각 프로세스를 효율적으로 감시하고 제어할 수 있다.

     

    즉, 운영체제가 수행하는 핵심 기능 중 하나로, 시스템에서 실행 중인 모든 프로세스를 효율적으로 생성하고, 실행하고, 종료하며, 자원을 분배하고, 상태를 관리하는 것을 말한다.

     

     

     

     


    주요기능

    기능 설명
    프로세스 생성 및 종료 새로운 프로세스 생성 (fork, exec), 작업 완료 후 종료 (exit)
    스케줄링 CPU를 어떤 프로세스에 할당할지 결정 (우선순위 기반, 라운드로빈 등)
    프로세스 상태 관리 READY, RUNNING, BLOCKED 등 상태 추적 및 전이 관리
    문맥 교환 (Context Switching) 하나의 프로세스 상태를 저장하고 다른 프로세스를 불러오는 작업
    동기화 및 통신 여러 프로세스 간의 협업과 충돌 방지를 위한 세마포어, 메시지 전달 등
    자원 할당 및 회수 CPU, 메모리, 파일 등 자원을 프로세스에 할당하고 종료 시 반환

     

     

     


    프로세스 상태 전이

    NEW → READY → RUNNING → BLOCKED → READY → RUNNING → TERMINATED
    NEW 생성 중
    READY 실행 대기 중
    RUNNING 실행 중
    BLOCKED 입출력 대기 중
    TERMINATED 종료됨

     

     

     

     

     


    프로세스 작성

    운영 체제는 다양한 상황에서 새로운 프로세스를 생성한다.

    • 시스템 초기화
    • 프로세스를 실행함으로써 프로세스 작성 시스템 호출 실행
    • 새로운 프로세스를 만들어달라는 사용자의 요청
    • 일괄 처리 시작

    운영 체제가 시동될 때 일반적으로 몇 개의 프로세스가 만들어진다.

    이 가운데 포그라운드 프로세스는 사용자와 서로 소통하며 사용자를 위해 일을 수행한다.

     

    백그라운드 프로세스는 특정 사용자와 연계하지 않지만 일부 특정한 기능을 수행한다.

     

     

     

     


    프로세스 끝내기

    프로세스를 끝내는 이유

    • 일괄 처리의 중단 명령 수행
    • 사용자 로그 오프
    • 프로세스의 서비스 끝내기 요청 실행
    • 오류 및 실패 조건
    • 정상적인 완료
    • 메모리 사용 불가
    • 바운드 위반
    • 보호 오류 (ex. 읽기 전용 파일에 쓰기를 할 경우)
    • 산술 오류 (ex. 0을 나눌 때)
    • 시간 실행 초과
    • 입출력 실패
    • 유효하지 않은 명령
    • 특별한 권한이 있는 명령
    • 데이터 오용
    • 운영 체제 중재
    • 부모 프로세스 종료
    • 부모 프로세스의 요청

     

     

     


    프로세스 서술 및 제어

    각 시스템 프로세스는 프로세스 제어 블록(PCB)으로 불리는 자료 구조를 표현하며

    PCB는 여행자의 여권과 같은 역할을 수행한다.

     

    PCB 기본 정보

    항목 설명
    프로세스 운영체제가 실행 중인 프로그램 인스턴스
    위치 프로세스가 메모리 상에 존재하는 위치
    이동 경로 프로세스가 시스템 자원 내에서 거쳐간 상태나 경로
    수행 정도 작업이 완료된 정도나 남은 작업량
    저장 위치 프로세스 관련 데이터가 저장되는 주소 또는 영역
    자원 점유량 프로세스가 점유하고 있는 CPU 시간, 메모리, 파일, 입출력 장치 등 자원의 양
    프로세스 동일성 고유 ID, 사용자 ID 등을 통해 프로세스를 고유하게 식별 가능. 서술자(Descriptor)와 포인터로 연결됨
    프로세스 상황 현재 상태: READY, RUNNING, BLOCKED, SUSPEND, BLOCKED SUSPEND 중 하나
    프로세스 상태 위 상황 외에도 레지스터 값, 프로그램 카운터, 스택 포인터, 입출력 상태 등 포괄적 정보 포함
    측정 성능 측정 지표로 사용. 예: CPU 사용 시간, 입출력 사용량, 대기 시간 등

     

     

     

     

     


    다중 프로그래밍

    현대의 대부분의 운영 체제는 하나 이상의 프로그램을 동시에 메모리에 적재할 수 있다. 이를 통해 CPU의 유휴 시간을 줄이고 시스템 자원의 활용도를 극대화한다.

    • 여러 사용자가 동일한 프로그램을 실행할 수 있으며, 각 사용자는 그 프로그램의 개별 복사본을 메모리에 점유한다.

     

    재진입성
    더보기

    특정 프로그램은 메모리에 하나의 복사본만 존재하면서도 여러 사용자 또는 프로세스가 동시에 독립적으로 접근할 수 있도록 설계될 수 있다. 이런 프로그램을 "재진입 가능 프로그램"이라고 한다.

    재진입성은 프로그램 코드가 공유될 수 있음을 의미하며, 공유 코드와 별도의 개별 데이터 영역을 활용하여 충돌 없이 동시 접근이 가능하다.

     

    동시 실행
    더보기

    CPU는 한 순간에 하나의 명령어만 실행할 수 있다.

    하지만 운영체제는 여러 프로그램이 일시적으로 유휴 상태일 때 다른 프로그램을 실행하도록 CPU를 전환 시킨다.

    이 방식으로 여러 프로그램이 동시에 실행되는 것처럼 보이는 현상을 "동시 실행"이라 한다.

    NAVER Google
    한글 카카오톡

     

    모든 차이 사용자에게 보여 동시에 실행되는 것처럼 보임

    실제로는 NAVER만 실행 중이며 나머지 프로그램은 유휴 상태

     

    〉 유휴 상태 : 프로세스나 시스템이 활동을 하지 않고 대기 중인 상태

     

     

    즉, 한 대의 컴퓨터에서 여러 개의 프로그램을 메모리에 동시에 오려두고, CPU가 놀지 않도록 하나가 멈추면 다른 것을 실행시키는 방식을 다중 프로그램이라고 한다.

     

     


    다중 프로그래밍 목적

    CPU 사용을 최대화

    프로그램 하나가 I/O (입추력)를 기다리는 동안 다른 프로그램을 실행시켜 CPU가 놀지 않게 만든다.

     

     

     

     


    다중 프로그래밍 특징

    동시 적재 ; 여러 프로그램이 메모리에 동시에 올라감

    단일 실행 ; 한 순간에는 하나의 프로그램만 CPU를 사용

    전환 기반 실행 ; 현재 실행 중인 프로그램이 I/O 작업 등으로 멈추면, 운영체제가 다른 프로그램으로 CPU를 전환

    문맥 교환 필요 ; 전환 시, 현재 상태를 저장하고 다른 프로그램의 상태를 복원해야 함

     

     

     

     


    멀티 태스킹과의 차이

      다중 프로그래밍 멀티 태스킹
    정의 여러 프로그램을 메모리에 올려
    CPU를 쉬지 않게 하는 방식
    사용자가 여러 작업을
    동시에 수행하는 것처럼 보이게 하는 방식
    목적 CPU 효율 높이기 위해 사용자 경험 향상
    실행 주체 시스템 중심 - 운영체제가 CPU를 효율적으로 배분 사용자 중심 - 여러 작업을 동시에 처리하는 것처럼 보여줌

     

     

     

     

     


    다중 프로그램 구조

    프로세스 제어 블록 (PCB)

    • 각 프로세스의 정보를 담은 데이터 구조
    • 프로세스 ID, 상태, 레지스터, 메모리 위치, 열린 파일 등

    스케줄러 (Scheduler)

    • 어떤 프로세스에 CPU를 줄지 결정
    • 대표 스케줄링 알고리즘
      • FCFS
      • Round Robin (RR)
      • Priority Scheduling

    문맥 교환 (Context Switch)

    • 실행 중인 프로세스의 상태 저장 & 다른 프로세스 상태 복원
    • CPU 자원을 효율적으로 전환하기 위한 핵심 매커니즘

     

    동작 흐름 예시

    • 메모리에 A, B, C 3개의 프로그램이 올라감
    • A 실행 중 → 입출력(I/O) 요청 발생 → CPU 반납
    • 스케줄러가 B 선택 → B 실행
    • B 끝남 → C 실행
    • A의 I/O 완료 → 다시 실행 대기 큐로 이동
    • 스케줄러가 A 선택 → A 실행 재개
    728x90

    '개발 지식 > 기본지식' 카테고리의 다른 글

    터미널 기본 명령어 / 실습  (0) 2025.05.14
    스레드와 동시성  (0) 2025.05.13
    운영체제(OS)의 일반적인 작동 원리  (0) 2025.05.02
    터미널이란  (0) 2025.05.02
    호스팅이란  (0) 2025.05.02