Chapter4. 스레드 관리
카테고리: OS
태그: CS
유튜브에 있는 김덕수 교수님의 Operating System 강의를 듣고 정리한 내용입니다.
중간에 등장하는 ppt 내용들은 모두 강의자료를 캡처한 것입니다.
🔧 Thread 정의
스레드 개념 | 메모리 관점 |
---|---|
- 프로세서 활용의 기본 단위
- 구성 요소
- Thread ID
- Register set (PC, SP 등)
- Stack (local data)
- Resource를 프로세스 내 다른 스레드들과 공유
스레드 장점
- 사용자 응답성 (Responsiveness)
- 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업 가능
- 자원 공유 (Resource sharing)
- 자원을 공유하기 때문에 커널의 개입 최소화 (효율성 증가)
- 경제성 (Economy)
- 프로세스의 생성, context switch에 비해 효울적
- 멀티 프로세서 활용
🔧 사용자 수준 스레드 (User Threads)
- 사용자 영역의 스레드 라이브러리로 구현됨
- 스레드 생성, 스케줄링, …
- ex) Win32 threads, JAVA thread API, …
- 커널은 스레드의 존재를 모름
- 커널의 관리를 받지 않음
- 생성 및 관리의 부하가 적음
- 유연한 관리 가능
- 이식성 높음
- 커널은 프로세스 단위로 자원 할당 (single-threaded kernel일 경우)
- 스레드 하나가 block 상태되면 모든 스레드 멈춤
- 커널의 관리를 받지 않음
🔧 커널 수준 스레드 (Kernel Threads)
- OS(kernel)가 직접 관리
- 커널 영역에서 스레드 생성, 관리함
- context switching 등 부하(overhead)가 큼
- 커널이 각 스레드를 개별적으로 관리
- 스레드 하나가 block 되어도 다른 스레드들은 작업 가능
🔧 혼합형 (n:m) 스레드
- 장점들 골라서…
- 유연하면서 효율적이게
🔧 Multi-Process vs Multi-thread
- 멀티 프로세스의 경우 메모리를 공유하지 않음
- 메모리 fork. 독립적인 메모리 관리
- ex) 동시에 여러명의 로그인 처리
- 로그인은 고유 아이디때문에 한 프로세스당 하나만 가능
댓글 남기기