ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스와 스레드
    cs (컴퓨터 사이언스) 2023. 11. 6. 16:21

    프로세스란?

    프로세스(process)란 일반적으로 CPU에 의해 처리되는 사용자 프로그램이다.

    시스템 프로그램 즉 실행중인 프로그램을 의미하며, 작업(Job), 태스크(Task)라고도 한다.

    프로그램의 명령어와 정적 데이터가 자원을 할당받고 메모리에 적재되면 프로세스가 된다

     

    프로세스의 특징

    프로세스는 각각 독립된 영역(Code, Data, Stack, Heap)을 할당 받는다.

     

    1. Code(Text) 영역

    • 실행 명령을 포함하는 코드가 들어가는 부분이다.
    • 프로그램을 시작할 대 컴파일한 프로그램(기계어)가 저장되어있으며, 읽기 전용영역으로 변경 시 오류가 발생한다.

    2. Data 영역

    • 프로그램이 실행될 때 생성, 프로그램이 종료되면 시스템에 반환된다.
    • 전역변수, 정적변수, 배열, 구조체 등이 저장된다.
    • 초기화된 데이터는 Data(GVAR)영역에 저장된다.
    • 초기화 되지 않은 데이터는 BSS영역에 저장된다

    3. Heep 영역

    • 메모리를 동적으로 할당할 때 사용하는 메모리 영역

    4.Stack 영역

    • 프로그램이 자동으로 사용하는 메모리 영역
    • 함수 호출과 관계되는 지역변수, 매개변수가 저장된다.
    • 함수 호출시 생성, 함수가 끝나면 반환된다.

     

    멀티 프로세스

    하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하게 하는 것

     

    장점

    1. 여러개의 자식 프로세스가 존재하며, 각각 하나의 작업을 처리하기에 하나의 프로세스에 문제가 발생한다면,

    다른프로세스에 영향이 확산되지 않는다.

     

    단점

    1.Context Switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등 오버헤드가 발생한다.

    2. 프로세스는 독립된 메모리 영역을 가지고 있기때문에, 공유하는 메모리가없다.

    그렇기에  Context Switching 이 발생하면 캐시에 있는 모든 데이터를 모두 리셋하고 다시 캐시 정보를 불러와야 한다.

     

    스레드란?

    스레드(Thread)란 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위이다.

     

    스레드의 특징

    • 스레드는 프로세스 내에서 각각 Stack만 할당 받으며, Code, Data, Heap 영역은 공유한다.
    • 같은 프로세스 안에 있는 여러 스레드들은 같은 Heap을 공유한다.(프로세스는 다른 프로세스의 메모리에 접근 할 수없다.)

     

    멀티 스레드

    하나의 프로그램을 여러 개의 스레드로 구성하는 방식이다.

     

    장점

    • 스레드는 Stack을 제외한 자원들을 공유하는 특징이 있기 때문에 Context Switching 시에 캐시 메모리를 비울 필요가 없고 이를 통해서 리소스를 아낄 수 있다.
    • Stack 이외의 메모리를 공유하고 있기 때문에 통신의 부담도 적다.

    단점

    • 내부의 메모리를 공유하고 있기에, 한 프로세스의 스레드에 문제가 발생시 다른 스레드에 문제가 발생 할 수있다.
    • 같은 데이터를 공유하기때문에 데이터 동기화를 신경쓸 필요가 있다.

     

    멀티 프로세스와 멀티 스레드

    멀티 프로세스는 하나의 스레드에 문제가 발생하더라도, 다른 프로세스에 영향을 끼치지 않는 다는 장점을 가지지만,

    멀티 스레드에 비해 많은 메모리와 CPU시간을 차지한다는 단점을 가진다.

     

    멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 가지며,

    Context Switching 이 빠르다는 장점이 있지만,

    하나의 스레드에 문제가 발생하면 다른 스레드에도 문제가 발생 할 수 있다.

     

    공통점으론 여러 작업을 동시 수행한다는 것이다.

    적용해야 하는 시스템에 따라 취사 선택을 해야한다.

     

    Context Switching

    Context Switching 이란 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.

    한 프로세스의 문맥(상태)은 프로세스 제어 블록(PCB)에 기록되어 있다.

    'cs (컴퓨터 사이언스)' 카테고리의 다른 글

    운영체제  (2) 2023.11.06
    의존성 주입이란  (0) 2023.08.29
    브라우저의 작동방식은?  (0) 2023.08.24
    http 메소드  (0) 2023.08.23
    RDMNS와 NoSQL  (0) 2023.08.16
Designed by Tistory.