220 likes | 505 Views
Kernel Synchronization in Linux Uni-processor and Multi-processor Environment. By Kathryn Bean and Wafa’ Jaffal (Group A3). Topics. Linux History Kernel Control Path Synchronization Technique SMP Architecture Hardware Support for Synchronization (Pentium-based Architecture)
E N D
Kernel Synchronization in Linux Uni-processor and Multi-processor Environment By Kathryn Bean and Wafa’ Jaffal (Group A3)
Topics • Linux History • Kernel Control Path • Synchronization Technique • SMP Architecture • Hardware Support for Synchronization (Pentium-based Architecture) • Linux/SMP kernel • Conclusion
Linux History • University of Helsinki (1997), Master’s thesis – “Linux, a Portable Operating System” by L. Torvalds • OS for IBM-compatible personal computers (Intel 80386 microprocessor). • Source code under GNU General Public License
Kernel Control Path • Kernel control path is the sequence of instructions executed in Kernel Mode to handle a kernel request. • Kernel control path executes due to the following reasons: • System calls • Exceptions • Interrupts
Synchronization Technique • Nonpreemptability • Atomic Operations • Interrupt Disabling • Locks
Condition to be Preempted • Kernel control path can preempt a running process; however, when an interrupt handle terminates, the process resumes. • Only kernel control path can interrupt another kernel control path.
Atomic Operation • An atomic operation - performed by executing a single assembly language instruction • Linux kernel provides special functions such as: atomic_int(v) v++
Interrupt Disabling • Because of its simplicity, interrupt disabling is used by kernel functions for implementing a critical region. • This technique does not always prevent kernel control path interleaving. • Critical section should be short because any communication between CPU and I/O is blocked while a kernel control path is running in this section.
Locking • Two kinds of locking: • Kernel semaphores, used by both uni-processor and multiprocessor systems • Spin Locks, used by only multiprocessor systems
Kernel Semaphore Implementation • Kernel semaphore – is object of type structure semaphore, see include/asm/semaphore.h file • Fields • count – integer number • count > 0 – semaphore is available • count 0 – semaphore is busy, |count| - number of processes waiting for resource. • Count = 0 – one use, nothing is waiting The count field is decremented when a process acquires the lock and is incremented when the same process releases it.
Kernel Semaphore Implementation, Continued • wait – the address of a wait queue. • waking – integer. • The releasing process increments waking field(s). • Each of awakened process PI then enters a critical region of the down() function • Is PI’s waking <> 0, if waking > 0 – 1. acquire the resource 2. other PK’s waking-- if waking < 0 – go back to sleep
Kernel Semaphore Implementation, Continued • Function • down() – called, if process wishes to acquire a semaphore. • count -- • count <> 0, if count 0 – process enter the critical section if count < 0 – process is suspended • up() – called, if process releases a semaphore • count ++ • count <> 0 – if count > 0 – up() terminates if count < 0 – wake up other processes • Deadlock – semaphore requests are performed in the address order.
SMP Architecture • Scalability of Linux - supports multiprocessing through Shared Memory Symmetric Multiprocessors (SMM) architecture. scalability is the capability of a system to adapt to an ever-increasing work load.
SMP Architecture, Continued CPU 1 CPU n system bus Graphical card Memory • CPUs share the same memory unit • application processing and kernel processing are spread amongst all CPUs.
Other Multiprocessor Architectures • Asymmetric Multiprocessing Master CPU executes the operating system code and application programs run on the remaining CPUs. • Massively Parallel Processing (MPP) Assemble hundreds or thousand of CPUs, each with own system memory
Hardware Support for Synchronization • Shared Memory Memory arbiter – (chip between bus and every RAM chip) grants access to a CPU if the chip is free and delays access if the chip is busy. • Cache Synchronization Hardware cache is utilized using the localityprinciple. In multiprocessor environment, each CPU has its own cache. Process of updating cache -cache snooping
Hardware Support for Synchronization, Continued • SMP Atomic Operation • Lock instruction prefixes for atomic operations were introduced. • If control unit detects them lock the memory bus, no other processes can access this memory location
Hardware Support for Synchronization, Continued • Distributed Interrupt Handling CPU 1 CPU n Local APIC Local APIC ICC bus I/O APIC APIC – Advanced Programmable Interrupt Controller ICC – Interrupt Controller Communication I/O APIC - router IRQ lines
Linux/SMP Kernel • Process Descriptor Modification • has_cpu: if has_cpu > 0 – process is running • Processor – logical number of its CPU • Spin Locks Blocked process keeps its own CPU by spinning while waiting for a resource.
Conclusion • Modern versions of Linux are available • Compaq Alpha • SPARC • PowerPC • Motorola MC680x0 • IBM System/390 • Multiprocessor operating system Supports up to 32 CPUs
Bibliography • D. P. Bovet, M. Cesati. Understanding the Linux Kernel. O’Reilly, 2000 • Linus Torvalds. Linux: a Portable Operating System. Master of Science Thesis, University of Helsinki, Finland, 1997 • D. Mosberg, S. Eranian IA-64 Linux Kernel Prentice Hall PTR, 2002
Thank You Any Questions?