쓰레드
- 실행될 명령어들의 연속, called by 정량 프로세스(light-weight)
- 순차적 실행, 프로세스 상태 전이의 병렬성을 접속하기 위함.
- 다중 프로그래밍 기법에서 여러개의 프로세스는 하나의 시스템을 공유
단일 쓰레드
- 하나의 프로세스를 수행하는 과정에서 인터럽트, 함수 순차적 실행
- 커널 개입이 없어서, 통신이 효율적
다중 쓰레드
- 하나의 프로세스에서 여러개의 thread가 실행될 수 있도록하는 기술
- 다중 프로세스에서 각 프로세스는 독립된 메모리에서 각각 실행됨.
- 각 프로세스간 변수, 자료구조 접근 x
- stack만 따로 할당 받고, code, data, heap 영역 공유
- 각 프로세스는 heap 공간을 공유하지는 않는데, 한 프로세스 내에서 쓰레드끼리의 힙 영역 공유가 가능함.
=> 한 쓰레드가 프로세스 자원 변경시, 다른 쓰레드도 그 변경결과를 알 수 있음.
쓰레드 운영 방식
커널 수준
- 쓰레드 패키지를 운영체제 커널 자체에서 관리(커널캐입이 많아서 비효율)
- 응용프로그램 이식성이 낮음.
- 사용자를 해제하지 못하면 운영체제가 지원
사용자 수준
- 쓰레드 패키지를 사용자 영역에 두고, 운영체제 커널은 단일 프로세스만 관리(커널개입이 적어서 효율적)
- 운영체제는 run time system도 하나의 프로세스로 간주
- cpu사용을 해제하지 못하면 시스템 중단 -> 커널로 전환없이 스레드 교환이 가능해서 오버헤드 줄어듬
<커널 수준과 반대>
- 이식성 높음
- 문맥교환이 적어서 속도가 빠름
- 독자적 알고리즘 필요, 구현 어려움
- 대형시스템에 적합