ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Process & Thread (프로세스와 스레드에 대한 정리)
    카테고리 없음 2021. 10. 18. 13:06
    반응형

     

    개발자 톡 방에서 프로세스와 스레드에 관한 글이 올라왔다.

    그래서 한 번 읽어보다가 다시 한번 리마인드 하는 계기가 되어서 간단하게나마 정리를 하려고 한다.


    프로세스(Process)

    Process와 Thread에 대해서 알아보기 전에, 우선 Program에 대해서 간단하게 살펴보자면 Program은 코드 및 정적인 데이터의 묶음을 말한다.

    그리고 이런 Program을 실행 시키는 것을 Process(프로세스) 라고 한다.

    즉, Process는 실행 중인 Program이며, 이는 운영체제로부터 시스템 자원을 할당 받는 작업의 단위이다.

     

    Process는 크게 4개의 메모리 영역으로 구성 되어있다.

    Stack은 매개변수, 지역 변수 등 임시적인 자료가 저장되는 공간이고, Heap은 동적으로 할당되는 메모리이며, Data에는 전역 변수가 들어오게 되고, Text(or Code)는 Program의 코드가 들어오게 된다.

    .

    .

    .

    .

    PCB라는 것이 있다.

    이는 Process Control Block을 말하는데, 각 프로세스는 운영체제에서 PCB로 표현된다.

     

    PID는 프로세스 식별자를 말하며 운영체계에서 각 프로세스나 서비스를 식별하기 위해 할당하는 고유한 번호이다.

    프로세스 상태는 new, ready, running, waiting, halted 등으로 이루어져 있다.

    프로그램 카운터는 다음 실행 할 명령어의 주소를 말하고, 스케줄링 정보는 우선 순위 등을 보여주는데 이런 것이 PCB에 들어가 있다.

     

    스레드(Thread)

    Thread는 Process 내에서 실행되는 흐름의 단위를 말한다.

    Process는 Thread를 한 개 혹은 그 이상 가지고 작업을 수행한다.

     

    CPU 이용의 기본 단위이며 Text, Data, Heap 영역을 공유하고 있다.

    각 Thread는 별도의 Stack과 Register 영역을 가지고 있다.

    이렇게 스레드를 2개 이상 가지고 있는 프로세스를 "멀티 스레드(Multi Thread)"라고 부른다.

    Multi Thread는 프로세스의 자원을 공유할 수 있다.

    그에 따라 응답성이 향상되고 무엇보다 Context switching 비용이 적다.

    그러나 자원을 공유하는 만큼 충돌을 주의해야할 것이므로 Thread-safe 하게 만들어야한다.

    더보기

    **Thread-safe란?

    Thread-safe(스레드 안전)은 Multi-Thread Programming에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 말한다.

    즉, 하나의 함수가 하나의 스레드로부터 호출되어 실행 중일 때 다른 스레드가 그 함수를 호출해서 동시에 실행하더라도 각 스레드에서 함수의 수행 결과가 올바르게 나오는 것을 말한다.

    멀티스레드의 예로 Web Server를 들수 있는데, css, javascript, image, Client request 등 다양한 것들을 처리 하는 경우를 볼 수 있다.

     

    Multi Thread가 있는가 하면, Multi Process도 있다.

    Multi Process는 하나의 작업을 여러 프로세스가 처리 하는 것을 말한다.

    프로세스 또한 자원을 공유할 수 있는데 IPC(InterProcess Communication)를 통해서 통신하고 있다.

    그렇기 때문에 Multi Thread와 달리 context switching 비용이 크다는 단점이 있는데, 반대로 장점으로는 자식 프로세스 중 하나가 문제 생겨도 다른 프로세스에 영향이 없다는 것을 볼 수 있다.

     


    요약

    Process : 운영체제로부터 자원을 할당 받는 단위

    Thread : 프로세스로부터 자원을 할당받는 단위

     

    OS는 다양한 Process가 실행되어 동작하며 Process는 다양한 Thread들이 실행되어 동작한다.

     

    반응형
Designed by Tistory.