7. 쓰레드(Thread)

썹스·2022년 8월 17일
0

운영체제

목록 보기
7/20

1. 쓰레드(Thread)

쓰레드(Thread)란 프로그램 내부의 흐름, 맥으로 하나로 CPU 스케줄러가 CPU에 전달하는 작업 중 하나이다. (프로세스의 최소 단위이다)

쓰레드는 프로세스의 메모리 공간을 공유(code, data)하며, 프로세스의 자원(file, I/O...) 또한 공유한다. 하지만 개별적인 PC, SP, registers, stack 등은 공유하지 않는다.

2. Thread VS Process

한 개의 프로세스에는 최소 1개의 쓰레드가 존재하며, 한 개의 프로세스에는 2개 이상의 쓰레드가 존재할 수 있다.

한 개의 쓰레드가 존재하는 프로그램을 단일 쓰레드 프로그램이라 부르며, 2개 이상의 쓰레드가 존재하는 프로그램을 다중 쓰레드 프로그램이라 부른다.

2-1. 멀티 쓰레드

  1. 하나의 프로세스에 2개 이상의 쓰레드가 작업을 나누어 수행하는 것을 멀티 쓰레드라 부른다.
  2. 멀티 쓰레드로 이루어진 프로그램을 실행할 때 쓰레드가 동시에 실행하는 것처럼 보이지만, 사실 쓰레드는 빠른 시간 간격으로 스위칭 되어 작동한다. (동시 실행 X)
  3. 메모리와 자원의 공유로 메모리 공간과 시스템 자원의 소모가 줄어든다는 장점이 있다.
  4. 자원을 공유하기 때문에 동기화 문제가 발생할 수 있다.
  5. 하나의 쓰레드에 문제가 생기면 전체 프로세스에 영향이 생긴다.

2-2. 멀티 프로세스

  1. 멀티 프로세스는 2개 이상의 프로세스가 협력하여 하나 이상의 작업을 동시에 처리하는 것을 말한다.
  2. 하나의 프로세스에 문제가 발생해도 다른 프로세스에 피해가 없다.
  3. 멀티쓰레드 보다 많은 메모리 공간, CPU 할당 시간이 길다는 단점이 있다.


Reference

경성대학교 양희재 교수님의 운영체제

profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글