[Day 123] 프로세스와 스레드

grl pwr·2022년 9월 22일

📌 프로세스


실행 중인 프로그램. 애플리케이션은 하나 이상의 프로세스로 구성된다.

컴퓨터에서 실행할 수 있는 파일 윈도우 이름 끝에는 .exe 라고 붙고 이런 파일을 '프로그램'이라고 한다.

Microsoft Windows의 EXE 확장자는 MS-DOS 시절부터 사용하던 실행 파일 확장자를 이어받은 것으로, Executable(실행파일)의 앞 3글자를 따온 것이다.

  • 이런 '프로그램'이 실행되서 돌아가는 상태, 컴퓨터가 어떤 일을 수행하고 있는 상태가 '프로세스'이다.

  • 여러 프로세스를 함께 execute하는 것은 동시적, 병렬적 또는 이 둘의 혼합으로 이뤄진다.


✏️ 동시성

프로세서 하나가 돌아가면서 일부분 작업을 수행하는데 이 과정이 매우 빠르게 수행되기에 사람들은 동시에 진행 되는 것 처럼 느낀다.

✏️ 병렬성

프로세서 하나에 코어 여러개가 달려 각각 동시에 작업을 수행한다. 듀얼코어, 쿼드코어, 옥타코어와 같은 명칭이 붙는 멀티코어 프로세서가 달린 컴퓨터에서 할 수 있는 방식이다. CPU의 속도가 발열 등 물리적 제약 때문에 예전만큼 빠르게 발전하기 못해 대안책으로 코어를 여러개 달아서 작업을 분담할 수 있도록 만들었다.


📌 스레드


운영 체제가 프로세서 시간을 할당 하는 기본 단위. 스레드는 현재 다른 스레드에서 실행 중인 부분을 포함해 프로세스 코드의 모든 부분을 실행할 수 있다.

한 프로세스 내에서도 여러 갈래의 작업들이 동시에 진행될 필요가 있다. 이 갈래를 '스레드'라고 불린다.

프로세서는 요리사이고 대량 주문이 들어오는 이 식당에서 끊임없이 만들어내는 요리 메뉴 하나가 프로세스이다. 컴퓨터는 프로세스마다 자원을 분할해서 할당한다. 라면 끓이는 섹션, 김밥 마는 섹션, 햄버거 만드는 섹션으로 조리 공간을 나눠서 요리사 혼자서 돌아다니면서 동시적으로 하든 여럿이서 병렬적으로 하든 섞어서 하든 이 메뉴들을 계속해서 만들어낸다.

햄버거를 만드는 프로세스에서는 패티를 굽는 스레드가 진행되는 동안 빵에 야채를 얹고 소스를 뿌리는 스레드도 진행될 수 있다. 한 메뉴의 스레드들은 같은 조리대에서 이뤄진다. 패티는 다른 조리대에서 굽고 야채는 옆 조리대에서 얹는다면 같은 조리대에서 작업하는 것보다 비효율적이다. 같은 메뉴를 만들 때는 같은 공간과 장비, 즉, 같은 자원을 공유하는 것이 더 효율적이다.

프로세스들은 컴퓨터의 자원을 분할해서 쓰지만 스레드는 프로세스마다 주어진 전체 자원을 함께 사용한다. 속도와 효율적인 면에서는 장점이지만 단점도 존재한다. 프로세스 안에서 공유되는 변수에 스레드 두 개가 동시에 손을 댄다. 헌실 세계에서는 로맨스물이 되지만 컴퓨터 세계에서는 Error가 된다.


출처:
https://learn.microsoft.com/en-us/windows/win32/procthread/processes-and-threads
https://namu.wiki/w/EXE
https://www.yalco.kr/14_process_thread/#:~:text=%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%93%A4%EC%9D%80%20%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98%20%EC%9E%90%EC%9B%90%EC%9D%84%20%EB%B6%84%ED%95%A0%ED%95%B4%EC%84%9C%20%EC%93%B0%EC%A7%80%EB%A7%8C%20%EC%8A%A4%EB%A0%88%EB%93%9C,%EC%9E%90%EC%9B%90%EC%9D%84%20%ED%95%A8%EA%BB%98%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B1%B0%EC%A3%A0.

profile
4대륙 개발자

0개의 댓글