[210528 TIL] program, process, thread

Choi Rim·2021년 5월 28일
0

Way to developer

목록 보기
2/21
post-thumbnail
post-custom-banner

program & process & thread 👩‍💻

프로그램(program)

프로그램은 작업을 위해 실행할 파일입니다. 컴퓨터 시스템(커널)에 실행할 파일이 등록되기 전을 의미합니다.

프로세스(process)

프로세스는 프로그램(실행할 파일)이 컴퓨터 시스템에 등록된 상태를 의미합니다.

프로세스 메모리 구조

  • Data, Stack, Heap, Code로 구분
    • Data : 변수 / 초기화된 데이터
    • Stack : 임시 데이터(함수 호출, 로컬 변수 등)
    • Code : 실행되고 있는 코드
    • Heap : 코드에서 생성된 동적 데이터

스레드(thread)

스레드란 프로세스의 실행 단위를 의미합니다.

  • 스레드의 동시성(concurrency)과 병렬성(parallelisn)
    • 동시성
      프로세서(cpu) 하나가 여러 작업을 돌아가면서 일부분씩 진행, 진행 중인 작업을 바꾸면서 실행
      • context switching
        사진 출처 - https://www.crocus.co.kr/1364

        프로세스 P0 프로세스 P1이 서로 대기, 실행을 번갈아가면서 하는 것을 컨텍스트 스위칭이라고 합니다. P0이 실행 중에서 대기 중으로 변하게 될 때는 지금까지 작업해오던 내용을 어딘가에 저장해야 되는데 그곳이 PCB(Process Control Block)입니다.

        정리하면 컨텍스트 스위칭은 CPU가 어떤 프로세스를 실행하고 있는 상태에서 인터럽트에 의해 다음 우선 순위를 가진 프로세스가 실행되어야 할 때 기존의 프로세스 정보들을 PCB에 저장하고 다음 프로세스의 정보를 PCB에서 가져와 교체하는 작업이다. 이러한 컨텍스트 스위칭을 통해 우리는 멀티 프로세싱, 멀티 스레딩 운영이 가능합니다.

    • 병렬성
      프로세서 하나에 코어 여러개가 달려서 각각 동시에 작업을 수행

멀티 프로세싱(multi processing)과 멀티 스레딩(multi threating)

멀티 프로세싱과 멀티 스레딩은 CPU의 최대 활용을 위해 프로그램의 둘 이상의 부분을 동시에 실행하는 기술입니다.

  • 멀티 프로세싱
    사진 출처 - https://you9010.tistory.com/136

    • 자신만의 메모리 영역 가짐.
  • 멀티 스레딩
    사진 출처 - https://you9010.tistory.com/136

    • 하나의 프로세스가 다수 개의 작업을 각각 스레드를 이용하여 동시에 작동 시킬 수 있음.
    • 공유 메모리를 가짐.

프로세스(process)와 스레드(thread)

  • 간단한 예
    프로세서(cpu)가 요리사라면 프로세스는 한식, 일식, 중식 등 다양한 작업을 의미합니다. 한식, 일식, 중식 등 요리하는 구역이 존재한다면 스레드는 요리구역의 요리 과정을 의미합니다.

  • 프로세스와 스레드의 차이

프로세스스레드
실행 중인 프로그램프로그램의 실행 단위
종료 시간 많이 걸림종료 시간 적게 걸림
생성 시간 많이 걸림생성 시간 적게 걸림
컨텍스트 전환 시간 오래 걸림컨텍스트 전환 시간 적게 걸림
커뮤니케이션 측면에서 효율성 떨어짐대화면에서 효율적
프로세스 격리메모리 공유
  • 스레드가 프로세스보다 빠른 이유
    스레드는 컨텍스트 스위칭 될때 text, data, heap 영역은 프로세스 것이기에 자신의 PCB에는 스택 및 간단한 정보만 저장하기에 프로세스 컨텍스트 스위칭 보다 훨씬 빠릅니다.

<참고>

profile
https://rimi0108.github.io/
post-custom-banner

0개의 댓글