SO2 Lecture 01 - Course overview and Linux kernel introduction


Poziționare curs





Obiectivele cursului

Obiectivele laboratorului si a temelor

Cursuri necesare

Despre curs

Lista cursuri

  • Introducere
  • Apeluri de sistem
  • Procese
  • Întreruperi
  • Sincronizare
  • Adresarea memoriei
  • Gestiunea memoriei
  • Gestiunea fișierelor
  • Kernel debugging
  • Gestiunea rețelei
  • Virtualizare
  • Kernel profiling

Despre laborator

Despre teme

Lista teme

Bibliografie curs

Bibliografie laborator


User vs Kernel

Typical operating system architecture


Monolithic kernel




Monolithic kernels can be modular

"Hybrid" kernels

Many operating systems and kernel experts have dismissed the label as meaningless, and just marketing. Linus Torvalds said of this issue:

"As to the whole 'hybrid kernel' thing - it's just marketing. It's 'oh, those microkernels had good PR, how can we try to get good PR for our working kernel? Oh, I know, let's use a cool name and try to imply that it has all the PR advantages that that other system has'."

Address space

User and kernel sharing the virtual address space


Execution contexts


Preemptive kernel

Preemptive multitasking and preemptive kernels are different terms.

A kernel is preemptive if a process can be preempted while running in kernel mode.

However, note that non-preemptive kernels may support preemptive multitasking.

Pageable kernel memory

A kernel supports pageable kernel memory if parts of kernel memory (code, data, stack or dynamically allocated memory) can be swapped to disk.

Kernel stack

Each process has a kernel stack that is used to maintain the function call chain and local variables state while it is executing in kernel mode, as a result of a system call.

The kernel stack is small (4KB - 12 KB) so the kernel developer has to avoid allocating large structures on stack or recursive calls that are not properly bounded.


Asymmetric MultiProcessing (ASMP)


Symmetric MultiProcessing (SMP)


CPU Scalability

Linux development model

Maintainer hierarchy

Linux source code layout


Linux kernel architecture



Device drivers

Process management

Memory management

Block I/O management


Virtual Filesystem Switch


Networking stack


Linux Security Modules