오래 못 할 짓 하지 않기
[ 운영체제 ] 9. Thread(2) 본문
Threading Issue
● fork , exec
- fork : 현재 명령어를 실행한 프로세스를 복제한다.
복제할 때는 만들어진 process는 Thread를 가져오지 않고, 단일 Thread 로 시작한다.
- exec : 현재 프로세스를 새로운 프로세스로 덮어씌운다.
● Thread Cancellation Type
- Asynchronous Cancellation 은 Cancel하기로 한 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가 너무 많아지는 걸 방지하는 역할인 듯 함)
Signal
: Process에게 특정한 일이 발생했다고 알려주는 매커니즘
Signal의 종류는 다음과 같다.
● Synchronous : 현재 있는 프로세스에서 발생한 Signal
/ ex) 어떤 명령어를 실행하다가 발생한 에러
● Asnchronous : 외부에서 발생한 Signal
/ ex) 키 입력
● Signal disposition (기질)
- 모든 Signal은 기질을 가지고 있다.
이는 Process가 Signal을 받았을 때, 어떻게 행동할지 정해준다.
- Signal handler : #라는 일이 발생했을 때 Signal을 발생시키는 함수 << 이걸 만들 수 있음
+ SIG_IGN. : Signal 무시한다.
+ SIG_DFL. : Default 상태로 바꾼다.
예제 1)
(출처)
한동대학교 고윤민교수님 - 운영체제
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 11. Scheduling Algorithms (0) | 2024.04.12 |
---|---|
[ 운영체제 ] 10. CPU Scheduling (0) | 2024.04.09 |
[ 운영체제 ] 8. Thread (0) | 2024.04.05 |
[ 운영체제 ] 7. Thread (0) | 2024.04.02 |
[ 운영체제 ] 6. Inter Process Communication / PIPE (0) | 2024.04.01 |