One_Blog

스레드 [운영체제 수업] 본문

운영체제

스레드 [운영체제 수업]

0xOne 2023. 3. 20. 14:11
728x90

날짜 : 2023년 3월 20일

 

오늘 수업 주제

: 스레드





오늘 배운 내용 요약

:

스레드가 생긴 이유

프로세스 생성과 문맥 교환 작업이 많아지면 성능 저하가 발생하게 됨.

-> 가벼운 스레드 생성 및 스위칭을 선호

프로세스 간 통신보다 스레드 간 통신이 구현 및 관리면에서 효율적임.

-> 스레드 탄생

 

스레드란?

  • 프로세스의 특성인 자원과 제어에서 제어만 분리한 실행 단위
  • 프로세스 내에서 실행되는 코드의 흐름
  • 프로세스 하나는 스레드 한 개 이상으로 나눌 수 있음.
  • 1개의 스레드 = 싱글 스레드 ; n개의 스레드 = 멀티 스레드
  • 같은 프로세스의 스레드들은 스택 공간만 독립적으로 가지고 같은 주소 공간을 공유한다.

ex) 웹 브라우저 : 이미지 / 텍스트 로딩 스레드; 네트워크 연결 스레드 ; 유저 상호 작용 스레드

 

프로세스와 스레드의 차이점

 

프로세스

  • 실행 중인 프로그램
  • 생성과 종료에 많은 시간을 소요
  • 문맥 교환에 많은 시간을 소요
  • IPC를 통해 상호작용, 오버헤드 상승
  • 자원소모 많음
  • 각각 독립적으로 존재
  • 안정적임

 

스레드

  • 프로세스의 실행 코드의 흐름
  • 생성과 종료에 적은 시간을 소요
  • 문맥 교환에 적은 시간을 소요
  • 공유 메모리를 통해 상호작용, 오버헤드 적음
  • 자원소모 적음
  • 스택만 독립적이며, 나머지는 공유
  • 안정적이지 않음.

 

스레드의 상태변화

  • 프로세스와 동일 (준비 실행 대기 종료)
  • 스레드의 상태 변화는 다른 스레드에 영향을 끼침
  • 스레드 제어 블록 (TCB)
  • 실행상태, 스케줄링 정보, 계정 정보, 다양한 포인터, 프로세스 제어 블록을 포함하는 포인터 등 보유
  • PCB ( TCB

 

멀티스레드의 병렬 수행

  • 프로세스가 여러 개 인 경우, 여러 작업이 동시에 병렬적으로 수행되기에 멀티 스레드로 병렬성 향상 가능
  • 프로세서가 하나인 경우, 각 시간에 한 작업만 수행되지만 스위칭을 통해 병렬적으로 수행되는 것

처럼 보이게끔 하여 동시성 향상 가능

멀티 스레드의 장점

  • 응답성
  • 자원 공유
  • 경제성
  • 확장성

 

커널 스레드와 유저 스레드

 

커널 스레드

  • 안정적이지만 유저모드에서 커널모드로 계속 바꿔줘야 하기에 성능 저하가 있음

유저 스레드

  • 안정성은 떨어지지만 성능 저하는 없음.

 

Many - To - One Model

  • 스레드 라이브러리로 스레드가 관리되어 효율적
  • 한번에 한 유저 스레드만 커널에 접근 -> 병렬 수행 X
  • 스레드 중 한개가 Block 되면 프로세스가 Block 됨

 

One - To - One Model

  • 동시성을 향상시켜주지만 커널 스레드가 늘어남에 따라 오버헤드가 커져 성능 저하 발생

 

Many - To - Many Model

  • 어느정도 동시성과 커널 스레드의 오버헤드 걱정이 없음.