What is the Linux Kernel?
Download
Report
Transcript What is the Linux Kernel?
Linux Kernel introduction
COSC 513
Xiaoping Yang
What is Linux
A clone of Unix operating system
Provides for the efficient management of system resources:
Linux is almost a freeware
First developed for 32-bit x86-based PCs (386 or higher).
Three major components:
Kernel
Shell Environment
File structure
What is the Linux Kernel?
The Heart of the Linux Operating System
Provides for the efficient management of system resources:
CPU
Interprocess Communication
Memory
Devices:
Disks
Terminals
Networks
Printers
What inside Linux Kernel
Linux Kernel is a monolithic kernel
Linux kernel Kernel contains:
System Call interface
Memory Manager
File System
Network support
Linux Processes and Tasks
Linux Process = Executing Program
Linux Task is a generalization of a Thread
Single threaded process is represented as a task
Multi-threaded process is multiple tasks
Only visible to the programmer and the kernel.
The Scheduler decides which task(s) gets to use the CPU(s)
Linux Scheduler
Multi-level queue scheduler
Three queues
SCHED_FIFO - standard priority.
Highest priority.
No time-slice
"supervisor" processes only
SCHED_RR - priority round robin.
Highest priority RR runs for 1 time slice.
"supervisor" processes only
SCHED_OTHER - time-sharing
All Linux user processes
Process Tree
There is a tree like relationship among processes:
Given the following:
$ netscape &
$ emacs &
$ xfig &
bash is the parent process
netscape, emacs and xfig are children of bash and
are siblings
netscape is the oldest sibling
xfig is the youngest sibling
Linux stores this structure as linked lists
Process Tree (cont.)
Task Tree
For every task the kernel maintains a task_struct
task_struct contains all relevant information
about a task.
General:
PID,Program name
Parent, youngest child, next sibling, previous sibling
Process Times (start_time, utime, stime,
cutime, cstime)
Scheduling algorithm, priority, nice value, errno
Process state
Owner:
UID
GID
Task tree (Cont.)
Files:
Information on all files opened by the process.
Stored in the fs_struct sub-structure
Memory:
Information about the memory used by a process.
IPC / Synchronization:
Pointers to acquired Semaphores
Bitmask of received Signals and associated Signal
handlers
Some other stuff...
Linux stores all task_structs in a doubly linked
list.
Linux Process State
Interrupts and System Calls
An interrupt is a request from the hardware for immediate
attention.
Two types of interrupts in Linux:
Fast Interrupts
Suspend current task, process interrupt, resume task
All other interrupts are generally disabled
Keyboard interrupt
Mouse interrupt
Interrupts and System Calls
(cont.)
Slow Interrupts
All registers are saved.
Only interrupts of same type are disabled.
Scheduler is called when ISR exits.
Timer interrupt
Disk Drive interrupt
System calls
Fast Interrupts in Linux
Suspend current task
Save CPU registers that might be altered
Switch CPU to kernel (system/supervisor/etc...) mode
Block all interrupts
Call Interrupt Service Routine (ISR)
Unblock interrupts
Switch CPU to user mode
Resume suspended task
Restore saved CPU Registers
END