[CS] 프로세스와 스레드

수민🐣·2022년 10월 15일
0

CS

목록 보기
4/12

프로그램

파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태

  1. *메모리에 올라가 있지 않은: 아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않았다는 뜻
    모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다.
  2. 정적인 상태: 정적(靜的)이라는 단어 그대로, 움직이지 않는 상태라는 뜻 = 한 마디로 아직 실행되지 않고 가만히 있다는 뜻

즉, 프로그램은 아직 실행되지 않은 파일 그자체 = 코드 덩어리

프로세스

운영체제로부터 자원을 할당받은 작업의 단위

프로그램을 실행하는 순간 해당 파일은 컴퓨터 메모리에 올라가게 되고 이 상태를 동적인 상태 즉, 실행되고 있는 컴퓨터 프로그램

스레드

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

프로그램이 복잡해지고 프로그램 하나가 단순히 한 가지 작업만을 하는 경우는 없다.
한 프로그램을 처리하기 위한 프로세스를 여러 개 만드는건 불가능한 일! 운영체제는 안전성을 위해서 프로세스마다 자신에게 할당된 메모리 내의 정보에만 접근할 수 있도록 제약을 두고 있고, 이를 벗어나는 정보에 접근하려면 오류가 발생하기 때문이다.

그래서 프로세스와는 다른 더 작은 실행 단위 개념인 스레드가 작동!
스레드는 프로세스와 다르게 스레드 간 메모리를 공유하며 작동한다.
= 스레드끼리 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되는 것

한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 Heap, Data, Code 영역을 공유 ( 멀티 스레드의 경우, 이 프로세스의 영역들을 공유한다 )

ex) 크롬 브라우저(=프로세스)에서 벨로그 작성하기(=스레드1) & 유튜브로 음악 듣기(=스레드2)

각각의 스레드는 독립적인 작업을 수행해야 하기 때문에 고유한 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택을 가지고 있다.

프로세스와 스레드의 차이

프로세스와 스레드는 개념의 범위부터 다르다. 스레드는 프로세스 안에 포함되어 있기 때문이다.
프로세스는 프로그램을 실행하는 순간 해당 파일이 컴퓨터 메모리에 올라가게 되고, 이 동적인 상태의 프로그램을 프로세스라고 한다.
스레드는 프로세스를 구성하는 더 작은 실행 단위의 개념이다.

프로세스는 메모리에 올라갈 때 운영체제로부터 독자적인 시스템 자원을 할당 받는 반면, 스레드는 프로세스 내부에서 다른 메모리 영역을 같은 프로세스 내 다른 스레드와 공유한다.

0개의 댓글