Download CSC414 “Introduction to UNIX/ LINUX”

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Thread (computing) wikipedia , lookup

Mesa (computer graphics) wikipedia , lookup

Process management (computing) wikipedia , lookup

Stream processing wikipedia , lookup

Transcript
CSC414 “Introduction to
UNIX/ Linux”
Lecture 2
2015
Qassim University, College of Computer, 9th level
Schedule
1. Introduction to Unix/ Linux
2. Kernel Structure and Device Drivers.
3. System and Storage Structure.
4. Processes and Inter- Process Communication.
5. Shell Programming.
6. User Management and Disk Quota.
7. System Management.
8. Network Management.
9. Security.
10. Advanced System Administration.
2
2015
Qassim University, College of Computer, 9th level
Contents:
• Linux Kernel
• Overview
• Structure.
• modules
• Device Drivers
• Overview
• Types
• attributes.
• Interfacing Device Drivers with the Kernel
3
2015
Qassim University, College of Computer, 9th level
4
Linux Kernel
 The kernel hides the system’s hardware underneath an
abstract, high-level programming interface.
 Written mostly in C, with a sprinkling of assembly
language to help it interface with hardware- or chipspecific functions that are not accessible through normal
compiler directives.
2015
Qassim University, College of Computer, 9th level
5
Cont.
 the kernel creates all the following concepts from
lower-level hardware features:
• Processes (time-sharing, protected address spaces)
• Signals and semaphores
• Virtual memory (swapping, paging, mapping)
• The filesystem (files, directories, namespace)
• General input/output (specialty hardware, keyboard, mouse,
USB)
• Interprocess communication (pipes and network connections)
2015
Qassim University, College of Computer, 9th level
6
How the Kernel knows about the system's
hardware?
• . Informed by the system admin/ developer about the
hardware it should expect to find.
• . Prospects for many devices on its own, either at boot
time or dynamically (once the system is running)
2015
Qassim University, College of Computer, 9th level
7
Kernel Structure
• Almost all Unix platforms run monolithic kernels.
• The entire operating system runs in kernel space, a
section of memory reserved for privileged
operating system functions.
• Services such as device drivers, interprocess
communication, virtual memory, and scheduling
run in the same address space.
2015
Qassim University, College of Computer, 9th level
8
Modules:
• Modern monolithic kernels support on-demand loading of modules.
• Incorporate device drivers and other kernel functions as needed
without rebuilding the kernel and rebooting.
• Drivers, filesystems, and new system calls are all commonly
implemented as modules.
• The memory used by a module is allocated and freed as the code
is loaded or removed, using the insmod and rmmod commands.
• Useful for embedded systems with limited memory.
2015
Qassim University, College of Computer, 9th level
9
How to load a kernel module?
Two ways:
1.Use the insmod command to manually insert the it
into the kernel.
2.Load the module as it is needed; this is known as
demand loading.
•To view the status of modules in the Linux Kernel:
lsmod
•To view a module information use the commend
modinfo (module name)
•Demand loaded kernel modules are normally kept
in /lib/modules/kernel-version
2015
Qassim University, College of Computer, 9th level
10
Cont.
• When the kernel discovers the need for a module, it will request that
the kernel daemon (kerneld) attempts to load it.
• The kernel daemon is a normal user process with super user
privileges.
• When it is started up, usually at system boot time, it opens up an
Inter-Process Communication (IPC) channel to the kernel.
• This link is used by the kernel to send messages to
the kerneld asking for various tasks to be performed.
• Kerneld does not perform these tasks itself, it runs the neccessary
programs such as insmod to do the work.
2015
Qassim University, College of Computer, 9th level
11
Drivers and Device Files
• A device driver is a program that manages the system’s
interaction with a particular type of hardware.
• Translates between the hardware commands understood by
the device and the stylized programming interface used by
the kernel.
• It keeps the kernel reasonably device independent.
• It is part of the kernel, can be accessed both from within the
kernel and from user space
• Device drivers are system specific
2015
Qassim University, College of Computer, 9th level
12
Devices Types:
• Character devices: are read and written directly without
buffering, for example the system's serial
ports /dev/cua0 and /dev/cua1.
• Block devices: can only be written to and read from in
multiples of the block size, typically 512 or 1024 bytes. Block
devices can be accessed via their device special file but more
commonly they are accessed via the file system. Only a block
device can support a mounted file system.
• Network devices: are accessed via the BSD socket
2015
Qassim University, College of Computer, 9th level
13
Attributes
• kernel code: Device drivers are part of the kernel and, like
other code within the kernel, if they go wrong they can
seriously damage the system. A badly written driver may even
crash the system, possibly corrupting file systems and losing
data.
• Kernel interfaces: Device drivers must provide a standard
interface to the Linux kernel or to the subsystem that they are
part of. For example, the terminal driver provides a file I/O
interface to the Linux kernel and a SCSI device driver provides
a SCSI device interface to the SCSI subsystem which, in turn,
provides both file I/O and buffer cache interfaces to the kernel.
• Kernel mechanisms and services: Device drivers make use
of standard kernel services such as memory allocation,
interrupt delivery and wait queues to operate.
2015
Qassim University, College of Computer, 9th level
14
Cont.
• Loadable: Most of the Linux device drivers can be loaded on
demand as kernel modules when they are needed and
unloaded when they are no longer being used. This makes
the kernel very adaptable and efficient with the system's
resources.
• Configurable: Linux device drivers can be built into the
kernel. Which devices are built is configurable when the
kernel is compiled.
• Dynamic: As the system boots and each device driver is
initialized it looks for the hardware devices that it is
controlling. It does not matter if the device being controlled
by a particular device driver does not exist. In this case the
device driver is simply redundant and causes no harm apart
from occupying a little of the system's memory.
2015
Qassim University, College of Computer, 9th level
15
Where to find the device files?
• Most devices have a corresponding file in /dev.
• Files in /dev each have a major and minor device number associated
with them. The kernel uses these numbers to map device-file
references to the corresponding driver.
• The major device number identifies the driver with which the file is
associated (in other words, the type of device). The minor device
number usually identifies which particular instance of a given device
type is to be addressed. The minor device number is sometimes
called the unit number.
2015
Qassim University, College of Computer, 9th level
16
Where to find the device files?
• You can see the major and minor number of a device file with ls -l:
• This example shows the first SCSI disk on a Linux system. It has a
major number of 8 and a minor number of 0.
2015
Qassim University, College of Computer, 9th level
17
Interfacing Device Drivers with the
Kernel
• The Linux kernel must be able to interact with the drivers in
standard ways.
• Each class of device driver, character, block and network,
provides common interfaces that the kernel uses when
requesting services from them.
• The kernel can treat often very different devices and their
device drivers absolutely the same.
• For example, SCSI and IDE disks behave very differently
but the Linux kernel uses the same interface to both of them.
2015
Qassim University, College of Computer, 9th level
18
Interfacing Device Drivers with the
Kernel
• Every time a Linux kernel boots it may encounter different
•
•
•
•
physical devices and thus need different device drivers.
Linux allows to include device drivers at kernel build time via
its configuration scripts.
When these drivers are initialized at boot time they may not
discover any hardware to control. Other drivers can be loaded
as kernel modules when they are needed.
Device drivers register themselves with the kernel as they are
initialized.
Linux maintains tables of registered device drivers as part of
its interfaces with them. These tables include pointers to
routines and information that support the interface with that
class of devices.
2015
Qassim University, College of Computer, 9th level
19
Reading
• Chapter 13 form “Unix® and Linux® System Administration
Handbook, Fourth Edition, Video Enhanced Edition”.
• The Linux Kernel on the tld Project (http://www.tldp.org/LDP/tlk/)