[운영체제] 프로세스 vs 스레드

김은지·2021년 10월 25일
0

운영체제

목록 보기
1/5
post-custom-banner

프로세스(process)

: 프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다.

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

프로세스의 상태

커널 내에는 준비 큐, 대기 큐, 실행 큐 등의 자료 구조가 있으며 커널은 이것들을 이용하여 프로세스의 상태를 관리한다.

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

스레드(thread)

: 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위

  • 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다 : 멀티스레드(multithread)

    (↑ : 두 개의 스레드를 실행하고 있는 하나의 프로세스)

프로세스와 스레드 비교

- 공통점 : 멀티프로세스와 멀티스레드는 양쪽 모두 여러 흐름이 동시에 진행됨

- 차이점 : 멀티프로세스에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지 <-> 멀티스레드는 프로세스 내의 메모리를 공유해 사용

- 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.

참고
링크텍스트
링크텍스트

post-custom-banner

0개의 댓글