ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Careerthon] 컴퓨터시스템의 발전으로 본 스레드와 프로세스
    카테고리 없음 2023. 11. 6. 15:24

    개요

    • 주요 용어정리
    • 컴퓨터시스템의 발전
    • 정리와 비유
    • 멀티스레드와 프로세스의 차이

    주요 용어정리

    프로그램

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

     

    프로세스

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

    각각의 프로세스는 독립된 메모리 공간을 할당받는다

     

    메인메모리

    프로세스가 여기서 대기중임

    IO 네트워크의 어딘가와 데이터를 주고 받는 것 입출력장치랑 주고 받음

     

    컴퓨터시스템의 발전

    단일프로세스시스템

    • 초창기버전임 한번에 하나의 프로그램만 실행됨
    • CPU사용률이 좋지 않다는 단점이 있음 

    단일프로세스의 실행모습

    실행중에 있는 프로세스가 io작업간에는 아무작업도 안하고 놀고 있음 (중간중간 빈 시간이 있다)

    해결책 : 멀티프로그래밍

     

    멀티프로세스 ( 멀티프로그래밍 )

    여러개의 프로그램을 메모리에 올려두고 동시에 실행시키자

    io작업이 발생하면 다른 프로세스가 CPU에서 실행이 된다

     

    cpu사용률을 극대화시키는데 목적이 있다 

    단점은 cpu사용기간이 길어지면 다른 프로세스는 계속 대기를 해야함

    해결책 : 멀티태스킹

     

    멀티태스킹

    cpu를 사용할 때 아주 짧은 시간만 cpu에서 실행을 하자!!!

    프로세스를 엄청 잘게 쪼갠다고 생각을 하면 됨 그걸 번걸아가면서 실행을 하는 것임

    이것이 멀티태스킹임 멀티프로그래밍과 동시에 여러개를 실행한다는 면에서는 유사하나 잘게 쪼개는 것이 차이가 난다

    이것은 응답시간을 최소화시켜서 여러프로그래밍이 동시에 실행되는 듯한 느낌이 든다.

    그래도 아쉽다 하나의 프로세스가 동시에 여러 작업을 수행하지 못한다는 아쉬움이 있다.

    아쉬운 이유

    • 프로세스의 컨텍스트 스위칭은 굉장히 힘든 작업임 (무거운작업)
    • 프로세스끼리는 데이터 공유가 까다롭다
    • 하나의 CPU를 계속 발전시키다보니 발열 등의 이슈가 생겨 차라리 코어를 두개를 넣어서 성능을 개선하자는 듀얼코어가 등장했는데 이거 잘 쓰고 싶음

    해결책: 스레드

     

    스레드

    • 프로세스는 한개 이상의 스레드를 가질 수 있다.
      • 한 프로세스에서 여러개의 작업을 동시에 하고 싶기에 나누는 단위인 스레드가 나옴
    • CPU에서 실행되는 단위임 옛날에서는 프로세스가 실행되는 단위였는데 스레드로 바뀜
    • 같은 프로세스의 스레드들끼리는 컨텍스트 스위칭이 가볍다.
    • 같은 프로세스에 속한 스레드는 메모리 영역을 공유한다. (데이터 공유가 쉽다)
      • 멀티스레드는 자신만의 공간(stack)도 있고, heap이라는 공유저장공간도 있음

     

     

    멀티스레딩

    **코어가 한개인 CPU와 2개인 CPU 비교사진

    하나의 프로세스가 동시에 여러 작업을 실행하는데 목적이 있다 여러작업은 스레드를 통해서 실행한다.

    기존에는 프로세스끼리의 아주 짧은 시간안에서의 스위칭이였는데 스레드가 등장하면서 여러프로세스와 여러 스레드가 스위칭하는 것으로 바뀜

     

    멀티프로세싱 

    2개이상 CPU(코어)or 프로세 사용  

     

     

    멀티태스킹 : 하나의 코어를 가지고 스레드든 프로세스든 경합을 하는지 보자

    멀티스레딩 : 스레드가 멀티인지 싱글인지 보자 

    멀티프로세싱 : 코어가 2개이상인지 보고 동시에 코어를 사용하는지 봐라

     


    정리와 비유

     

    단일 프로세스 : 종업원 1명

            A고객의 주문을 받고 커피를 만들어준다.

            A고객의 커피는 24시간 후에 완성되었다.

            종업원은 그제서야 B고객의 주문을 받고 커피를 만들어준다.

     

    멀티 프로세스 : 종업원 1명

            A고객의 주문을 받고 커피를 만드는 도중에 B고객의 주문을 받는다. 

            A고객의 커피가 완성되지 않으면 B는 계속 기다려야한다.

            A고객의 커피가 24시간 후에 완성되었다면 A고객은 24시간 후에 커피를 마실 수 있고

            B고객의 커피는 24시간이 지나서야 만들기 시작한다 (...)

     

    멀티 태스킹 : 종업원 1명

            A고객의 주문을 받고 커피를 만드는 도중에 B고객의 주문을 받는다.

            A고객의 커피 10초, B고객의 커피 10초씩 번갈아 작업하여 먼저 완성된 커피를 제공한다.

     

    멀티스레딩 : 종업원 2명 이상. 주문받는 사람, 커피만드는 사람으로 역할을 구분했다.

            주문받는 사람은 주문만 받는다.

            커피만드는 사람은 커피만 만든다.

            주문받기와 커피만들기가 동시에 가능해졌다.


    멀티스레드와 멀티프로세스의 차이

    멀티스레드의 경우 동시성을 가지고 실행시키는 반명 멀티프로세스는 번갈아가면서 실행이 된다.

    또한 멀티프로세스는 멀티스레드에 비해서 단점이 있는데 가장 주요하게 보이는 것이 프로세스간의 스위칭이 무겁기 떄문에 일어나는 문제점이다.

    무튼 멀티스레드가 더 좋음 메모리 공유 가능 스위칭 가벼움 등등...

     

     

    https://lotuus.tistory.com/92

     

    댓글

Designed by Tistory.