프로세스와 쓰레드 개념 이론

장성우·2022년 3월 5일
0

쓰레드

목록 보기
1/1

프로세스와 쓰레드의 관계

쓰레드와 프로세스는 동시성 프로그래밍의 가장 기본적인 실행 단위이다. 자바에서 동시성 프로그래밍은 대체로 쓰레드와 관련되어 있다. 하지만 프로세스 또한 중요하다.

보통 컴퓨터에는 많은 프로세스와 쓰레드들이 실행중이다. 심지어 코어가 하나뿐이어도 많은 프로세스와 쓰레드들이 실행중에 있으며, 최소한 하나의 쓰레드가 언제나 실행되고 있다. 싱글 코어의 처리되는 시간들은 많은 프로세스와 쓰레드들에 의해 공유되며, 이러한 운영체제의 기능을 타임 슬라이싱이라고 부른다.

점점 하나의 시스템에 더 많은 프로세서와 코어들이 들어가고 있으며, 이는 시스템이 한번에 감당할 수 있는 쓰레드와 프로세스의 양의 증가를 의미한다. 하지만 멀티코어나 많은 프로세서가 없는 간단한 시스템이어도 동시성 프로그램을 수행할 수 있다.

프로세스

하나의 프로세스는 자신만의 실행 환경을 가지고 있다. 하나의 프로세스는 대체로 프로그램 실행을 자원을 모두 갖추고 있으며 이 자원들을 공유하지 않는다. 또한, 이를 위해서프로세스는 각각 메모리 공간을 할당 받는다.

프로세스는 자주 프로그램의 동의어 취급을 받는다. 하지만 때때로 하나로 보이는 프로그램이 여러 프로세스의 협업의 결과물일 수 있다 프로세스들간의 통신을 위해서 대부분의 운영체제들은 파이프나 소켓과 같은 IPC(Intel Process Communication)를 지원한다. 또한 IPC는 다른 시스템 간의 통신에 사용되기도 한다.

대부분의 JVM들은 단일 프로세스로 작동된다. 자바 어플리케이션은 ProcessBuilder를 이용해서 추가적인 프로세스를 만들어 낼 수 있다.

Threads

쓰레드는 때때로 경량 프로세스로 불리기도 한다. 프로세스와 쓰레드 모두 (프로그램을 위한) 실행 환견을 제공하지만, 쓰레드는 프로세스보다 적은 자원을 필요로한다.

쓰레드들은 하나의 프로세스 안에 존재한다. 다른 말로 모든 프로세스들은 적어도 하나의 쓰레드를 가지고 있다. 쓰레드들은 메모리와 파일들을 포함해서 프로세스의 자원들을 공유한다. 이는 효율적이지만 동시에 통신 문제를 일으킬 수 있다.

멀티 쓰레드는 자바 플랫폼의 중요한 기능이다. 어플리케이션 프로그래머의 입장에서 메모리 관리와 같은 시스템 쓰레드를 제외한다면, 모든 어플리케이션은 적어도 하나의 쓰레드를 가진다. 이 쓰레드가 메인 쓰레드이며, 메인 쓰레드는 추가적인 쓰레드를 만들어 낼 수 있다.

CS 스터디 : 노션 주소

Reference

profile
성장하는 개발자가 되자.

0개의 댓글