amplitude.init("2e2e5a386856efdf3237cf254a9d14d9"

[개념 콕] 프로세스와 스레드

내일배움캠프 수료생이 개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
May 29, 2024
[개념 콕] 프로세스와 스레드
✍🏼
개발을 시작하시는 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 

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

프로세스와 스레드는 컴퓨터 시스템에서 중요한 개념입니다. 간단히 정의하면, 프로세스는 운영체제로부터 자원을 할당받아 실행되는 작업의 단위이고, 스레드는 프로세스 내에서 실제로 작업을 수행하는 실행 흐름의 단위입니다.
프로세스를 이해하기 위해서는 프로그램을 먼저 아는 것이 좋습니다. 프로그램과 프로세스를 같은 개념으로 간주할 때도 있으며 이 둘은 연결된 개념이기 때문입니다.
 

프로그램(Programme)이란?

프로그램은 컴퓨터에서 실행될 수 있는 명령어들의 집합으로, 윈도우에서는 .exe 파일, 맥에서는 .dmg 파일과 같은 실행 가능한 파일 형태로 존재합니다. 이러한 프로그램은 자바, C언어 등의 프로그래밍 언어를 사용하여 작성된 코드로 구성되어 있습니다. 아직 실행되지 않은 상태의 프로그램을 ‘정적 프로그램’ 또는 간단히 ‘프로그램’이라고 부르며, 이는 일종의 코드 덩어리입니다.
 

프로세스(Process)란?

프로그램이 실행되면 프로세스가 됩니다. 프로세스는 정적인 프로그램이 동적으로 실행되는 상태를 의미하며, 현재 컴퓨터에서 작업 중인 프로그램이라고 할 수 있습니다. 프로그램이 실행되기 위해서는 운영체제로부터 메모리 공간을 할당받아야 합니다. 프로그램이 실행되는 순간, 해당 파일은 컴퓨터의 메모리에 로드되고 운영체제로부터 CPU 등의 시스템 자원을 할당받아 프로그램 코드를 실행하게 됩니다.
 
프로그램과 프로세스를 같은 개념으로 여기는 경우가 있는데, 그 이유는 다음과 같습니다. 가령, A라는 응용 프로그램이 있다고 할 때, A를 실행하기 전의 상태를 프로그램이라고 하고, A를 실행한 이후의 상태를 프로세스라고 합니다. 즉, 프로그램과 프로세스는 동일한 응용 프로그램의 실행 전과 후의 상태를 나타내기 때문에, 때로는 이 둘을 동일한 개념으로 간주하기도 합니다.
 
 

스레드(Thread)

스레드(Thread)란?

스레드(Thread)는 하나의 프로세스 내에서 동시에 실행되는 작업의 단위입니다. 쉽게 말해, 하나의 프로세스 안에 여러 개의 실행 흐름이 공존할 수 있게 된 것입니다. 크롬 브라우저를 예로 들면, 브라우저를 실행하면 하나의 프로세스가 생성됩니다. 이 프로세스 내에서는 파일 다운로드, 온라인 쇼핑, 게임 등 다양한 작업이 동시에 이루어질 수 있습니다. 이렇게 하나의 프로세스 안에서 여러 작업이 병행 처리되는 것이 가능한 이유는 바로 스레드 덕분입니다. 각각의 작업은 독립적인 스레드로 실행되며, 이를 멀티 스레드라고 부릅니다.
 
프로세스는 여러 개의 스레드를 포함할 수 있으며, 스레드의 수가 많을수록 프로그램의 처리 속도와 동시에 수행 가능한 작업의 수가 증가합니다. 일반적으로 하나의 프로그램은 하나 이상의 프로세스로 구성되고, 각 프로세스는 최소한 하나 이상의 스레드를 가지고 있습니다. 프로그램 내에서 여러 스레드를 활용하려면 개발자가 직접 프로그래밍을 통해 스레드를 생성하고 관리해야 합니다.
 

스레드(Thread)의 등장 배경

과거에는 프로그램을 실행할 때 하나의 프로세스만을 사용했습니다. 그러나 기술이 발전하면서 프로그램이 점점 복잡해지고 다양한 기능을 수행하게 되었고, 이에 따라 하나의 프로세스로는 프로그램을 효과적으로 실행하는 데 한계가 있었습니다. 예를 들어, 오늘날의 컴퓨터에서는 파일을 다운로드 받으면서 동시에 다른 작업을 수행하는 것이 당연하게 여겨집니다. 하지만 과거에는 프로세스가 한 번에 하나의 작업만 처리할 수 있었기 때문에, 여러 작업을 동시에 수행하려면 각각의 작업마다 별도의 프로세스를 생성해야 했습니다. 이는 불필요한 메모리 낭비와 CPU 자원의 중복 할당으로 이어졌습니다. 이러한 문제를 해결하기 위해 스레드라는 개념이 도입되었습니다.
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 개발 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 황규정 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
 
 

취업 준비, 어디서부터 시작해야 할지 모르겠다면?

 
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
 
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
 
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
 
Share article
Subscribe to our newsletter
RSSPowered by inblog