[운영체제] 스레드

최솔·2023년 11월 13일
0

운영체제

목록 보기
4/6

스레드 (Thread)


전통적인 관점에서 보면 하나의 프로세스는 한 번에 하나의 일만을 처리하였으나
스레드(thread) 라는 개념이 도입되면서 한 번에 여러 일을 처리할 수 있게 되었다.

  • 프로세스를 구성하는 실행 단위
  • 프로세스 내에서 각기 다른 스레드 ID, 프로그램 카운터 값, 레지스터 값, 스택으로 구성
  • 힙, 데이터, 코드 영역 등 다른 프로세스 자원은 공유

한 번에 하나의 일만 처리하는 프로세스는 단일 스레드 프로세스라고 칭한다.

멀티 프로세스 (multi-process)

  • 여러 프로세스를 동시에 실행하는 것
  • 기본적으로 프로세스끼리 자원을 공유하지 않는다
  • 하나에 문제가 생겨도 서로에게 영향력이 적다
  • IPC, 공유 메모리 등으로 통신은 가능하지만 오버헤드 존재

독립적인 메모리 공간으로 컨텍스트 스위칭이 발생한다.
프로세스간의 통신을 위해서는 IPC가 필요하다.

-> 이 두 가지 문제점을 한 번에 해결할 수 있는게 스레드(thread)이다.

멀티 스레드 (multi-thread)

스레드는 프로세스가 할당 받은 자원을 이용하는 실행의 단위로서,
스레드가 여러 개 있으면 파일을 다운받으며 동시에 웹 서핑을 할 수 있게 해준다.

스레드끼리 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되기에 동시 작업이 가능한 것이다.

  • 프로세스 내에 여러 스레드를 동시에 실행하는 것
  • 같은 프로세스 내의 스레드 끼리 프로세스 자원을 공유한다 (코드, 데이터, 힙, 스택 영역)
  • 여러 프로세스를 병행 실행하는 것보다 메모리를 더 효율적으로 사용 가능
  • 협력과 통신에 유리

Multi Processing VS Multi Threading

멀티 프로세스 : 크롬 창 내의 여러 탭이나 여러 창을 동시에 실행하는 것
멀티 스레드 : 크롬 창 내의 단일 탭에서 네트워크 처리, I/O 및 기타 작업을 동시에 수행하는 것


0개의 댓글