Process VS Thread

6X10·2024년 3월 12일

Operating System

목록 보기
4/4

Process

  • 운영체제로부터 시스템 자원(CPU)을 할당받은 작업의 단위
    (모든 program은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 ㅇ)
  • 작업 중인 Program(Static Program, 코드 덩어리)
    -> 작업 관리자의 process 참고
  • 한계: 기술 발전으로 프로그램이 복잡해져서, 프로세스 작업 하나만으로 프로그램을 실행하기에는 한계가 있어짐. 그렇다고 동일한 프로그램을 여러 개의 프로세스로 만들면, 그만큼 메모리가 낭비되고, cpu를 할당 받는 자원이 중복되는 경우 발생.

Thread

  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

  • Multithreading makes multitasking possible when it breaks programs into smaller, executable threads. Each thread has the programming elements needed to execute the main program, and the computer executes each thread one at a time.
    (참고: https://www.techtarget.com/whatis/definition/multithreading)

  • 리눅스에서 코어의 수만 확인할 때는 nproc 명령을 사용하면 된다. 하이퍼-스레딩(hyper-threading)이 사용되고 있을 경우 nproc 명령의 결괏값은 물리적인 코어 수의 2배가 된다.

    Ex. 6코어 12 쓰레드
    CPU 한 개는 여러 개의 코어를 가질 수 있고, 코어는 말 그대로 CPU 코어 유닛을 의미한다. 즉, 코어의 개수는 명령어를 메모리에서 뽑아 해석하고 실행하는 반도체 유닛의 개수이다. 6코어가 물리적 코어의 개수라면, 12쓰레드는 논리적 코어 개수를 의미한다. 이 경우 물리적 코어 하나가 스레드 2개 이상을 동시에 실행가다는 의미가 된다. 즉, 운영 체제가 8개의 작업을 동시에 처리할 수 있다는 의미이고, 이를 Hyper-Threading 기술이라고 한다.
    (이때 CPU의 thread != process의 thread. 엄밀히는 CPU의 스레드는 하드웨어적 스레드이고, 프로그램의 스레드는 소프트웨어적 스레드로 구분한다.)

<참고>
https://inpa.tistory.com/entry/👩%E2%80%8D💻-프로세스-⚔%EF%B8%8F-쓰레드-차이#

0개의 댓글