Subversion Repositories HelenOS-doc

Rev

Rev 52 | Rev 55 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 52 Rev 53
Line 3... Line 3...
3
<chapter id="time"><?dbhtml filename="time.html"?>
3
<chapter id="time"><?dbhtml filename="time.html"?>
4
    <title>Time management</title>
4
    <title>Time management</title>
5
   
5
   
6
    <para>
6
    <para>
7
    Time is one of the dimensions in which kernel, as well as the whole system, operates.
7
    Time is one of the dimensions in which kernel, as well as the whole system, operates.
8
    It is of special importance to other kernel subsytems. Knowledge of time makes it possible
8
    It is of special importance to many kernel subsytems. Knowledge of time makes it possible
9
    for the scheduler to preemptively plan threads for execution. Different parts of the kernel
9
    for the scheduler to preemptively plan threads for execution. Different parts of the kernel
10
    can request execution of their callback function with some specified delay. A good example
10
    can request execution of their callback function with some specified delay. A good example
11
    of such kernel code is the synchronization subsystem which uses this functionality to implement
11
    of such kernel code is the synchronization subsystem which uses this functionality to implement
12
    timeouting versions of synchronization primitives.
12
    timeouting versions of synchronization primitives.
13
    </para>
13
    </para>
14
 
14
 
-
 
15
    <section>
-
 
16
    <title>System clock</title>
-
 
17
    <para>
-
 
18
    Every hardware architecture supported by HelenOS must support some kind of a device that can be
-
 
19
    programmed to yield periodic time signals (i.e. clock interrupts). Some architectures have
-
 
20
    external clock that is merely programmed by the kernel to interrupt the processor multiple
-
 
21
    times in a second. This is the case of ia32 and amd64 architectures<footnote><para>When
-
 
22
    running in uniprocessor mode.</para></footnote>, which use i8254 or a compatible chip to
-
 
23
    achieve the goal.
-
 
24
    </para>
-
 
25
    <para>
-
 
26
    Other architectures' processors typically contain two registers. The first
-
 
27
    register is usually called a compare or a match register and can be set to an arbitrary value
-
 
28
    by the operating system. The contents of the compare register then stays unaltered until it is
-
 
29
    written by the kernel again. The second register, often called a counter register, can be also
-
 
30
    written by the kernel, but the processor automatically increments it after every executed
-
 
31
    instruction or in some fixed relation to processor speed. The point is that a clock interrupt is
-
 
32
    generated whenever the values of the counter and the compare registers match. Sometimes, the scheme of
-
 
33
    two registers is modified so that only one register is needed. Such a register, called a decrementer,
-
 
34
    then counts towards zero and an interrupt is generated when zero is reached.
-
 
35
    </para>
-
 
36
    <para>
-
 
37
    In any case, the initial value of the decrementer or the initial difference between the counter and
-
 
38
    the compare registers, respectively, must be set accordingly to a known relation between the real time
-
 
39
    and the speed of the decrementer or the counter register, respectively.
-
 
40
    </para>
-
 
41
   
-
 
42
    </section>
-
 
43
 
15
</chapter>
44
</chapter>
16
45