전공/운영체제

2장-2

twoweeks-within 2025. 3. 30. 15:06

Thread lib

 

User    : lib 에서 생성

// Kernel : OS

> POSIX : Thread 생성/동기화 , standard 문서 > 여러회사에서 implement > 대표적으로 UNIX > LINUX/MAC

 

init -> create(&tid , &attr, runner , arrgc[]) -> join(tid, NULL)

>

create

1. tid : 쓰레드 아이디를 넣고

2. &attr (속성) : 옵션 넣고

3. runner ,, : 실행할 행동 // 함수포인터

4. arrg[]      : 거기에 들어갈 매개변수 

>

join

1. tid 가 끝날때 까지 기다림

2. 그 tid의 return 으로 NULL 을 받음 // 반환값 X

 > tid가 NULL을 줄때까지 기다림!

 

fork() library with MultiThread

 : P1 with Thread 1,2,3,4 가 있을때

   > fork() 할때 P2 가 1,2,3,4 를 다받는것 X

       > fork를 생성한 Thread만 살아남음

          > 그후  exec() 를 하면 T1이든 T2 이든 기존 Threads 싹 사라짐

             > exec() 를 호출한 New process (단일 Thread) 로 replace

 

Signal Handling

 > Every Handler -> kernel 로 전달, 기본적으로 USER에서 실행

  1. default handler (by OS) 

     ex) Linux Terminal : ctrl+c : SIGINT(interrupt) signal 발동 -> 해당 process 종료

  2. user-defined handler : 내가만든것

 

Single T , Multi T

1. Single T : 받은대로 P에서 처리

2. Multi   T : T1,T2,T3,, 누가처리할거임??

>> Scheduling! 

     : 기본 단위 Thread // ULT : 자체 스케쥴링<> KLT : OS

 

Thread 가 끝나기 전에 종료..

1. 동기식 Cancellation   : 즉각

2. Defferd Cancellation : 주기적으로 cancel 이있는지 확인 

    > Thread Default : Disable <> Enalble : 캔슬

 // linux 에서 signal 

 // kill -9 pid

 

TLS : Thread_Local_Storage 

   // 기본적으로는 따로 없고 Process의 Code, Data, File 등을 가져다씀

> 자기만의 data 공간할당가능하며 그공간은 해당 Thread 전체임

   // 지역변수 가아니라 static 느낌 

 

 

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

6장  (0) 2025.04.05
4장  (0) 2025.03.31
3장  (0) 2025.03.31
2장  (1) 2025.03.27
1장  (0) 2025.03.08