동시성과 병렬성, 멀티 프로세스와 멀티 스레드

2025. 1. 31. 16:25·CS지식/운영체제
728x90
반응형

프로그램을 실행하는 방식에는 동시성(Concurrency) 과 병렬성(Parallelism) 이 존재합니다. 각각의 개념을 이해하면 멀티태스킹 환경에서 효율적인 프로그래밍이 가능합니다.

동시성(Concurrency)

동시성은 싱글 코어(Single Core) 환경에서 여러 작업을 번갈아 가면서 처리하는 방식입니다.

 

CPU는 한 번에 하나의 작업만을 실행할 수 있기 때문에, 여러 작업을 일정 시간 동안 실행한 후 다른 작업으로 전환하는 방식으로 동시성을 구현합니다.

이러한 작업 전환 과정에서 콘텍스트 스위칭(Context Switching) 이 발생합니다. 이는 실행 중인 작업의 상태를 저장하고 새로운 작업의 상태를 복원하는 과정으로, 동시성 환경에서 필수적으로 수행됩니다.

병렬성(Parallelism)

병렬성은 멀티 코어(Multi Core) 환경에서 각 코어가 독립적으로 작업을 수행하는 방식입니다. 즉, 여러 개의 CPU가 동시에 각각의 작업을 처리하여 물리적으로 동시에 실행됩니다. 병렬 처리는 동시성과 달리 작업 전환이 필요하지 않으며, 다수의 연산을 동시에 수행하는 데 유리합니다.


멀티 프로세스 (Multi Process)

멀티 프로세스는 하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 실행하는 방식입니다. 이를 통해 프로그램의 안정성을 높일 수 있습니다.

멀티 프로세스의 장점

  • 한 프로세스가 오류로 인해 종료되더라도, 다른 프로세스에는 영향을 주지 않음
  • 여러 프로세스로 나누어 실행하면 프로그램 전체가 중단될 위험이 낮아짐

멀티 프로세스의 단점

  • 각 프로세스는 독립적인 메모리 공간을 할당받아야 하므로, 메모리 사용량이 증가
  • CPU가 여러 프로세스를 번갈아 실행해야 하므로 콘텍스트 스위칭 오버헤드 가 발생

콘텍스트 스위칭과 오버헤드

CPU는 한 번에 하나의 프로세스만 실행할 수 있으므로, 여러 프로세스를 실행하려면 현재 실행 중인 프로세스를 저장하고 새로운 프로세스로 전환하는 콘텍스트 스위칭 작업이 필요합니다. 이 과정에서 추가적인 시간과 메모리가 소모되며, 이를 오버헤드(Overhead) 라고 합니다.

프로세스 간 통신 (IPC: Inter Process Communication)

멀티 프로세스 환경에서는 프로세스가 독립적인 메모리 공간을 가지므로, 서로 데이터를 주고받으려면 IPC(Inter Process Communication) 를 사용해야 합니다. 그러나 이는 직접 메모리를 공유하는 것보다 비효율적 입니다.


멀티 스레드 (Multi Thread)

멀티 스레드는 하나의 프로세스 내부에서 여러 개의 스레드를 생성하여 실행하는 방식입니다.

멀티 스레드의 장점

  • 메모리 공간을 공유 하므로, 여러 개의 프로세스를 생성하는 것보다 메모리 사용량이 적음
  • IPC 없이도 자원 공유가 가능 하므로, 멀티 프로세스보다 효율적
  • 콘텍스트 스위칭 비용이 적음, 즉 오버헤드가 상대적으로 낮음

멀티 스레드의 단점

  • 스레드 간 스택(Stack) 영역을 공유 하므로, 공유 자원 동기화 가 필수적
  • 한 스레드에서 문제가 발생하면 전체 프로세스에 영향을 미칠 가능성이 있음

결론

동시성과 병렬성은 CPU의 작업 처리 방식에 따라 달라지며, 각각의 특징을 고려하여 적절한 방식으로 시스템을 설계해야 합니다.

  • 멀티 프로세스 는 독립적인 실행 환경을 보장하지만, 메모리 사용량과 오버헤드가 증가합니다.
  • 멀티 스레드 는 자원을 효율적으로 사용할 수 있지만, 동기화 문제가 발생할 가능성이 있습니다.

따라서 응용 프로그램의 특성과 목적에 따라 적절한 방식(멀티 프로세스 또는 멀티 스레드)을 선택하는 것이 중요합니다.

 

해당 글은 다음 도서의 내용을 참고하고 추가적인 정보를 기재한 글임을 밝힙니다.


이수진, ⌜기술면접대비 CS전공 핵심요약집⌟, (주)도서출판 길벗

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'CS지식 > 운영체제' 카테고리의 다른 글

교착 상태(Deadlock)와 스레드 안전(Thread Safe)  (0) 2025.02.03
프로세스 동기화  (0) 2025.02.01
PCB(Process Control Block), 프로세스의 생성, 프로세스 상태도  (0) 2025.01.30
프로세스, 메모리 구조  (0) 2024.11.05
운영체제, 커널, 시스템 콜  (0) 2024.11.05
'CS지식/운영체제' 카테고리의 다른 글
  • 교착 상태(Deadlock)와 스레드 안전(Thread Safe)
  • 프로세스 동기화
  • PCB(Process Control Block), 프로세스의 생성, 프로세스 상태도
  • 프로세스, 메모리 구조
리태s
리태s
게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
    반응형
    250x250
  • 리태s
    LeeTaes 공부노트
    리태s
  • 전체
    오늘
    어제
    • Home (165)
      • 프로젝트 (20)
        • Isaac 3D (5)
        • TimelessAdventure (13)
        • FruitsPuzzle (2)
      • Game Programming (25)
        • C# (8)
        • Unity Engine (6)
        • Unreal Engine (8)
        • UE_Multiplayer (3)
      • 코딩테스트 (111)
        • 프로그래머스 (Lv. 0) (27)
        • 프로그래머스 (Lv. 1) (31)
        • 프로그래머스 (Lv. 2) (21)
        • 백준 (Study) (29)
        • 알고리즘 (3)
      • CS지식 (7)
        • 운영체제 (7)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    2022 kakao
    2018 kakao
    Algorithm
    sesac
    후기
    fsoftobjectpath
    백준
    pcce 기출문제
    c#
    issac3d
    청년취업사관학교
    ai controller
    Unreal Engine
    unity
    프로세스
    2019 kakao
    프로그래머스
    project t.a develop
    구현
    Summer/Winter Coding
    C++
    dataasset
    delegate
    코딩테스트
    tsoftobjectptr
    timelessadventure
    CS지식
    unrealengine
    fruitspuzzle
    프로젝트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
리태s
동시성과 병렬성, 멀티 프로세스와 멀티 스레드
상단으로

티스토리툴바