오래 못 할 짓 하지 않기

[ 운영체제 ] 9. Thread(2) 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 9. Thread(2)

쫑알bot 2024. 4. 8. 20:12
728x90

Threading Issue

 

● fork , exec 

- fork : 현재 명령어를 실행한 프로세스를 복제한다.

     복제할 때는 만들어진 process는 Thread를 가져오지 않고, 단일 Thread 로 시작한다.

 

- exec : 현재 프로세스를 새로운 프로세스로 덮어씌운다.

 


● Thread Cancellation Type

- Asynchronous CancellationCancel하기로 한 Thread를 즉시 Terminate시킨다.

 

- Deffered Cancellation  Terminate 되어야 하는지 주기적으로 확인시킨다.

Linux에서는 signal을 통해서 Thread Cancellation 이 이루어진다.

 

Cancel을 할 수 있느냐 없느냐 상태도 있어서 이걸 Table로 나타내면 다음과 같다.

 


● Thread Local Storage (TLS)

- 하나의 프로세스에서 모든 Thread는 서로 global variable을 공유한다.

- TLS 는 각각의 스레드들이 그들의 copy data를 가질 수 있게 한다.

 

 

 

● Scheduler Activations

 

시스템에서는 n:m 혹은 User - Kernel 같이 Two - Level 모델을 사용한다.

 

이 때 쓰이는 구조가 LWP이다.

이는 가상의 Process인데, 이는 kernel threads가 적당한 숫자로 있게 해준다.

( 그냥 Thread가 너무 많아지는 걸 방지하는 역할인 듯 함)

 

https://cafemocamoca.tistory.com/298

 

 


Signal

: Process에게 특정한 일이 발생했다고 알려주는 매커니즘

 

 

Signal의 종류는 다음과 같다.

 

Synchronous : 현재 있는 프로세스에서 발생한 Signal 
   / ex) 어떤 명령어를 실행하다가 발생한 에러 

Asnchronous : 외부에서 발생한 Signal
   / ex) 키 입력  

 

 

● Signal disposition (기질)

 - 모든 Signal은 기질을 가지고 있다. 

   이는 Process가 Signal을 받았을 때, 어떻게 행동할지 정해준다.

 

 -  Signal handler : #라는 일이 발생했을 때 Signal을 발생시키는 함수    << 이걸 만들 수 있음  

 

 + SIG_IGN. : Signal 무시한다.

 + SIG_DFL. : Default 상태로 바꾼다.


 

예제 1)

 



 

 

(출처)

한동대학교 고윤민교수님 - 운영체제