ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 멀티 태스킹, 멀티 스레딩, 멀티 프로세싱, 멀티프로그래밍 차이점 공부하기
    OS 2025. 1. 27. 13:34

     

    멀티 태스킹, 멀티 스레딩, 멀티 프로세싱 공부하기

     

     

    관련 개념정리

    1. 프로세스

    2.CPU

    3.메인메모리

    4.I/O

     

     


    프로세스

    -컴퓨터에서 실행중인 프로그램

    -각각의 프로세스는 독립된 메모리 공간을 할당 받는다.
    -각각의 메모리공간에 명령어들과 데이터를 가진다.

     

    CPU

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

     

    메인메모리

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

     

     

    IO(input/output)

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


     

     

    단일 프로세스 시스템

    -한번에 하나의 프로그램만 실행됨

     

    단일 프로세스 시스템 단점

    -CPU 사용률이 좋지 않음
    -I/O작업을 할 때 CPU가 가동되지않음.

     

     

    해결책 : 멀티프로그래밍

    -여러개의 프로그램을 메모리에 올려놓고 동시에 실행시키자
    -I/O작업이 발생하면 다른 프로세스가 CPU에서 실행됨.



     

     

     

     

    멀티 프로그래밍

    CPU 사용률을 극대화시키는데 목적

     

     

    멀티프로그래밍의 단점

    CPU 사용시간이 길어지면 다른 프로세스는 계속대기
    P1의 시간이 계속길어지면 P2는 계속 대기만해야한다.

     

     

    해결책 : 멀티 태스킹

    프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(퀀텀(연속적이지않음))만 CPU에서실행되도록 하자

     

     



    예제)
    프로그램 P1,P2과 CPU가 있을때

    각 프로세스가 퀀텀(ms)로 매우 짧은 시간동안 실행된다. 

    각 프로세스들이 최대한의 CPU를 이용할 수 있다.



     

    멀티태스킹

    동시에 여러 프로그램을 실행시킨다는 면에서 멀티프로그래밍과 유사

    CPU타임을 아주아주 짧게 쪼개서 CPU타임마다 프로세스들이 교대로 번갈아가면서 실행된다는 점에서 차이점

    그 결과 프로세스의 동작에 대한 반응이 즉각적으로 이뤄진다.


    목적

    프로세스의 응답시간을 최소화 시킨다.


     

    남아있는 아쉬움

    1.하나의 프로세스가 동시에 여러작업을 수행하지는 못함

    2.프로세스의 컨텍스트 스위칭을 무거운 작업
     -> 하나의 프로세스를 여러개의 프로세스로 나눠서 작업하지 않는 이유

     

    (컨텍스트 스위칭)

    (CPU에서 한 프로세스에서 다른 프로세스로 교체되는 것)


    3.프로세스끼리 데이터 공유가 까다로움
    ->프로세스는 독립된 메모리공간을 할당받기 때문이다.


    4.듀얼 코어가 등장했는데 잘 쓰고 싶음

    (CPU 제조사에서 하나의 CPU성능을 계속높이는 것이 발열이슈등으로 어려워지자, 하나의 CPU안에 2개의 코어를 둬서 전체의 성능을 높이는 방향으로 전환함. )


    해결책 : 스레드


    스레드가 나온 배경
    한 프로세스 안에서 여러 개의 작업들을 동시에 실행하기 위한 목적.

    여러개의 작업들을 하나씩 맡는 것이 스레드

     

    스레드 특징

    1.프로세스는 한 개 이상의 스레드를 가질 수 있다.

    2. CPU에서 실행되는 단위.

    3. 같은 프로세스의 스레드들끼리 컨텐스트 스위칭은 가볍다.

    4. 자신들이 속한 프로세스의 메모리 영역을 공유한다.

    -> 스레드들은 각 메모리안에서 힙 메모리는 공유하지만 스택은 공유하지않는다.(스레드마다 별도의 스택이 따로있다. 그리고 각각의 스택을 가리키는 포인터들도 따로있다.) 
    그러니까 같은 프로세스에 속한 스레드들은 그 프로세스의 메모리 영역을 공유한다. 그렇더라도 스레드만의 고유한 영역도 있다. 

     


    예제1) 단일 코어 CPU와 스레드가 2개인 프로세스 1개가 있다.

    -> 멀티태스킹처럼 동작
    아주 짧은 시간동안 번갈아가면서 동작


    예제2) 코어가 2개인 CPU와 스레드가 2개인 프로세스 1개가 있다


    -> 각각의 코어에 1개씩 스레드가 실행된다. 진정한 동시. 병렬적으로 실행


     

    멀티스레딩

    하나의 프로세스가 동시에 여러 작업을 실행하는데 목적

      

    확장된 멀티태스킹 개념


    기존 의미
    -> 프로세스끼리의 아주 짧은시간 안의 스위칭



    새로운 의미
    -> 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time을 할당해서 여러 프로세스가 동시에 실행되는 것처럼 만드는 것(동시성)


    멀티프로세싱

    -> 2개 이상의 코어를 사용해서 여러 프로세스나 스레드가 동시에 실행되도록 하는 시스템 (병렬성)


     

     


    예제1) 싱글코어 CPU에 싱글스레드 프로세스 2개

    -> 1개의 코어에 2개의 프로세스 할당

    -2개의 프로세스가 1개의 CPU를 나눠서 쓴다 -> 멀티태스킹O

    -싱글스레드 -> 멀티스레딩X

    -CPU코어 1개 -> 멀티 프로세싱X
    (2개이상의 코어에서 여러 프로세스나 스레드가 실행되어야함.)



     

    예제2) 싱글코어 CPU에 듀얼스레드 프로세스 1개

    ->1개의 코어에 2개의 스레드 할당

    -CPU 1개로 나눠서 써야된다 -> 멀티태스킹O

    -듀얼스레드-> 멀티스레딩O

    -CPU코어 1개 -> 멀티프로세싱X


     

    예제3.듀얼코어 CPU에 싱글스레드 프로세스 2개

    ->1개의 코어가 각각 1개의 프로세스를 맡아서 실행

     

    -코어 1개씩 봤을때 경합하는 과정이 없다 -> 멀티태스킹X

    -싱글스레드 -> 멀티스레딩X

    -CPU 코어2개 ->멀티프로세싱O



     

    예제4. 듀얼코어 CPU에 듀얼스레드 프로세스 1개

    ->코어 1개가 스레드 1개씩 맡아서 동작

    -각각의 코어가 1개의 스레드만 맡아 동작하므로 경합하는 것이 없다. -> 멀티태스킹X

    -듀얼 스레드 -> 멀티스레딩O

    -CPU 코어2개 -> 멀티프로세싱O


     

    예제5. 듀얼코어 CPU에 듀얼 스레드 프로세스 2개


    예제5-1)각 코어에 듀얼스레드 프로세스 1개씩 할당

    -각 코어가 2개이상의 스레드를 경합 -> 멀티태스킹O

    -듀얼스레드 -> 멀티스레딩O

    -CPU 코어2개 -> 멀티프로세싱O


    예제5-2)각 코어에 스레드 1개씩 프로세스 2개할당 

    -각 코어가 경합하는 과정 -> 멀티 태스킹O

    -듀얼 스레드(1개의 프로세스가 2개의 스레드로 동작) -> 멀티 스레딩O

    -CPU 코어2개 -> 멀티프로세싱O





     

     

     

     

    'OS' 카테고리의 다른 글

    [Linux] 리눅스 기본 디렉토리 구조  (0) 2025.02.23
    [linux] linux 파일/디렉토리 권한  (1) 2024.12.11
    [linux] linux 명령어 팁  (0) 2024.12.11
Designed by Tistory.