Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.14 Mб
Скачать
    1. Clock Interrupt Processing

Each time a clock interrupt occurs, besides incrementing the software clock, the handler routine carries out the following activities:

Figure 1: Structure of a Timer Queue

  • Process timer events: Real-time operating systems maintain either per-process timer queues or a single system-wide timer queue. The structure of such a timer queue has been shown in Fig. 5.1. A timer queue contains all timers arranged in order of their expiration times. Each timer is associated with a handler routine. The handler routine is the function that needs to be invoked when the timer expires. At each clock interrupt, tho kornol chocks tho timor data structures in tho timor quouo to soo if any timor ovont has occurred. If it finds that a timer ovont has occurred, then it queues tho corresponding handler routine in tho ready quouo.

  • Update ready list: Since tho occurrence of tho last clock ovont, somo tasks might have arrived or become ready duo to tho fulfillment of certain conditions they wore waiting for. Recollect from a basic course on operating system that arriving tasks and tasks waiting for somo ovont (such as a page fetch or a semaphore ovont) are queued in a wait quouo. Tho tasks in tho wait quouo are chocked to soo if any task has become ready in tho moan while. Tho tasks which are found to have become ready, are queued in tho ready quouo. If a task having highor priority than tho currently running task is found to have become ready, then tho currently running task is preempted and tho scheduler is invoked.

  • Update execution budget: At each clock interrupt, tho scheduler decrements tho timo slice (budget) re­maining for tho executing task. If tho remaining budget for tho task becomes zero and tho task is not yet complete, then tho task is preempted, and tho scheduler is invoked to select another task to run.

    1. Providing High Clock Resolution

Wo had pointed out in Sec. 5.1 that there are two main difficulties in providing a high resolution timor. First, tho overhead associated with processing tho clock interrupt becomes excessive as tho timo service resolution gets finer. Secondly, tho jitter associated with tho timo lookup system call (clock-gettimeO) is often of tho order of several milliseconds. Therefore, it is not useful to provide a clock with a resolution any finer than this. However, somo real-time applications need to deal with timing constraints of tho order of a few nano seconds. For such applications, an important question is: Is it at all possible to support timo measurement with nano second resolution? A way to provide sufficiently fine clock resolution is by mapping a hardware clock into the address space of applications. An application can then read the hardware clock directly through a normal memory read operation without having to make a system call. For example, on a Pentium processor, a user thread can bo made to road tho Pentium timo stamp counter. This counter starts at 0 when tho system is powered on and increments after each hardware clock interrupt. At today’s processor speed, this moans that during every nanosecond interval, tho counter increments several times.

However, making tho hardware clock readable by an application significantly reduces tho portability of tho application. For example, when an application running on a Pentium processor is ported to a different processor, tho now processor may not have a high resolution counter, and certainly tho memory address map and resolution would differ.

    1. Timers

Wo had pointed out that timor service is a vital service that is provided to applications by all real-time operating systems. Real-time operating systems normally support two main types of timers: periodic timers and aperiodic (or one shot) timers. We now discuss some basic concepts about these two types of timers.

Periodic Timers: Periodic timers are used mainly for sampling events at regular intervals or performing somo activities periodically. Once a periodic timor is sot, it expires periodically. This is implemented using tho timor quouo as follows. Each timo tho periodic timor expires, tho corresponding handler routine is invoked, and tho timor data structure is inserted back into tho timor quouo (soo Fig. 5.1). For example, a periodic timor may bo sot to 100 mSec and its handler sot to poll tho temperature sensor after every 100 mSec interval.

Aperiodic (or One Shot) Timers: Those timers are sot to expire only once. Watchdog timers are a popular example of one shot timers.

Watchdog timers are used extensively in real-time programs to detect if a task misses its deadline, and then to initiate exception handling procedures upon a deadline miss. An example use of a watchdog timor has boon

I

f(){

^ wd_start(ti,exception-handler); M start

v wd_tickle(); end

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]