본문 바로가기
CS

비전공자를 위한 프로그래밍 개념 - 프로세스와 스레드

by Warehaus 2024. 2. 24.

 

사진: UnsplashIlya Pavlov

 

 

오늘은 프로그래밍을 시작하기 위한 기초개념인 프로세스와 스레드에 대한 설명입니다.

 

컴퓨터 과학 또는 공학 전공자라면 운영체제 시간에 공룡책을 보면서 접했을 개념입니다만,
분명 그런 경험없이 코드를 작성한다거나, 운영업무를 도맡아 하시는 분들도 있을 것이라고 생각이 됩니다.

 

실제로 제 주변에서 많이 보고 있구요.

 

요즘은 정말 다양한 분야의 사람들이 코딩을 공부하여 업무를 수행하다 보니

업무에 필요한 핵심 내용 외에는 놓치는 것들이 있는 것 같아 제가 아는 내용들을 최대한 풀어보려고 합니다.

 

인터넷 검색하면 동일한 내용들이 너무나 많지만, 더 잘 설명해 보려는 노력을 하면 저도 배우는 점이 있을 것 같다는 생각에 포스팅을 하게 되었습니다.

 

반응형

 

 

프로세스 

 

프로세스를 한마디로 표현하면 "작업" 입니다.  다르게 설명하면 실행 중인 프로그램 이라고도 부를 수 있습니다.

 

영어로는 아래처럼 표현되기도 합니다.

 

A process is basically a program in execution

 

 

여러분들은 프로세스를 사용 해 보셨나요?

 

적어도 컴퓨터를 사용하는 분들, 컴퓨터 또는 핸드폰을 이용하여 이 글을 읽는 분들이라면 프로세스를 사용 중이신 겁니다.

예외는 없다고 생각합니다.

 

작업관리자

 

 

저는 크롬을 통해서 이 글을 작성하고 있고, 윈도우라는 운영체제는 "Google Chrome" 이라는 프로세스가 수행 중이라는 것을 작업관리자 프로세스를 통해 보여주고 있습니다.

 

컴퓨터 스위치를 누르는 순간부터 컴퓨터는 여러 유형의 프로세스를 실행하게 됩니다.

 

프로세스는 우리가 사용하는 프로그램이 실행되어서 작업을 수행하는 상태, 그 작업 자체를 의미한다고 보시면 됩니다.

이해는 이렇게 하시되 누군가 물어보면 "실행중인 프로그램" 이라고 대답하시면 큰 문제 없는 대답이 될 것 입니다.

 

반응형

 

 

 

스레드

 

그런데 스레드는 왜 프로세스와 같이 묶여서 설명을 해야할까요?

 

프로세스의 또다른 정의를 위키피디아에서 찾았는데 여기서 부터 설명을 시작해 볼까 합니다.

In computing, a process is the instance of a computer program that is being executed by one or many threads.
- 위키피디아

 

 

짜잔.  사실 프로세스는 하나 또는 여러개의 스레드로 수행되는 컴퓨터 프로그램 이었습니다.

프로그램은 하나 이상의 스레드를 통해 주어진 일을 하고 있었던 것이지요.

 

프로세스가 스레드를 통해 작업을 실행하기 때문에 우리는 프로세스와 동시에 쓰레드에 대해서도 알아둬야 합니다.

아래  프로세스와 스레드를 설명하기 좋은 그림이 있습니다.

 

출처 : 위키피디아

 

 

디스크라는 저장소에 저장 된 프로그램이 메모리에 올라와 프로세스가 실행되면 프로세스들은 스레드를 통해 필요한 작업을 수행하게 됩니다. 작업의 최소 단위인 스레드는 운영체제 스케줄러에 의해 자원은 할당받고 실제 명령어(CPU Instruction)를 수행하게 됩니다.

 

그럼 누가 스레드에 대해 물어보면 뭐라고 답하면 될까요?

 

저는 "OS 작업의 최소 단위" 또는 "프로세스 실행 흐름의 단위" 정도로 답변하면 적절하다고 생각을 합니다. 

 

 

 

정리

 

프로세스와 스레드 정의에 대해 한눈에 보기좋게 정리하면 다음과 같습니다.

 

프로세스 : 실행중인 프로그램

스레드 : 프로세스 실행 흐름의 단위, OS 스케줄러 작업의 최소 단위 

 

 

프로세스는 스레드를 포함하고, 하나의 프로세스에서는 여러개의 스레드가 만들어 질 수 있다는 점 꼭 기억하셨으면 합니다.

 

 

다음 포스팅 에서는 프로세스의 메모리 관련 내용으로 찾아뵙도록 하겠습니다.

 

읽어주셔서 감사합니다.