기술 면접

프로세스와 스레드(Process and Thread)

코딩너구리 2022. 3. 22. 18:41

프로세스를 알아보기전 프로그램에 대해 먼저 알고 있어야 한다.

프로그램(Program)

1. 일반적으로 일의 진행 계획이나 순서

2. 방송이나 공연 따위의 진행 차례나 진행 목록

3. 어떤 문제를 해결하도록 컴퓨터에 주어지는 자료 처리 방법과 순서를 기술한 일련의 명령문의 집합체

이런 의미로 사용되지만 우리는 3번째 의미를 말한다. 쉽게 말해서  "파일 시스템에 존재 하는 실행파일" 이라고 생각하면 쉽다.

 

프로세스(Process)

사용자가 실행파일을 더블클릭해서 실행하게 되면 운영체제가 그 프로그램을 실행시켜준다. 그 프로그램을 실행 시키는 주체 그것을 인스턴스라고도 한다. 사전적 의미로는 "컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램"

쉬운 예를 든다면 컴퓨터에 엑셀이 깔려있다면 이 엑셀파일 자체는 프로그램이라하고 이제 이 엑셀을 더블클릭해서 실행하고 있다면 프로세스가 되는 것이다.(엑셀을 두개 이상 키게 된다면 이 역시 전부 프로세스이다.)

 

스레드(Thread)

사전적 의미로는 "프로세스 내에서 실행되는 여러 흐름의 단위" 이고 가벼운 프로세스 라고도 표현하기도 한다. 스레드의 역할은 프로그램 코드를 한 줄씩 실행하는 것이다(=실행제어)

 

특징

프로세스

  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
  • 운영체제로 부터 시스템 자원(CPU 시간, 운영되기 위해 필요한 주소공간, 독립된 메모리 영역)을 할당받는 작업 단위
  • 프로세스당 최소 1개의 스레드(메인 스레드)를 가짐
  • 각 프로세스는 별도의 주소공간에서 실행, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근 불가능 하나 프로세스 간의 통신(IPC)인 파이프,파일,소켓등을 이용해 통신 방법을 이용해야함

스레드

  • 프로세스가 할당받은 자원을 이용하는 단위
  • 프로세스 내에서 stack만 따로 할당 받고, code, data, heap 영역은 공유
  • 프로세스 내의 주소 공간이나 자원들(Heap)을 같은 프로세스 내에 스레드 끼리 공유
  • 일반적으로는 한 프로그램은 하나의 스레드를 가지고 있고, 둘 이상의 스레드를 동시에 실행한다면 이를 멀티스레드라고 함

메모리 관점에서 본 프로세스와 스레드

 

 

 

프로세스와 스레드를 설명해주세요.

"프로세스는 컴퓨터가 연속적으로 실행되고 있는 실행파일 입니다. 프로세스는 최소 1개의 메인 스레드를 가지고 있고, 운영체제로 부터 시스템 자원을 할당 받아 작업을 하는 단위입니다. 스레드는 프로세스 내에서 실행되는 여러 흐름의 단위이자 프로세스가 할당 받은 자원을 사용하는 단위입니다. 스레드의 역할은 프로그램 코드를 한 줄씩 실행하는 것입니다. 스레드는 스택영역만 따로 할당받고, 코드영역,데이터영역,힙영역은 공유합니다.