윈도우의 프로세스와 스레드 (10)
윈도우의 프로세스와 스레드 (10)
스레드 우선권
윈도우 시스템은 스레드를 기준으로 다중 작업이 이루어지는 멀티스레딩 프로그램이라고 앞에서 언급하였습니다.
스레드는 각각 일정 시간의 실행 시분할을 갖게되며, 일단 동시에 모든 요청 스레드를 다 처리할수는 없으므로,
순서대로 처리하는 스레드 큐가 형성 됩니다.
그런데 이 큐가 한줄로 늘어선것이 아니라 우선권이라는 개념을 가진 상태에서 병렬적인 큐로 형성되어있습니다.
우선권은 이 숫자가 커지면 커질수록 우선적인 개념을 갖고있고 이는 시스템이 빨리 처리해야하는 스레드입니다.
가령 은행 객장에 우대 고객 전용창구가 따로있고, 아무리 줄이 길어도 우대 고객 전용창구에 줄을 선 우대고객은 가장 먼저 은행일을 볼수있는것과
같은 개념입니다.
윈도우는 이 우선권이 31번까지 있습니다. 따라서 스레드가 어떤 큐에 들어가냐에 따른 처리속도가 달라지게 됩니다.
우선권이 높은 큐를 할당받는 스레드는 주로 I/O등이나 시스템과 관계된 중요한 시스템들입니다.
엄밀하게 말해서 우선권이 높은 큐는 그만큼 많은 시간 할당을 받게됩니다. 시분할 멀티테스킹이기때문입니다.
윈도우시스템은 동적으로 우선권을 관리합니다, 이는 프로그램이 실행되는 동안에도 계속 우선권이 변경될수있으며 시스템은 항상 우선권을 적절한 방법으로
통제하고 관리합니다. 가령 윈도우 NT 이상의 시스템에서 나타나는 성능옵션에서 포그라운드 서비스와 백그라운드 서비스의 응용 프로그램 응답옵션을
바꿀수있습니다.
참고로 윈도우 시스템은 유닉스시스템과 포그라운드 서비스와 백그라운드 서비스의 개념상의 차이가 존재합니다.
윈도우 시스템에서 백그라운드 서비스는 현재 활성화되지않은 모든 다른 프로세스를 의미합니다. 즉 로컬 로그온이 처리되어
창의 상단의 바가 파란색으로 바뀌지않은 다른 모든 프로세스는 백그라운드 서비스입니다, 이경우 성능옵션에서의 다른 조정은 결국 우선권의 조정
일수밖에없습니다.
실제로 위와같은 성능옵션의 응용프로그램 최적화는 원래 이 응용프로그램이 갖도록 정의되었던 스레드의 우선권보다 다소 높은 우선권을 동적으로 설정하라는것입니다.
우선권의 개념은 작업관리자에서도 볼수있으며, 작업관리자에서는 우선권 클래스에 해당하는 다섯가지 개념이 나타나게 됩니다.
이 우선권들은 일차적으로 프로세스가 형성된 경우 지정됩니다.
Reference
- https://karfn84.tistory.com/entry/%ED%8E%8C%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9C%88%EB%8F%84%EC%9A%B0%EC%9D%98-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C