프로세스, 스레드

Seung·2022년 2월 27일
0

프로세스

  • 운영체제 위에서 독립적으로 실행되는 프로그램

  • 각각 독립된 code, stack, heap, data로 구성

    code : 프로그램을 실행하기 위한 코드 영역

    stack : 일시적인 데이터 (함수들의 순서 등)를 위한 영역

    heap : 동적 메모리(동적으로 할당된 변수 등)를 위한 영역

    data : 전역 변수나 static 변수들이 저장되는 영역

  • 프로세스 생성시 해당 프로세스에 대한 정보를 담고 있는 PCB블록이 함께 만들어진다

  • 프로세스는 최소 1개의 스레드를 가지고 있다

  • 프로세스끼리 서로 접근은 못한다 (그래서 하나의 프로세스가 문제 생겨서 죽여도 다른 프로세스는 영향 없다)

스레드

  • 프로세스 내의 실행 단위 (일꾼)

  • 프로세스 내에서 프로세스가 효율적으로 일을 하도록 도움을 준다

  • 스레드별로 함수의 호출부터 되돌아가는 순서 등 흐름을 기억할 수 있는 고유의 stack이 존재 (code, data, heap 영역은 공유)

비유
1. 유튜브
프로세스 : 현재 실행중인 유튜브 앱
스레드 : 유튜브 앱 내에서 댓글 관리, 좋아요 관리, 재생목록 관리 등 다양한 일들을 각각 하는 것

2. 공장
프로세스 : 공장의 생산라인
스레드 : 생산라인에서 일하는 일꾼
2-1. 일꾼이 한명? (스레드가 하나라면) : A, B, C 일이 있을 때 A를 끝내고 B를 수행, 이후 B가 끝나면 C를 수행
2-2. 일꾼이 세명? (스레드가 세개라면) : A, B, C 일이 있을 때 스레드마다 A, B, C 일을 하나씩 맡아서 수행
-> 각 스레드는 해야하는 일의 순서를 기억하고 있음 -> stack (code, data, heap은 공유, stack만 별도로 할당)


😍 코드 지적은 언제나 환영입니다. 읽어주셔서 감사합니다. 😍

profile
지적은 제 발전의 원동력입니다. 사소한 것이라도 지적해주세요 :)

0개의 댓글