개발/ETC

단일 프로세스 시스템 알아보기!

devhooney 2025. 4. 16. 10:42
728x90

단일 프로세스 시스템에 대해서 알아보자 !

 

 

 

 


 

 

 

단일 프로세스 시스템은 한 번에 하나의 프로그램만 실행한다. 또 다른 프로그램을 실행하려면, 먼저 실행 중이던 프로그램을 종료시키고 그 다음 프로그램을 실행해야 한다.

 

 

 


 

 

728x90

 

 

 

단일 프로세스 시스템의 단점

❌ 1. 병렬 처리 불가
한 번에 하나의 작업만 처리 가능해서 여러 작업을 동시에 수행할 수 없어.

예: 사용자가 작업 중에 파일 다운로드나 음악 재생을 동시에 할 수 없음.

❌ 2. 응답성 저하
하나의 작업이 오래 걸리면 전체 시스템이 멈춘 것처럼 느껴질 수 있어.

예: 무한 루프나 I/O 대기 중이면 시스템 전체가 반응이 없음.

❌ 3. 확장성 한계
다중 CPU나 멀티코어 환경을 활용할 수 없음.

현대 시스템에서는 CPU 코어가 많아도 하나만 쓰는 비효율 발생.

❌ 4. 에러의 영향 범위가 큼
하나의 프로세스에서 에러가 발생하면 전체 시스템이 영향을 받아.

예: 메모리 누수나 예외 상황 발생 시 시스템 전체가 다운됨.

❌ 5. 모듈화 및 유지보수 어려움
모든 기능이 하나의 프로세스에 집중되므로, 코드가 커질수록 복잡하고 유지보수 어려움.

 

 

 


 

 

 

개선 방법

✅ 1. 멀티프로세스(Multi-Process) 구조로 전환
여러 개의 프로세스를 생성해서 병렬로 작업 처리 가능하게 함.

각 프로세스가 독립적으로 실행되므로 하나의 프로세스가 죽어도 전체 시스템에는 영향이 적음.

예: 웹 서버에서 요청마다 프로세스를 분기해서 처리.

✅ 2. 멀티스레드(Multi-Thread) 도입
하나의 프로세스 내에서 여러 스레드를 만들어 동시에 여러 작업 수행.

메모리를 공유하기 때문에 통신 속도는 빠름.

예: UI 응답은 메인 스레드, 데이터 로딩은 백그라운드 스레드로 처리.

✅ 3. 이벤트 기반 구조(Event-driven Architecture) 적용
비동기 방식으로 이벤트를 큐에 쌓고, 하나씩 처리하는 구조.

Node.js나 JavaScript에서 주로 사용함.

CPU 리소스를 효율적으로 사용 가능.

✅ 4. 비동기 I/O 사용
I/O 작업(예: 파일 읽기, 네트워크 요청 등)을 동기 방식 대신 비동기 처리로 전환.

기다리지 않고 다른 작업을 먼저 처리함으로써 응답성을 높일 수 있음.

✅ 5. 프로세스 분산 (Microservices / Modularization)
시스템 기능을 여러 서비스(또는 모듈)로 나누고, 필요 시 독립적으로 배포·확장 가능하게 함.

유지보수성과 확장성이 좋아짐.

✅ 6. 로드 밸런싱 도입
여러 프로세스나 서버에 작업을 균등하게 분산시켜서 처리 속도 향상과 시스템 안정성 확보.

 

 

 

 


 

 

멀티 프로그래밍과 멀티 태스킹의 차이

 

 

💡 멀티프로그래밍 (Multiprogramming)
정의: 하나의 CPU가 여러 프로그램을 번갈아가며 실행하는 방식

목적: CPU의 유휴 시간(Memory I/O 등)을 줄이기 위해 CPU를 최대한 활용하는 것

방식: CPU가 한 프로그램을 실행하다가 I/O 작업 등으로 대기 상태가 되면,
다른 프로그램으로 전환해서 실행함

예시:

A 프로그램이 디스크에서 데이터를 읽는 동안, B 프로그램이 CPU를 사용해서 계산함

특징:

병렬 처리 아님! 실제로는 CPU가 한 번에 하나의 작업만 수행

사용자 입장에서 동시에 여러 작업이 돌아가는 것처럼 보임

💡 멀티태스킹 (Multitasking)
정의: 사용자가 동시에 여러 작업을 처리할 수 있게 해주는 기능

목적: 사용자 경험 향상 (여러 앱을 동시에 실행 가능하게 함)

방식:

CPU 시간을 쪼개서 각 작업(프로세스나 스레드)에 아주 짧은 시간씩 번갈아 배분 (타임 슬라이싱)

현대 OS는 이걸 매우 빠르게 반복해서, 사용자에겐 동시에 동작하는 것처럼 보임

예시:

음악을 들으면서 웹 서핑을 하면서 파일 다운로드도 진행 중인 상황

특징:

멀티프로그래밍보다 좀 더 사용자 중심이고 실시간 반응을 중요시함

멀티프로그래밍이 기술적 자원 관리 중심이라면, 멀티태스킹은 사용자 경험 중심


 

 

 

끝!

 

 

https://www.youtube.com/watch?v=QmtYKZC0lMU

728x90

'개발 > ETC' 카테고리의 다른 글

이진 트리 공부  (73) 2025.04.30
페이지 교체 알고리즘 공부  (189) 2025.04.28
무중단 배포 알아보기  (90) 2025.03.25
CORS 알아보기  (59) 2025.01.10
git 브랜치 생성, 전환하기  (40) 2025.01.08