프로세스(process) & 스레드(thread)

제이밍·2021년 10월 4일
1

프로세스

프로세스 : 프로그램을 메모리 상에서 실행중인 작업

사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다.

프로세스의 종류

  1. 멀티프로세싱 : 여러 개의 프로세서를 사용하는 것
  2. 멀티태스킹 : 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식

프로세스의 상태 (Process State)

생성(create) : 프로세스가 생성되는 중이다.
실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
종료(terminated) : 프로세스의 실행이 종료되었다.

스레드

스레드 : 프로세스 안에서 실행되는 여러 흐름 단위
일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다.

스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다.

스레드 종류

  • 사용자 레벨 스레드 (User-Level Thread)
    사용자 스레드는 커널 영역의 상위에서 지원되며 일반적으로 사용자 레벨의 라이브러리를 통해 구현

  • 커널 레벨 스레드 (Kernel-Level Thread)
    커널 스레드는 운영체제가 지원하는 스레드 기능으로 구현

프로세스와 스레드의 비교

멀티프로세스와 멀티스레드는 양쪽 모두 여러 흐름이 동시에 진행된다는 공통점을 가지고 있다.

  • 멀티프로세스에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지하고 있지만
  • 멀티스레드는 프로세스 내의 메모리를 공유해 사용할 수 있다. 또한 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.

Reference

https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4

profile
모르는것은 그때그때 기록하기

0개의 댓글