본문 바로가기
컴퓨터 지식

(운영체제,OS) 스레드란?

by LiveData 2018. 12. 7.
반응형


스레드

  • 응답성
  • 자원공유
  • 경제성
  • 규모가변성
  • responsiveness, resource sharing, economy, scalability




다중코어 프로그래밍 

  • 작업나누기(dividing activities)
  • 균형(balance), 
  • 데이터분리(data Spiliting)
  • 데이터종속성(data dependency)
  • 시험 디버깅



user threads, Kernel threads



  • one to one : 커널 스레드를 생성하는 오버헤드가 응용 프로그램의 성능 저하
  • many to many : 충분한 kernel threads 생성


Thread library 는 프로그래머에게 API를 제공

 방법 

  1. 커널 지원 없이 완전히 사용자 공간에서만 라이브러리 제공
  2. 운영체제에 의해 지원되는 커널 수준 라이브러리 구현


thread pool : 프로세스를 시작할때 일정수의 스레드를 미리 풀로 만들어둠

  1. 기존 만들어논 스레드로 서비스해주는 것이 더 빠르다.
  2. 스레드 개수에 제한, 병렬로 처리할 수 없는 시스템에 도움


OpenMP 

  • 메모리 공유 환경에서 병렬 프로그래밍을 위한 도움을 제공
  • 지역병렬 변수이다
  • 병렬로 실행될수 있는 코드를 막음.



Signal Handling : 프로세스에게 어떤 사건이 일어났음을 알려주기 위해 사용.. 신호는 특정 사건이 일어나야 생성

  1. 신호는 특정 사건이 일어나야 생성
  2. 신호가 생성되면 프로세스에게 전달된다.
  3. 신호가 전달되면 둘중하나로 반드시 처리되어야 한다.
    1.  - 디폴트 신호 처리기 : 커널에 의해 실행
    2.  - 사용자 정의 신호 처리기


단일 처리기는 신호를 프로세스에게 전달




multi-threaded? 

  • 신호가 적용될 스레드에게 전달
  • 모든 스레드에게 전달
  • 몇몇 스레드들에게만 선택적으로 전달
  • 특정 스레드가 모든 신호를 전달받도록 지정


스레드 취소(thread Cancellation) : 스레드가 끝나기 전에 강제종료

취소되어야 할 쓰레드를 target thread


  1. Asynchronous cancellation - 한스레드가 목적스레드 강제종료
  2. Deffered(지연) cancellation - 목적 스레드가 주기적으로 자신이 강제종료

해야 하는지를 검사. 목적 스레드는 질서 정연하게 자신을 강제장료 시킴.

(cancellation point)





Thread-Specific Data(스레드별 데이터)

 : 각 스레드가 자기만 액세스 할 수 있는 데이터를 가져야 할 필요있음,   


Thread-local storage (TLS) allows each thread to have its own copy of data

Useful when you do not have control over the thread creation process 

Different from local variables

Local variables visible only during single function invocation

TLS visible across function invocations



Scheduler Activations


 lightweight process(LWP) 유저 스레드와 커널스레드 사이의 데이터 처리


 사용자 스레드를 실행하기기 위하여 스케줄할 가상 처리기로 보임


 스케줄 액티베이션 - 커널은 응용에게 LWP의 집합을 제공하고 응용은 사용자 스레드를 LWP로 스케줄한다. 


 업콜 - 커널은 응용에게 특정 사건을 알려줘야함


 업콜 처리기는 LWP 가상처리기 상에서 실행되어야 한다. 


 봉쇄될 경우 커널은 응용에게 새로운 LWP를 할당


반응형