#
윈도우 커널에서 관리된다고 한다
객체로 구현되어있으며, 새 프로세스를 생성하거나 copy 해서 생성
싱글 프로세스 안에는 멀티 스레드가 제공될수 있고
이것들을 synchronization 하는 기능 제공
윈도우도 프로세스와 스레드 관리를 따로 하게 되고 앞에서 이야기한것과 같다
user job, application 에 대응해서 프로세스가 만들어져서 관리되고
스레드는 dispatchable unit 이 되고 이것을 interrupt 할수도 있고 관리된다.
윈도우는 SMP를 지원
멀티 스레드가 싱글 프로세스 안에서 잘 돌수 있다
코어가 여러개 있으니 어느 스레드를 어디에 할당할지 문제가 남는다
soft affinity - 한번 할당되어도 다른곳에 할당될수 있도록 함 (문제 생겼을시 다른 프로세스 쓸 수 있다)
hard - 한번 할당되면 그 app를 특정 프로세서에 고정 (캐시가 보존될수 있다. 빠른 처리 기대가능)
# 솔라리스의 프로세스 구성
#
인터럽트가 여러개가 들어오면? - 여러 문제 생긴다
어떤것이 우선순위가 높은가, 복잡한 스케줄링 문제
기존 운영체제는 여러 해결책을 내고있지만 잘 해결하지 못하는 문제가 있다.
솔라리스는 좋은 해결책을 제공
각각의 인터럽트를 커널스레드로 독립시켜서
커널이 그것을 스케줄링해서 synchronize해서 상호배제 해서 인터럽트도 스레드를 이용해서 스케줄링 해주는..
# 리눅스
user level 스레드를 kernel process로 맵핑한다.
스레드의 개념을 포함하는 프로세스를 만들게 하는것 - 구현이 간단하다
# Mac OS
#
ULT - 스레드 library를 둬서 그것을 사용해서 스레드를 스케줄링해서, 모드 스위칭이 필요없지만, IO요청하시 나머지 스레드들도 모두 블럭되는 단점이 있다.
ex) java virtual machine
KLT - 커널 안에 TCB를 만들어서 커널이 스레드의 스케줄링과 관리를 책임진다. 스위칭시 mode switching 필요, kernel level 서비스 요청시 커널 모드로 전환이 필요하고 오버헤드가 따르지만 더 자연스럽게 프로그래밍 가능. 한 스레드가 block 되더라도 다른 스레드는 정상적으로 작동한다
프로세스는 나머지 resource를 관리하는 단위
스레드는 프로세스에 비해 cpu에 관련된 부분만 관리하는 단위가 된다.
0 댓글