목차
없음
본문내용
) 따라서 인터럽트가 꺼진 상태라면, thread 를 제어하는
커널 작업에서는 시간이 정지된 상태이므로 다른 thread에게 제어권이 넘어가는
일을 막을 수 있어 원자성을 보장할 수 있다.
2. Alarm, Timer, Interrupt의 관계분석
1) Interrupt 는 하드웨어 인터럽트를 흉내낸다. Simulated time 이 흐를 때마다 펜딩
인터럽트를 발생시킬 것인지 확인하고, 알맞은 때에 해당 인터럽트가 발생했음을
알린다. 이때 사용하는 것이 CallBack() 이다.
2) Timer 는 하드웨어 타이머를 흉내낸다. Timer 가 자신을 인터럽트에 스케쥴하면,
해당 시간에 인터럽트가 Timer::CallBack() 을 호출함으로써 특정 시간이 지날
때마다 발생하는 타이머 인터럽트를 흉내낼 수 있게 된다.
3) Alarm 은 타이머 인터럽트를 받아서 특정 시간마다 작업을 수행할 수 있도록
하는 alarm clock의 역할을 한다. 타이머를 통해 예약한 시간이 되면,
타이머는 Alarm::CallBack() 을 호출한다. 이제 알람에서는 YieldOnReturn()을
이용해서 다른 쓰레드로 preemption 시키거나, Timer::Disable() 을 호출해서
시스템을 종료할 준비를 하게 된다.
4) 요약하면 알람이 울릴 특정 시간이 되면, 인터럽트는 펜딩 큐에서 타이머를 꺼내어
Timer::CallBack() 을 호출한다. 그러면 타이머는 Alarm::CallBack() 을 호출한다.
이제 알람에서는 preemption 을 시키거나, 시스템 종료를 위한 준비를 하게 된다.
커널 작업에서는 시간이 정지된 상태이므로 다른 thread에게 제어권이 넘어가는
일을 막을 수 있어 원자성을 보장할 수 있다.
2. Alarm, Timer, Interrupt의 관계분석
1) Interrupt 는 하드웨어 인터럽트를 흉내낸다. Simulated time 이 흐를 때마다 펜딩
인터럽트를 발생시킬 것인지 확인하고, 알맞은 때에 해당 인터럽트가 발생했음을
알린다. 이때 사용하는 것이 CallBack() 이다.
2) Timer 는 하드웨어 타이머를 흉내낸다. Timer 가 자신을 인터럽트에 스케쥴하면,
해당 시간에 인터럽트가 Timer::CallBack() 을 호출함으로써 특정 시간이 지날
때마다 발생하는 타이머 인터럽트를 흉내낼 수 있게 된다.
3) Alarm 은 타이머 인터럽트를 받아서 특정 시간마다 작업을 수행할 수 있도록
하는 alarm clock의 역할을 한다. 타이머를 통해 예약한 시간이 되면,
타이머는 Alarm::CallBack() 을 호출한다. 이제 알람에서는 YieldOnReturn()을
이용해서 다른 쓰레드로 preemption 시키거나, Timer::Disable() 을 호출해서
시스템을 종료할 준비를 하게 된다.
4) 요약하면 알람이 울릴 특정 시간이 되면, 인터럽트는 펜딩 큐에서 타이머를 꺼내어
Timer::CallBack() 을 호출한다. 그러면 타이머는 Alarm::CallBack() 을 호출한다.
이제 알람에서는 preemption 을 시키거나, 시스템 종료를 위한 준비를 하게 된다.
소개글