Hyunebee

프로세스의 스레드 본문

운영체제

프로세스의 스레드

Hyunebee 2022. 4. 16. 15:45

프로세스 스레드

-프로세스의 특성인 자원과 제어에서 저어만 분리한 실행 단위 -> code data files 같은 자원은 공유해 사용

-각 스레드는 별도의 실행 정보를 가지므로 별도의 스택이 필요함 -> 아래 그림에서 스택은 스레드마다 가지고 있음

-한 개의 프로세스는 한 개 이상의 스레드로 구성됨 -> 한 프로세스에서 나온 스레드들은 같은 주소공간을 공유

-병행 수행 -> 한프로세스 내의 스레드를 하나의 목적을 위해 사용

-병렬 수행 가능 -> 한 프로세스의 스레드를 다른 프로세서에서 사용 but 멀티프로세서여야함 

-경량 프로세스라고도 부른다.

 

싱글 스레드와 멀티 스레드로 구분

스레드 구조

 

여기서 우리는 병행과 병렬을 구별할 줄 알아야한다.  

 

병행 프로세스란

- 동시에 실행되는 것 처럼 보이는것

- 운영체제가 프로세서의 시간을 쪼개어 전환하믕로써 동시 실행처럼 보이게 할 수 있다. 

 

병렬 프로세스란

- 여러개의 CPU에서 동시에 작업을 처리하는것

 

하지만 큰의미의 Concurrency에서는 병행과 병렬 모두 만족한다. -> 동시에 실행되는 것 처럼만 보이면 됨 

 

스레드의 병행 수행

1. 사용자 응답성

  프로세스의 일부가 멈춘 경우에도 지속적 실행가능

2. 자원공유

  스레드는 공유메모리나 IPC보다 프로세스 자원과 메모리를 쉽게 공유

3. 경제성

  스레드 교환은 문맥 교환보다 오버헤드가 적다.

  스레드 생성은 프로세스 생성보다 저렴하다.

  프로세스 간에 비해 스레드 간의 통신 방법이 간단하다. 

4. 확장성

쓰레드 제어 블록(TCB)

 PCB는 TCB의 리스트를 가르킴 -> 프로세스에서 쓰레드를 생성

 TCB는 실행상태, 스케쥴링 정보, PCB의 포인터 정보등을 가지고 있음

 

 쓰레드 제어 블록이 어디있는지에 따라 스레드의 구현이 달라짐

 유저 메모리영역의 heap에 TCB가 있다면 사용자 수준 스레드이다.  -> 유저 레벨에서 사용한다면 하드웨어를 효과적   으로 다루기 힘듬

 

 커널 메모리영역의 heap에 TCB가 있다면 커널 수준 스레드 -> user에 있는 stack 마다 Thread의 stack을 가르키게 만듬

 사용자 스레드에 대응되는 커널스레드가 있어야한다. == user에 있는 stack 마다 Thread의 stack을 가르키게 만듬

 

 

https://www.crocus.co.kr/1255

    다대일(n:1) 매핑 : 사용자 수준 스레드 구현 -> Pure user-level 스레드를 라이브러리 형태로 지원 한곳에서 나와서 3      갈래로 나오고 있다. 동시성은 있지만 병렬성은 없다.  커널은 스레드가 이닌 프로세스에 프로세서를 할당한다.

 

    장점

    1. 이식성이 높다. -> 커널에 독립적이므로 다른 운영체제에 적용 가능성이 높다.

    2. 커널 오버헤드가 적음 -> 스레드 교환시 커널에 영향x, 스케쥴링과 동기화시 영향이 x

 

    단점

    1. 병렬처리를 사용할 수없다. 

    2. 스레드 간 보호가 어렵다. 

 

   일대일(1:1) 매핑 : 커널 수준 스레드 -> 프로세서가 여러개일 경우 병렬성을 얻을 수 있다. 프로세스가 스레드에 할당 

   

   장점

   1. 병렬성

    각기 프로세서를 할당 받아 병렬 수행가능

 

   단점

   1. 커널의 오버헤드가 크다.

     커널이 전체 프로세스와 스레드의 정보까지 유지

 

   다대다(m:m) 매핑 : 혼합형 쓰레드 구현 

 

   

   

   

   

 

 

 

 

 

'운영체제' 카테고리의 다른 글

메모리 관리 - 페이징, 세그먼테이션  (0) 2022.04.17
교착상태  (0) 2022.04.17
동시성과 상호배제  (0) 2022.04.17
프로세스의 구성  (0) 2022.04.15
운영체제  (0) 2022.04.15