ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1068) N
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (181) N
      • Unreal (69)
      • Unity (101) N
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 알고리즘
  • 포인터
  • 그래픽스
  • Unity
  • 프로그래머스
  • 언리얼
  • 함수
  • C
  • 문자열
  • C++
  • 티스토리챌린지
  • string
  • SQL
  • 클래스
  • 파이썬
  • c#
  • 배열
  • 유니티
  • 오블완
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

멀티 프로세싱 vs 멀티 프로그래밍 vs 멀티 태스킹 vs 멀티 스레딩
CS/OS & 하드웨어

멀티 프로세싱 vs 멀티 프로그래밍 vs 멀티 태스킹 vs 멀티 스레딩

2024. 7. 28. 21:50

멀티 프로세싱 (Multi processing)

다수의 프로세서가 협력적으로 일을 처리하는 것이다. 프로세서는 CPU나 Microprocessor라는 하드웨어를 의미하며, 프로세스는 실제 메로리에 적재되어 프로세서에 의해 실행되고 있는 프로그램이다. 보통 하나의 프로세서 (CPU)가 하나의 작업을 맡지만 멀티 프로세싱은 다수의 프로세서가 다수의 작업을 함께 처리하는 것이다.

 

멀티 프로세싱의 장점은 하나의 프로세서가 고장이 나더라도 해당 프로세서가 진행 중인 작업은 다른 프로세서에서 수행하고 있기 때문에 작업이 정지되지 않는다, 또한, 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용한다면 각 데이터를 각 프로세서에게 할당할 필요 없이 하나의 공간에 데이터를 저장한 후 이를 공유하여 사용하도록 한다면 비용을 절약할 수 있다.

멀티 프로그래밍 (Multi programming)

하나의 프로세서가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법이다.

초기 컴퓨터는 하나의 프로세서가 하나의 프로세스만 처리할 수 있도록 설계되었지만 하나의 프로세스를 처리하는 과정에서 프로세서의 처리 속도와 입출력 속도 간의 차이로 인해 입출력 처리가 완료될 때까지 기다리는 비효율적인 상황이 발생하게 된다.

멀티 프로그래밍은 입출력이 완료될 때까지 기다리는 시간을 버리지 말고 다른 프로세스를 처리할 수 있도록 해주는 것이다. 

멀티 태스킹 (Multi tasking)

다수의 작업 (Task)을 운영체제의 스케줄링에 의해 번갈아 가며 수행되도록 해주는 것이다. 프로세서는 특정 순간에 하나의 작업만 수행할 수 있지만 우리는 컴퓨터를 사용할 때 인터넷도 사용하고 카카오톡도 사용하고 게임도 하는 등 다양한 작업을 동시에 사용할 수 있다. 이는 운영체제가 다수의 작업을 스케줄링하여 우리가 느끼지 못하는 시간마다 작업을 번갈아가며 수행하여 우리 눈에는 동시에 수행되는 것처럼 보이게 해주기 때문이다.

멀티 태스킹의 스케줄링 방식은 멀티 프로그래밍 방식은 로그래밍 방식(Multi-programming), 시분할 방식(Time-sharing), 실시간 시스템 방식(Real-time)을 사용하여 수행된다.

​멀티 프로그래밍은 위에서 언급하였고 시분할 방식은 CPU의 전체 사용 시간을 작은 작업 시간량으로 분할하여 그 시간량 동안 작업에게 번갈아가며 CPU를 할당해 주는 방식이고 ​실시간 시스템 방식은 말 그대로 실시간으로 처리해 주는 것이다.

멀티 스레딩 (Multi threading)

​멀티 스레딩은 하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것이다. ​즉, 하나의 프로세스가 동시에 여러 개의 스레드를 수행할 수 있도록 해주는 것이다.

​하나의 프로세스에는 하나 이상의 스레드가 존재할 수 있다. 프로세스를 생성하는 비용보다 스레드를 생성하는 비용이 더 저렴하기 때문에 프로세스에 다수의 스레드를 생성하여 병렬처리하는 것이다. ​또한, 프로세스는 데이터, 힙, 스택 영역을 서로 공유하지 않지만 스레드는 스택 영역을 제외한 데이터, 힙 영역을 서로 공유하기 때문에 메모리 부분에서도 훨씬 효율적이다.

 

https://sorjfkrh5078.tistory.com/56

저작자표시 (새창열림)

'CS > OS & 하드웨어' 카테고리의 다른 글

Virtual Machine (가상 머신이란?)  (0) 2024.09.19
컴퓨터 시스템  (3) 2024.09.03
애플리케이션 테스트 종류  (0) 2024.07.25
테스트 기법 (화이트박스 / 블랙박스)  (0) 2024.07.17
단위 테스트 (컴포넌트 테스트) / 드라이버 (Driver), 스텁 (Stub), 오라클 (Oracle)  (0) 2024.07.15
    'CS/OS & 하드웨어' 카테고리의 다른 글
    • Virtual Machine (가상 머신이란?)
    • 컴퓨터 시스템
    • 애플리케이션 테스트 종류
    • 테스트 기법 (화이트박스 / 블랙박스)
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바