Introduction on FreeBSD Operating System - kernelchina

reelingripehalfΛογισμικό & κατασκευή λογ/κού

14 Δεκ 2013 (πριν από 3 χρόνια και 5 μήνες)

49 εμφανίσεις

Introduction on FreeBSD
Operating System

Agenda


History and Goals


Kernel Services


Process Management


Memory Management


I/O System


Interprocess Communication


System Operation


Acknowledgments

History and Goals


History of the UNIX System


BSD and Other Systems


The Transition of BSD to Open Source


The FreeBSD Development Model


History of the UNIX System


Bell Lab invented UNIX in 1969


It was written by C
-
language


It was distributed by source form


It can run cheap hardware with advance features


CSRG at Berkeley invented BSD in 1979


Virtual memory, demand paging, page
replacement


Socket interface for TCP/IP


Job control, reliable signals, filesystem interface

BSD and Other Systems


Most features from UNIX


Terminal drivers from TENEX/TOPS
-
20


Job control from TOPS and MIT

s ITS


Memory management from Mach


The Influence of the User Community

Some packages from other groups

comp.bugs.4bsd


The Transition of BSD to Open
Source


The FreeBSD group was formed in 1993


Supporting the PC architecture only


Ease of installation


Code started base with 4.4BSD
-
Lite


Current version is FreeBSD5.4

Alpha, Space64, X86


JUNOS is based on FreeBSD4.10

The FreeBSD Development
Model


Publicly readable source
-
code control
system


www.freebsd.org


Developers groups


3000 to 4000 developers


They are not permitted to change code


Committees


300 to 400 committees


They are permitted to change code


Core team
can do everything


Kernel Services


FreeBSD Facilities and the Kernel


System Calls


Traps and Interrupts


Clock Interrupts


Memory Management Services


Timing Services


User, Group and Other Identifiers


Resource Services


System Operation Services


FreeBSD Facilities and the
Kernel


Kernel Provide 4 basic facilities: process,
filesystem, communication, system
startup


Kernel has been organized to the follow:


Basic kernel facilities: timer, system
-
clock handling,
descriptor management, process management


Memory management: paging and swapping


Generic system interface: the I/O, control, I/O descriptors


The filesystem: files, directories, pathname translation, i/O
buffer management


Interprocess
-
communication: sockets


FreeBSD Facilities and the
Kernel


Low
-
level system
-
startup actions


Trap and fault handling


Low
-
level manipulation of the run
-
time context of a process


Configuration and initialization of hardware devices


Run
-
time support for I/O devices


System Calls


System calls provide a layer between
the hardware and user
-
space processes


Provides an abstracted hardware interface for user
-
space


Ensure system security and stability


A single common layer between user
-
space and the rest of
the system allows the multi
-
processes


Syscall handling:


Verify the parameter to the system call


Call a kernel routine that implements the system call


Result handling: errno




Traps and Interrupts


Traps occur synchronously for process


Divide by zero, illegal instruction, page fault


I/O device Interrupts occur
asynchronously


Clocks, Console, Ethernet


Software Interrupts is doing lower
-
priority processing for I/O interrupts

Clock Interrupts


The system is driven by a clock that
interrupts at regular intervals which we call
tick.


Most system tick for FreeBSD is 10ms.


hardclock()


Increment the current time of day


Call softclock() if necessary


softclock()


Process real
-
time timer


Retransmission of dropped network packets


Watchdog timers on peripherals that require monitoring


System process
-
rescheduling event

Memory Management Services


Demand paging


Copy
-
on
-
write


mmap() interface for share memory


sbrk() for heap allocate

Timing Services


System Real Time


Interval Time for each process


Wakeup timer


Profiling timer: kernel and user mode


Virtual timer: user mode

User, Group and Other
Identifiers


User identifier (UID) and Group
identifier (GID)


set
-
user
-
identifier and set
-
group
-
identifier, effective uid and effective gid


Process Groups and Sessions


Each process in the system is associated with a
process group


The group of processes is referred to as a job


A session is a collection of process groups

Resource Services


Process Priorities: nice value


Resource Utilization


The amount of user and system time used by process


The memory utilization of process


The paging and disk I/O activity of process


The number of voluntary and involuntary context switches


Resource Limits


Filesystem Quotas

System Operation Services


Accounting


The name of the command that ran


The amount of user and system CPU time that was used


The average amount of memory used





Bootstrapping


Shutdown


Debugging


Process Management


Introduction to Process Management


Process State


Context Switching


Process Scheduling


Process Creation and Termination


Process Debugging

Introduction to Process
Management


The definition of Process


Design goal for FreeBSD Process
management


Multiprogramming


Fair Scheduling


Communication


Easy management and debugging



Process State


The proc structure


Process identification: PID and PPID


Scheduling: The process priority, user
-
mode scheduling
priority, recent CPU utilization, and amount of time spent
sleeping


Process state: SIDL,SRUN,SSLEEP,SSTOP,SZOMB


Signal state: Signals pending delivery


Tracing


Machine state


Timers


Context Switching


Cause of context switching


A process executes for the duration of its time slice


A process block for resource


The system interrupts the current process


Voluntary Context Switching


sleep() and wakeup()


Synchronization


Set
-
priority
-
level, spl0, splsoftclock, splnet,

,
splhigh

Process Scheduling


I/O
-
Bound Versus Processor
-
Bound


FreeBSD favors I/O bound


Multilevel feedback queue


Round robin for same queue


Calculations of Process Priority


p_estcpu: an estimate of the recent CPU utilization
of this process


p_nice: user
-
settable weighting factor that ranges
from
-
20 to 20


Process Creation and
Termination


Parent process and child process


fork(), vfork() and rfork()


Implementation of fork1()


Termination exit() OR signal


wait4() and SZOMB

Process Debugging


ptrace system call

1.
Read and write address space and registers

2.
Intercept signals posted to the process

3.
Single step and continue the execution of process

4.
Terminate the execution of the process


Inefficient of ptrace


/proc file system


Memory Management


Overview of the FreeBSD VM System


Kernel Memory Management


Per
-
Process Resources


Shared Memory


Process Related Memory Operation


The Pager interface


Placement and Replacement


Overview of the FreeBSD VM
System


FreeBSD VM is paging system


Three important policies:


The fetch policy


The placement policy


The replacement policy


Swapping


mmap system call for shared memory

Kernel Memory Management


Kernel is permanently mapped into up
1G of every process address space


Kernel Maps and Submaps


kmem_alloc(), kmem_alloc_pageable(),
kmem_free()


Kernel malloc


Kernel Zone Allocator

Per
-
Process Resources

Start addr


End addr


Obj offset

Vnode/object

Vnode/object

Vnode/object

vm_page

vm_page

vmspace

Start addr


End addr


Obj offset

Start addr


End addr


Obj offset

vm_page

vm_page

vm_page

vm_page

Vm_map

Vm_pmap

statistics

Vm_map_entry

Shared Memory


mmap(caddr_t address, size_t length,
int protection, int flags, int fd, off_t
offset)


munmap


mprotect


mlock and munlock


msync

Process Related Memory
Operation


Create of a New Process


copy
-
on
-
write


Load a execute file


page
-
on
-
demand


Process manipulation of its address
space


sbrk, mmap, mprotect


Termination of Process


The Pager interface


Vnode Pager


Handles objects that map files in a filesystem


Device Pager


Handles objects representing memory
-
mapped hardware devices


Physical
-
Memory Pager


Handles nonpagable memory for System V shm


Swap Pager


Handles object that map anonymous memory


Handles shadow object


Placement and Replacement


Page Coloring


L1 Cache Coloring


L2 Cache Coloring


Page Replacement


Global least
-
recently used page


Wired, active, inactive, cache, free


Swapping

I/O System


I/O System Overview


Devices


The Filesystems

I/O System Overview


Four main kinds of I/Os: filesystem,
character
-
device, block
-
device, socket
interface


Devices identified by a major and minor
number


The Virtual
-
Filesystem Interface


Descriptor Management Services


Filesystem
-
Independent Services


Name cache, Buffer management


Stackable Filesystems

Devices


Device Naming and Access


Static device node under /dev


DEVFS for dynamical device management


Asynchronous I/O


aio_read, aio_write


Mutliplexing I/O on Descriptors


select()

The Filesystems


Virtual
-
Filesystem Interface


vnode operation


Pathname translation


Exported Filesystem Services


Name cache and Buffer Management


Physical
-
Filesystem interface



Structure of inode


Implementation of Filesystem Services


Interprocess Communication


SYSV Interprocess communication


POSIX 1003.1b is not implemented in
kernel


Socket API


Network Communication


Network Protocols

SYSV Interprocess
communication


sysv ipc


ftok


sysv message queue


msgget, msgsnd, msgrcv, msgctl


sysv semaphore


semget, semop, semctl


sysv shared memory


shmget, shmat, shmdt, shmctl, shmids

System Operation


Bootstrapping


Kernel Initialization


Kernel Module Initialization


User
-
Level Initialization


System Shutdown and Autoreboot


Configuration, Build and Debugging


Bootstrapping


BIOS loads boot


Commands for boot

boot, autoboot, help, load



Boot loads FreeBSD kernel from BSD
filesystem


Boot passes the information to kernel


Boot need disable mmu and interrupts



Kernel Initialization


Setting up the run
-
time stack


Identifying the type of CPU


Calculating the amount of physical
memory


Initializing MMU hardware and Enable
the MMU


Crafting the hardware context for
process 0

 Invoking the initial C-base entry point
Kernel Module Initialization


Entry point: mi_startup()


SYSINIT(name, subsystem,order,
function,

)


Basic services


Kernel Thread Initialization


Device Module Initialization


Kernel Loadable Modules


Interprocess Communication Startup


Start Kernel Threads


User
-
Level Initialization


/sbin/init


Check consistency of its disk by fsck


Single
-
user mode: /bin/sh and
/dev/console


Multi
-
user mode: /etc/rc and /etc/ttys


System Shutdown and
Autoreboot


reboot system call


panic() causes system reboot


Three phases for shutdown


Shutdown of all services rely to the filesystem


Shutdown of the filesystem itself


Shutdown other services

Configuration, Build and
Debugging


make buildkernel KERNCONF=<cfgfile>


make installkernel KERNCONF=<cfgfile>


Crash dump file /sbin/savecore


Using /dev/kmem to talk to kernel

Acknowledgements


http://www.freebsd.org


The Design and Implementation of
FreeBSD