[운영체제] 스레드와 병행성

.·2021년 7월 22일
0

운영체제

목록 보기
4/6

개요

  • 스레드 : CPU 이용의 기본 단위
  • 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성
  • 코드, 데이터 섹션, 운영체제 자원들을 공유
  • 프로세스가 다수의 제어 스레드를 지닌다면 동시에 하나 이상의 작업 수행 가능

예시

  • 대부분의 어플리케이션은 다중 스레드를 이용
  • 웹 브라우저 : 하나의 스레드가 이미지를 표시하고 다른 스레드는 네트워크 담당
  • 워드 프로세서 : 그래픽 표시, 사용자의 키 입력에 응답, 맞춤법 검사를 각각의 스레드가 실행
  • 싱글 프로세스 웹 서버 : 사용자는 자신의 차례가 올 때가지 기다려야 함
  • 다중 프로세스 웹 서버 : 다중 스레드가 나타나기 전까지 사용했으나 프로세스를 만드는데 많은 시간과 자원 소비
  • 다중 스레드 웹 서버 : 현대 웹 서버가 사용하고 있으며 오버헤드가 적음
  • 운영체제 커널 : 리눅스 시스템에서 시스템을 부트하면 커널에 여러 스레드가 생성되어 각 스레드는 다른 작업들을 수행

장점

  • 응답성 : 대화형 어플리케이션에서 프로그램의 일부가 막히거나 긴 작업을 수행하더라도 프로그램 수행이 계속 되는것을 허용 해 응답성을 증가시킴
  • 자원 공유 : 스레드들은 그들이 속한 프로세스의 자원을 공유
  • 경제성 : 자원을 공유하기 때문에 생성과 문맥교환이 더 경제적임
  • 규모 적응성 : 다중 처리기 구조에서 각각의 스레드가 병렬로 수행 가능

다중 스레드 모델

  • 사용자 스레드 : 커널 위에서 지원되며 커널의 지원 없이 관리
  • 커널 스레드 : 운영체제에 의해 직접 지원되고 관리
  • 일반적으로 사용자 스레드가 커널 스레드보다 빠름
  • 사용자 스레드와 커널 스레드는 연관 관계가 존재

다대일 모델

  • 많은 사용자 스레드가 하나의 커널 스레드와 연결
  • 스레드 관리는 사용자 공간의 스레드 라이브러리에 의해 행해짐
  • 한 스레드가 봉쇄형 시스템 콜을 하면 전체 프로세스가 봉쇄
  • 한번의 하나의 스레드만 커널에 접근 가능
  • 현재에는 쓰이지 않음

일대일 모델

  • 사용자 스레드와 커널 스레드가 각각 연결
  • 하나의 스레드가 봉쇄적 시스템 콜을 호출해도 다른 스레드 실행 가능
  • 다대일 모델보다 더 많은 병렬성 제공
  • 다중 처리기에서 다중 스레드가 병렬로 수행되는것을 허용
  • 사용자 스레드를 만드려면 커널 스레드를 만들어야 하기 때문에 오버헤드 발생
  • 예시 ) 리눅스, 윈도우

다대다 모델

  • 여러개의 사용자 스레드가 그보다 적은 수 혹은 같은 수의 커널 스레드와 연결
  • OS가 적절한 수의 커널 스레드를 만들 수 있도록 허용
  • 개발자는 필요한 만큼의 사용자 스레드를 만들 수 있고 상응하는 커널 스레드가 다중 처리기에서 병렬로 수행 가능

두수준 모델

  • 다대다 모델의 한 종류로 일대일 모델과 다대다 모델을 같이 사용
profile
지금부터 공부하고 개발한것들을 꾸준하게 기록하자.

0개의 댓글