본문 바로가기

CS/운영체제

멀티 태스킹과 스레딩과 프로세싱[Multi tasking & Threading & Processing]

초읽기

Program

  • 컴퓨터가 실행할 수 있는 명령어들의 집합

CPU

  • 명령어를 실행하는 연산장치

MainMemory

  • 프로세스가 CPU에서 실행되기 위해 대기하는 곳

IO(input/output)

  • 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받음
  • 입출력 장치와 데이터를 주거나 받는것

프로세스(Process)

  • 컴퓨터에서 실행중인 프로그램(Program)입니다.
    • Program : 컴퓨터가 실행할 수 있는 명령어들의 집합
  • 각각의 프로세스는 독립된 메모리 공간을 할당 받습니다.
  • 명령어들과 데이터를 가집니다.

스레드(Tread)

  • 프로세스는 한 개 이상의 스레드를 가질 수 있습니다.
  • 동시에 여러 작업을 하게 해줄 수 있는 방법
  • CPU에서 실행되는 단위입니다.
  • 컨텍스트 스위칭(Context Switching)이 가볍다!
  • 같은 프로세스에 소속된 스레드(Thread)끼리 데이터 공유가 쉽다!
  • 자신들이 속한 프로세스의 메모리 영역을 공유합니다!
    • 스택(Stack)을 제외한 영역을 공유하고 있습니다.

그래서 생겨났습니다!

단일 프로그래밍

한가지 프로그램만 실행 시킬 수 있는 프로그래밍이기 때문에 단점이 어마무시 하다는 점!
그래서 뛰어난 머리를 가진 사람들이 아이디어를 내게 됐습니다.
"여러개의 프로그램을 메모리에 올려놓고 동시에 실행시키는건 어때?"

그래서 생겨났습니다!

멀티 프로그래밍(Multi Programming)

이상적으로 CPU를 나눠서 사용하고 있는 것!

CPU의 사용률을 극대화 하는 프로그래밍입니다. 하지만 한 프로세스가 CPU의 사용이 길어지게 되면 다른 프로세스는 무한정 대기를 하는 상황에 빠지게 됩니다!

한 프로레스가 너~~~~무 오래 CPU를 사용을 한다!




그래서 생겨났습니다!

멀티 태스킹(Multi Tasking)

멀티 프로그래밍과 유사하지만, CPU 타임을 잘게 쪼개서 프로세스들이 번갈아가며 실행되는 것입니다. 응답시간을 최소화 시켜서 여러 시스템이 즉각적 응답을 보여줘 동시에 실행되는 것 처럼 보이게 하는 효과를 가져다 주었습니다.

따닥 따닥 붙어있어서 프로세스들이 번갈이 실행이 잘 되는 중!

단, 하나의 프로세스가 동시에 여러 작업을 하지 못한다는 아쉬움이 생겨났고!

프로세스의 컨텍스트 스위칭(Context Switching)은 무거운 작업이며, 프로세스끼리 데이터 공유가 까다롭다는...

그래서 생겨났습니다!!

멀티 스레딩(Multi Threading)

하나의 프로세스가 동시에 여러작업을 실행하는데 목적을 두고 있습니다.
멀티 스레딩의 등장으로 인해서 멀티 테스킹의 개념이 확장이 되었는데, 여러 프로세스와 여러 스레드가 아주 짧게 CPU Time을 나눠 갖는 것입니다.

이 상황에서 또 생겨났습니다.

멀티 프로세싱(Multi Processing)

두 개 이상의 프로세서나 코어를 활용하는 시스템으로 두뇌가 두개다! 이렇게 생각하시면 되겠습니다.
두뇌가 두개이면 확실히 연산 속도가 빨라지고 성능도 늘어나게되겠습니다!

각 스레드가 코어마다 사용을 하는것!

 

예상 질문

멀티 태스킹, 멀티 스레딩, 멀티 프로세싱의 차이점에 대해서 말씀해 주세요

멀티 태스킹(Multi Tasking)은 CPU 하나를 두고 스레드가 경쟁을 하는 것을 의미합니다.
멀티 스레딩(Multi Treading)은 프로세스 내부에 스레드가 2개 이상이 있는 것을 의미합니다.
멀티 프로세싱(Multi Processing)은 CPU의 코어가 2개 이상이 있는 것을 의미합니다.

 

reference

https://www.youtube.com/watch?v=QmtYKZC0lMU&list=PLcXyemr8ZeoT-_8yBc_p_lVwRRqUaN8ET&index=2