MS 운영체제의 커널은 두 가지의 클래스 개체를 관리한다. 첫 번째가 dispatcher object 이고 두번째는 control object 이다. dispatcher object는 동기화와 동작처리를 위해 사용된다. control object는 커널동작을 제어하기 위해 사용되고 함수처리에는 영향을 미치지 않는다.
먼저 디스패쳐 개체들을 살펴보자
1. 이벤트(Event)
A. 발생하는 활동을 기록하고 수행되어야 하는 행위를 연결하기 위해 사용된다.
2. 세마포어(Semaphore)
A. 리소스에 대한 엑세스를 제어하기 위해 사용된다. 세마포어는 하나의 데이터를 공유하면서 수행되는 두 개의 프로세스가 충돌없이 작업을 수행하기 위해 내부 프로세스간의 통신에 사용하는 기본적인 동기화 프로세스를 말한다. 세마포어 번호가 1로 설정되면 한번에 하나의 Thread만이 리소스에 엑세스 할 수 있다.
3. 뮤턴트(Mutant)
A. 리소스에 대해 상호배타적인 엑세스를 제어하기 위해 사용된다. 뮤턴트는 커널 모드 뿐만이 아니라 사용자 모드에서도 사용될 수 있다.
4. 뮤텍스(Mutex)
A. 뮤턴트와 비슷하게 뮤텍스 또한 상호배타적인 엑세스를 제어하기 위해 사용된다. 그러나 뮤텍스는 사용자 모드가 아닌 커널 모드 컴포넌트에 의해서만 사용될 수 있다.
5. 타이머(Timer)
A. 지정된 시간에 이벤트와 행위를 트리거하기 위해 사용된다. 타이머 개체는 시간경과를 기록한다.
6. 스레드(Thread)
A. 프로그램 코드를 실행하는 엔티티이며, 이용 가능한 프로세서에서 실행하는 커널에 의해 디스패치(dispatch)된다. 스레드는 프로세스 개체에 의해 소유되며 프로그램을 연속적으로 실행하기 위해 사용된다.
이번에는 제어개체(control object)를 살펴보자
1. 인터럽트(Interrupt)
A. 현재 하던 작업을 멈추고 요구된 작업을 실행한 다음 원래의 작업을 계속하는 처리 방식이다.
2. 프로세스(Process)
A. 스레드가 실행되는 가상 어드레스 공산과 환경을 제공한다. 프로세스 개체는 스레드 개체가 실행되기 전에 초기화 되어야 한다.
3. 프로파일(Profile)
A. 시스템 프로그램 코드의 블록에서 스레드가 얼마나 많은 시간을 소비했는지를 기록하기위해 사용된다.
4. 비동기 프로시져 호출(Asymmetric procedure call):이 개체는 특정 스레드의 실행으로 칩입하여 호출된 프로시져를 중지하기 위해 사용된다.