PromleeBlog
sitemapaboutMe

posting thumbnail
프로세스란 무엇일까?- 하루 10분 운영체제 3일차
What is a Process? - Ten-Minute Operating System Day 3

📅

🚀

들어가기 전에🔗

프로그램이 실행될 때 컴퓨터는 이를 어떻게 관리할까요? 운영체제는
프로세스
라는 단위로 프로그램을 구분하고 관리합니다. 이 글에서는 프로세스가 무엇인지, 어떻게 작동하는지, 그리고 서로 다른 프로세스 간에는 어떻게 통신하는지에 대해 알아보겠습니다.
이 개념은 기술 면접이나 운영체제 관련 질문에서 자주 등장하므로, 면접 준비를 하는 분이라면 꼭 알고 넘어가야 할 핵심 내용입니다.

🚀

프로세스란 무엇인가요?🔗

프로세스(Process)
는 실행 중인 프로그램을 의미합니다. 다시 말해, 하드디스크에 저장된 정적인 프로그램이 메모리에 올라와 실행될 때 비로소 프로세스가 됩니다.
예를 들어, 워드 파일을 두 번 실행하면 같은 프로그램이지만 서로 다른 프로세스 두 개가 만들어집니다. 각 프로세스는 독립적인 메모리 공간을 가지며 서로의 정보를 직접적으로 공유하지 않습니다.
프로세스는 다음과 같은 구성 요소를 갖습니다

🚀

프로세스 스케줄링🔗

하나의 CPU로 여러 프로세스를 동시에 실행하는 것처럼 보이게 하려면, 운영체제는
스케줄링
이라는 작업을 해야 합니다.
스케줄링이란 CPU를 어떤 프로세스에 얼마나, 언제 할당할지를 정하는 과정입니다. 이 작업을 담당하는 것이 바로
CPU 스케줄러
입니다.
운영체제는 일반적으로 다음과 같은 스케줄링 정책 중 하나를 사용합니다
각 스케줄링 방법은
반응 속도
,
처리량
,
대기 시간
등에 영향을 주기 때문에 상황에 따라 선택이 달라집니다.

4가지 스케쥴링 방법 비교🔗

4가지 스케쥴링 방법 비교
4가지 스케쥴링 방법 비교
  1. FCFS (First-Come, First-Served)
    • 도착한 순서대로 실행
    • P1 → P2 → P3 순서
    • 각 프로세스가
    먼저 온 순서대로
    실행됨
    • 단점: P1의 실행 시간이 길면, 뒤에 온 P2, P3가 오래 기다림
  2. RR (Round Robin)
    • 각 프로세스에
    고정된 시간(Quantum)
    을 줌
    • 예: P1 → P3 → P2 → P1
    • 시간 조각 단위로 번갈아가며 조금씩 실행
    • 장점: 응답성이 좋음, 공정함
    • 단점: Context Switching 비용 증가 가능
  3. SJF (Shortest Job First)
    • 실행 시간이
    짧은 작업
    부터 실행
    • 예: P2(2s) → P3(4s) → P1(7s)
    • 전체 대기 시간 평균을 최소화할 수 있음
    • 단점: 실행 시간을 사전에 알아야 함, 긴 작업이 기아(starvation) 가능
  4. 우선순위 기반 (Priority Scheduling)
    우선순위가 높은
    프로세스 먼저 실행
    • 예: P2(우선순위 1) → P3(2) → P1(3)
    • 사용자 또는 시스템이 설정한 우선순위 기반
    • 단점: 우선순위 낮은 작업이 계속 밀릴 수 있음 (기아 현상)
항목FCFS (먼저 온 순서대로)RR (라운드 로빈)SJF (짧은 작업 우선)우선순위 기반
기준도착 순서시간 조각실행 시간우선순위
응답 시간느림빠름평균적우선순위에 따라 다름
대기 시간길어질 수 있음보통짧음 (평균 최소)다름 (낮은 우선순위는 길 수 있음)
선점 가능 여부비선점선점둘 다 가능둘 다 가능
장점간단함, 구현 쉬움공정함, 응답성 좋음평균 대기시간 최소화긴급 작업 우선 실행
단점긴 작업으로 전체 지연 가능Context Switching 많음실행 시간 예측 필요기아 가능성 있음

🚀

프로세스에 대한 연산🔗

운영체제는 프로세스를 다음과 같이 다룰 수 있습니다
예를 들어, 웹 브라우저를 새로 열면 운영체제는 새로운 프로세스를 생성합니다. 사용자가 창을 닫으면 그 프로세스는 종료됩니다. 백그라운드에서 일시 중지되었다가 다시 실행되기도 합니다.

🚀

프로세스 간 통신 (IPC)🔗

서로 다른 프로세스는 독립적인 공간을 사용하므로, 정보를 주고받기 위해서는 특별한 방법이 필요합니다. 이를
프로세스 간 통신(IPC, Inter-Process Communication)
이라 합니다.
대표적인 IPC 방식은 다음과 같습니다

공유 메모리 방식🔗

두 프로세스가 특정 메모리 공간을 함께 사용합니다. 빠르지만,
동기화 문제
가 발생할 수 있어 주의가 필요합니다.
예: 생산자-소비자 문제에서 하나의 버퍼를 함께 사용하는 경우

메시지 전달 방식🔗

운영체제를 통해 메시지를 보내고 받는 방식입니다. 보안성이 높고, 구조가 명확합니다.
예: 채팅 앱에서 메시지를 서버에 보내고, 다른 클라이언트가 수신하는 구조
image

🚀

IPC 시스템의 사례🔗

실제 운영체제는 다양한 IPC 메커니즘을 제공합니다. 예를 들어:
Node.js나 Python 같은 고급 언어들도 이러한 IPC 기능을 내장하거나 라이브러리로 지원합니다.

🚀

클라이언트-서버 환경에서의 통신🔗

현대의 많은 프로그램은
클라이언트-서버 구조
를 기반으로 동작합니다. 클라이언트가 요청을 보내고, 서버가 응답을 처리하는 구조입니다.
예를 들어, 웹 브라우저(클라이언트)는 웹 서버에 페이지를 요청하고, 서버는 HTML 파일을 전달합니다. 이 모든 과정에서 운영체제의
네트워크 IPC 기능(소켓 등)이
핵심 역할을 합니다.
클라이언트-서버 구조 통신 흐름도
클라이언트-서버 구조 통신 흐름도

🚀

요약🔗

이번 글에서는 운영체제의 가장 기본 단위인 프로세스에 대해 배워보았습니다. 실행 중인 프로그램이 어떻게 메모리에 적재되고, 어떻게 CPU를 배정받으며, 또 다른 프로세스와 어떻게 소통하는지를 차근차근 살펴보았습니다.
다음 글에서는 '스레드와 병행성'이라는 주제로 이어집니다.

참고🔗