CS/OS

OS - 프로세스와 스레드의 차이(Process vs Thread)

어둠의 개발자 2022. 9. 26. 20:27

개발자 단골 면접 질문으로 신입때 거의 나오는 수준이라고 하는 프로세스(Process와 스레드(Thread)의 차이를 간단하게 알아보겠습니다.

 

먼저, 프로세스와 스레드를 알기전 프로그램을 짚고 넘어가겠습니다.

 

프로그램(Program)이란 저장 장치(보조기억장치)에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태의 파일 말합니다.

 

보조기억장치(ex:SSD, HDD)라는 대용량의 파일들을 저장할 수 있는 공간에서 실행되지 않고 가만히 있음.

저장 장치에 올라가 있는 파일(실행은 되지 않은상태)

프로세스(Process)운영체제로부터 자원을 할당받아 메모리 공간에 올라간 실행중인 프로그램

 

프로그램들은 CPU가 실행할 수 없기 때문에 프로그램을 실행하기 위한 메모리 공간을 할당 받는데 이것을 프로세스라고 합니다.

 

실행 과정

저장장치에 정적인 상태의 파일로 보관되어 있는 프로그램을 실행하게 되면 운영체제가 자원을 할당하고 메모리에 동적인 상태로 올려놓습니다. 그러면 이 프로세스는 실행중인 상태가 되며 자신에게 주어진 역할을 수행합니다.

 

운영체제가 관리중인 프로세스들

 

쓰레드(Thread)프로세스내에서 실제로 작업을 수행하는 흐름의 주체

프로세스 내에서 할당받은 자원을 이용하는 실행의 단위입니다. 프로세스 내에 여러개를 생성함으로써 프로세스 내에서 분기 처리를 진행합니다.

 

프로세스는 다른 프로세스의 메모리에 접근할 수 없습니다.

같은 프로세스 내에 여러 스레드들은 다른 스레드에 접근할 수 있으며 한 스레드가 프로세스 자원을 변경하면 다른 아웃 스레드도 그 변경 결과를 볼 수 있습니다.

프로세스 내에 존재하는 스레드들