ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS]Process VS Thread
    CS/OS 2021. 7. 10. 19:15

    📝 Process VS Thread


    ✨ 해당 글은 아래 [10분 테코톡]을 듣고 작성했습니다.✨

     


     

    🙋‍♀️ 프로세스와 쓰레드에 대해 알아보기 전에, 먼저 용어를 정리하고 가자.

    1.  실행 단위 - cpu core에서 일어나는 하나의 단위. 프로세스와 스레드를 포괄하는 개념이다.
    2.  (부연 설명이 없는)프로세스 - 하나의 스레드만 가지고 있는 단일 스레드 
    3.  동시성 - 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것 

     

     

     

    📌 Process에 대한 사전 지식

     

    🔎 프로세스가 실행되기 위해선 필요한 자원이 메모리에 올라가 있어야 한다.

     

    - 메모리 영역은 Code영역, Data영역, Heap영역, Stack영역으로 나뉜다.

    • Code: 실행 명령을 포함하는 코드 영역
    • Data: static, grobal 변수 영역
    • Heap: 동적 메모리 영역
    • Stack: 지역변수, 매개변수 등 일시적인 데이터 영역

     

    - PCB또한 프로세스 생성시 함께 올라간다.

    • PCB: Process Control Block으로 프로세스에 대한 정보를 담고있다.

     

     

     

    📌 Process와 Thread

     

    🔎 CPU는 한 번에 하나의 프로세스만 관리할 수 있다.

     

    - 한번에 여러개의 의 프로세스를 실행하기 위해서는 다음과 같은 작업이 필요하다.

    • 프로세스 A를 실행한다.
    • 프로세스 A를 준비상태로 바꾸고 프로세스 B를 실행한다.
    • 프로세스 B를 준비상태로 바꾸고 프로세스 A를 실행한다.

    이렇게 프로세스의 상태를 변화시켜 CPU에게 할당/해제 하는 과정을 컨텍스트 스위칭이라고 한다.

     

     

    - 컨텍스트 스위칭에 대해 자세히 알아보자

    • CPU 스케줄러가 인터럽트를 발생시켜 현재 프로세스의 상태를 PCB에 저장하고, 새로운 프로세스의 상태를 레지스터에 저장하는 것을 말한다.
    • 프로세스 컨텍스트 스위칭이 일어나면 CPU는 아무런 작업을 하지 못하므로 잦은 컨텍스트 스위칭은 성능 저하를 일으킨다.

     

     

    🔎 프로세스의 경량 버전인 스레드

     

    - 스레드에 대해 알아보자.

    • 프로세스의 경량 버전이다.
    • 하나의 프로세스에는 다수의 스레드가 존재할 수 있으며 해당 스레드 간에는 코드, 데이터, 힙 영역의 자원을 공유한다.
    • 자원을 공유하기 때문에 컨텍스트 스위칭시 모든 자원을 교환할 필요가 없어 캐싱 적중률이 올라가고, 컨텍스트 스위칭 비용 또한 프로세스에 비해 적다.

     

     

     

    📌 Multi Process와 Multi Thread

     

    🙋‍♀️  멀티 프로세스와 멀티 쓰레드는 처리 방식의 일종이다. 하나의 어플리케이션이 여러개의 일을 처리하는 방식을 말한다.

     

    🔎 Multi Process와 Mutli Thread의 차이점에 대해 알아보자.

     

    - Multi Process

    • 한 프로세스는 한번에 하나의 작업만 가능하므로 부모가 fork()로 자식 프로세스를 여러개 생성하는 것을 말한다.
    • 별개의 메모리 영역을 확보한다.
    • 독립적이기 때문에 IPC를 이용해 통신한다.
    • 컨텍스트 스위칭 비용이 크다.
    • 독립적이기 때문에 동기화 작업이 필요하지 않다.

     

    - Multi Thread

    • 한 프로세스 내에서 구분지어진 실행 단위이다.
    • 공유 자원이 많아 서로 긴밀히 연결되어 있어 통신 비용을 절감한다.
    • 메모리를 효율적으로 사용할 수 있다.
    • 컨텍스트 스위칭 비용이 적다.
    • 공유된 자원에 대한 관리가 필요하다.

     

     

    🔎 Multi Process와 Multi Thread는 언제 쓰일까?

     

    - Google Chrome

    • Multi Process를 사용한다.
    • 멀티 탭을 사용할때 서로 영향을 덜 받는다.

     

    - Internet Explore

    • Multi Thread를 사용한다.
    • 멀티 탭을 사용할때, 하나의 탭에 문제가 생기면 전체 화면의 탭이 종료된다. 서로 긴밀히 연결되어 있어 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 미친다. 

     

     

     

    📌 Multi Core

     

    🔎 동시성과 Single Core

    • Single Core CPU에서는 실행단위 처리시 동시에 여러개의 실행단위를 실행하기 위해 빠른 텀으로 실행단위를 전환한다.
    • 이러한 특징을 동시성이라고 한다. (짧은 순간에 CPU 시간을 분할해 동시에 하는 것 처럼 보이게 한다.)

     

     

    🔎 병렬처리와 Multi Core

    • 여러개의 Core를 사용하여 다수의 실행단위를 한번에 처리할 수 있다.
    • 이러한 특징을 병렬처리라고 한다.

     


     

    ✍ 요약

    1. 프로세스는 프로그램이 실행된 것이다.
    2. 스레드는 한 프로세스 내에서 나뉘어진 하나의 실행 단위이다.
    3. 한 어플리케이션에 대한 작업을 동시에 하기 위해선 2가지 처리방식(Multi Process, Multi Thread)이 있다.
    4. 동시에 실행되는 것 처럼 보이기 위해 실행 단위는 시분할로 CPU를 점유하여 컨텍스트 스위칭 한다.
    5. Multi Process는 독립적인 메모리를 가지고 있지만 Multi Thread는 자원을 공유한다. 각각의 장단점이 있다.
    6. Multi Core는 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세스가 있는 것이다.

    'CS > OS' 카테고리의 다른 글

    [OS] 캐시 메모리  (0) 2021.08.06
    [OS] CPU 작동원리  (0) 2021.08.06
    OS - 은행원 알고리즘  (0) 2021.02.20
    OS - CPU스케줄링  (0) 2021.02.16
    OS - 프로세스와 쓰레드  (0) 2021.02.15

    댓글

Designed by Tistory.