Exercises


1:

When we described process states, we described the "waiting or blocking" state as the state a process finds itself in when it is not running nor ready to run. What are the differences between waiting and blocking? Under what conditions would a process find itself in the waiting state, and under what conditions would it be in the blocking state?

2:

Find the kernel code where a process is set from a running state to the blocked state. To put it another way, find where the state of the current->state goes from TASK_RUNNING to TASK_STOPPED.

3:

To get an idea of how long it would take a counter to "roll over," do the following calculations. If a 64-bit decrementer runs at 500MHz, how long would it take to terminate with the following values?

  1. 0x000000000000ffff

  2. 0x00000000ffffffff

  3. 0xffffffffffffffff

4:

Older versions of Linux used sti() and cli() to disable interrupts when a section of code should not be interrupted. The newer versions of Linux use spin_lock() instead. What is the main advantage of the spinlock?

5:

How does the x86 routine do_IRQ() and the PPC routine ppc_irq_dispatch_handler() allow for shared interrupts?

6:

Why is it not recommended that a system call be accessed from kernel code?

7:

How many run queues are there per CPU on a Linux system running the 2.6 kernel?

8:

When a process forks a new process, does Linux require it to give up some of its timeslice? If so, why?

9:

How can processes get reinserted into the active priority array of a run queue after their timeslice has expired? What is a normal process' priority range? What about real-time processes?




The Linux Kernel Primer. A Top-Down Approach for x86 and PowerPC Architectures
The Linux Kernel Primer. A Top-Down Approach for x86 and PowerPC Architectures
ISBN: 131181637
EAN: N/A
Year: 2005
Pages: 134

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net