포스트

[운영체제] 쓰레드

Thread

쓰레드와 프로세스의 차이,

실행 단위: instruction의 그룹

프로세스 내부 실행 단위, 실행 가능한 instruction의 그룹

process도 instruction을 실행.. process 내부 thread가 실행된다는 뜻

컴퓨팅 자원 필요 .. 운영체제에게 할당

thread 만들어달라고 요청..

의문? 어떻게 만드는가 ? syscall?

thread를 lightweight process라고 부름.

process는 code, data, stack, memory for register context(pc, register) 등으로 구성됩니다.

thread는 stack와 memory for register context

pcb.. thread control block이 존재한다..

pcb안엔 기본적으로 tcb가 하나 존재한다고 볼 수 있다.

thread를 더 만드려면, TCB를 만든다. TCB는 registers와 stack을 만들어주면 된다..

file 미리 배우기, process 안의 file 자원을 사용하기 때문임.

장치를 표현하기 위해, file을 사용.. stdin, stdout, stderr

이 3개의 파일을 프로세스가 실행되면 할당을 해줌.. ?

thread는 PCB내의 전역변수를 공유(읽고 쓰기)가능하다!

register 80x86에서 TCB 레지스터 값만 따로 만들면 된다는게 무슨 소린지 모르겠음 thread switching 도 가능하다!! 이를 위해선 레지스터, stack이 필요한 것이다.

Benefits of Threads

Process를 생성/ 제거할 때보다 시간이 적게 소요.

context switch보다 thread switch가 유리..

communicate도 이점. kernel 필요x pcb data영역을 이용하는 식으로 가능..

thread간 통신에 동기화 처리 필요, ipc보다 빠르다

Multi-Thread

프로세스를 Thread가 실행 될 수 있는 하나의 틀로 본다..

입력 때문에 블록.. 1 thread로 인해 프로세스가 블록됨.

프로그럄 3 -> 프로세스 3

멀ㅌ 스레드로 ㅎ며ㅑㄴ 메모리절약 시간절약됨

user-level threads

커널 개입 x

threads library라고 user level에서 만들어짐..

process는 kernel.. pcb가 kernel에 존재

kernel - level 보다 빠르고, 간편하지만 단 커널 process 입장에선 thread가 하나로 보임,

concurrent 못함.. block을안한다면 유리할 것

kernel-level threads

커널 개입 ㅇ, 커널이 생성.. mode change로 인해 오버헤드 존재

커널에게 요청하고, mode change, 스케쥴링 가능하고, concurrent하게 실행 가능하다.

user-level - 멀티 스레드를 os가 지원안하면 좋앗는데 요새는 다 지원해서 의미가 없음

빠르게 동작하긴 함, 커스터마이징도 가능함 - threads library..

동시 수행 어드벤티지가.. 업슴..

user-level threads의 단점은 멀티스레드의 장점을 가지지 못한다는것,, 멀티 프로세싱에 비해

mode change 에서 오버헤드, 커널 모드 자체 잡일에서 오버헤드.. 그래서 성능 차이가 많이 난다.

요새도 둘을 같이 사용한다,, 의문, 만약 io가 자주 사용도지 않는 프로세스면 user-level이 유리?

thread만들라면 fork -> exec()?..? clone()

여기서 clone()을 사용한다.

tast_struct를 할당함. pcb 하위 자료 memory info table를 가짐..

memory info table이 memory를 가리킴.

clone하면 자식 task_struct가 pid증가로. 새롭게 할당해 memory info table을 공유함.

결과적으로 code와 data를 공유하는 효과를 가짐.

! clone()과 clone의 역할에 대해 다시 조사

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.