[운영체제] 스레드

byeol·2023년 3월 22일
0

오늘은 스레드에 대해서 배웠다.

프로세스가 보조기억장치에 저장되어 있다가 메모리에 적재된 실행중인 프로그램을 의미한다면
스레드는 프로세스 안에 있는 실행 흐름의 단위이다.

따라서 하나의 프로세스에는 하나의 스레드가 혹은 여러 개의 스레드가 존재할 수 있다.

오늘도 🏃‍♂️🏃‍♂️🏃‍♀️🏃‍♀️🏃🏃🏃‍♂️🏃‍♀️

스레드

전통적인 프로세스 = 한 번에 하나의 부분만 실행되는 단일 스레드로 구성

스레드의 개념 도입
프로세스
= 하나의 프로세스는 한 번에 여러 일을 동시에 처리할 수 있다.
= 프로세스를 구성하는 여러 명령어를 동시에 실행할 수 있다.

스레드

  • 프로세스를 구성하는 실행 단위
  • 프로세스 내에서 각기 다른 스레드 ID, 프로그램 카운터 값을 비롯한 레지스터 값, 스택으로 구성
  • 실행에 필요한 최소한의 정보만 유치한 채 프로세스의 자원을 공유하며 실행
  • 최근 많은 운영체제에서는 CPU에 처리할 작업을 전달할 때 프로세스가 아닌 스레드 단위로 전달

멀티프로세스와 멀티스레드

  • 멀티프로세스
    여러 프로세스를 동시에 실행하는 것
  • 멀티스레드
    여러 스레드로 프로세를 동시에 실행하는 것

fork 시스템 호출을 통해서 "hello,os"를 출력하는 총 3개의 프로세를 만들기 vs. "hello,os"를 출력하는 3개의 스레드 만들기

  • fork 시스템 호출을 통해서 프로세스를 생성하는 것은 모든 자원이 그대로 복제되어 메모리에 적재되는 것이다.

    결국 중복된 데이터들이 메모리에 적재되기 때문에 메모리 낭비가 심하다.

    따라서 스레드를 통해서 호출하는 것이 메모리를 더 효율적으로 사용한다.

  • 스레드들은 서로 자원을 공유하기 때문에 서로 협력과 통신에 유리하다. 그러나 하나의 스레드가 문제가 생기면 다른 스레드에도 영향을 끼친다.

+ 프로세스 간 통신

하나의 프로세스 내 스레들은 서로 통신할 수 있다고 했다.

마찬가지로 프로세스들끼리 자원을 공유하여 데이터를 주고 받을 수 있다.

이를 IPC(Inter-Procexx Communication) 프로세스 간 통신이라고 한다.

예를 들어 하나의 프로세스는 hello.txt에 내용을 입력하고 다른 프로세스는 hello.txt 파일을 읽는다면 이 두 프로세스는 파일을 통한 프로세스 통신을 하고 있는 것이다.

또한 프로세스들은 공유하는 메모리 영역을 두오 데이터를 주고 받을 수 있다. 이 메모리 영역을 공유 메모리라고 한다.

profile
꾸준하게 Ready, Set, Go!

0개의 댓글