History
aka
GNU/LINUX
Reason
Linux
is
Kernel
GNU-software
make
Linux
useful
exist
outside
the Kernel
range
Windowing system
eg. X11
Compiler
Shells
Dev tools
Editors
Utilities
others!
1960
MIT and other companies
developed
Multics(Multiplexed Information and Computing Services)
1970
AT&T
dropped out
developed
own
OS (Unics)
plus
C-language
1990
Andrew Tanenbaum
created
MINIX(minimal UNIX)
ran on
small PC
Early 1990s
Linus Torvalds
developed
Linux
Linux
adopted
GNU GPL
which allowed
GCC
shells
Kernel
Architecture
Linux Architecture - Two levels
User app
glibc
GNU C library
provides
system call interface (SCI)
connects to Kernel
provides
mechanism
to transition b/w user and kernel space
implements
basic
function
calls
from
User space
Kernel space
as
read
write
open
etc.
can be arch dependant
Kernel
Two parts
Architecture-independent code
Architecture-dependant code
aka
Board Support Package
Processor & Platform specific code
Components
Linux Kernel Components
Process Manager
focused on
execution of
the processes
provides
an API
through SCI
to
create new process
through
fork
exec
POSIX functions
stop process
through
kill
exit
POSIX functions
communicate & synchronise b/w processes
through
signal
POSIX mechanisms
implements
a scheduling Algorithm
to
share CPU
between
active threads
Memory Management
source
./linux/mm
manages
memory
in
pages
mostly
4KB
Virtual File System+FileSystem+Buffer Cache
VFS
is
interface abstraction
for file systems
a switching layer
b/w
SCI
and
the file system supported by kernel
Buffer Cache
optimizes
file-system
access to
devices
is
independent
of any
particular
filesystem
source
./linux/fs
Network Stack
Socket-layer
is
UI
to
a variety of
networking
protocols
the standard
api
to the
networking
subsystem
invoked
through
SCI
protocol-independent
source
./linux/net
Device Drivers
constitute
major
part of
Kernel
is a
sub-directory
divided by
various
devices
source
./linux/drivers
Arch-dependent Code
source
./linux/arch
aka BSP
Interesting features
supports
numerous
Networking
Protocols
TCP?IP
GbE
SCTP(Stream Control Transmission Protocol)
dynamic kernel
as
SW components/modules
can be
added/removed
on the fly
recently
used as
hypervisor
ie. an OS
for
other OSs
a modification
called
KVM (Kernel-based VM)
allows
this