Thread
프로세스를 자원을 할당받아 제어하는 것으로 정의한다면
그 중 제어만 분리한 것을 스레드라고 한다.
Light Weight Process(LWP)라고도 하며, 프로세스 활용의 기본단위이다.
하나의 프로세스 안에 여러개의 스레드가 존재할 수 있고, 그 스레드들은 동일한 자원을 공유한다.
즉 자원을 공유하지만, 제어는 각각 따로인 시스템
한 프로세스 안에서도 여러 작업이 동시에 수행될 수 있으므로 필요한 시스템
일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
자원을 공유하여 효율성 증가(커널의 개입을 피할 수 있음)
병렬처리를 통해 성능 향상
ThreadID: 스레드를 구별하는 식별자
Register Set: Program Pointer, Stack Pointer 등이 있으며, 제어를 위한 자기만의 레지스터 셋https://vsfe.tistory.com/12
Stack: 작업을 위한 개인 작업공간
사용자 영역의 스레드 라이브러리로 구현 됨. 이 라이브러리가 스케쥴링을 담당하게 된다.
커널 수준 스레드는 하나인데, 사용자 수준 스레드는 여러개인 n:1 매칭이다.
커널은 스레드의 존재를 모르며, 커널의 개입을 받지 않아 생성 및 관리의 부하가 적으며 유연한 관리 가능
단점으로는, 커널이 스레드의 존재를 모르기 때문에 프로세스 단위로 자원을 할당하고,
한번에 하나의 스레드만 커널에 접근 가능하며
하나의 스레드가 block되면 모든 스레드가 대기한다
https://m.blog.naver.com/PostView.naver?blogId=jk130694&logNo=220689577611&navType=by
커널에서 직접 스레드를 관리한다. 사용자 수준에서 스레드를 여러개 만들면
커널도 같은 숫자의 스레드를 만들어 1:1 매칭한다.
커널 영역에서 스레드의 생성, 관리를 수행하므로 Context Switching 등 부하가 더 크다.
하지만 커널이 각 스레드를 개별관리 하므로 프로세스 내 스레드들이 병행수행 가능하며,
하나의 스레드가 Block되어도 다른 스레드는 계속 작업 수행 가능하다.
자원은 한정되어 있기 때문에, 사용자 커널 스레드를 무한정 생산할 수 없고,
커널 스레드 생성으로 인한 오버헤드 증가로 성능이 저하할 수 있기 때문에
시스템 자원 스레드의 수를 제한해야 하는 문제점이 있다.
https://m.blog.naver.com/jk130694/220689602774
1:n 스레드와 1:1 스레드의 장점을 합친 n:m(n > m) 형태
스레드 생성은 사용자 영역에서 이루어지며, 여러개의 사용자 수준 스레드에 여러개의 커널 스레드가 매핑되는 모델
사용자는 원하는 수만큼 스레드를 사용하며,
커널 스레드는 자신에게 할당 된 하나의 사용자 스레드가 block되어도 다른 스레드를 수행가능하다.
병행처리 가능하며 효율적이면서 유연한 시스템이다.
https://m.blog.naver.com/jk130694/220689655244