SlideShare a Scribd company logo
1 of 38
Download to read offline
Note: The Copyrights of the referenced materials and photos go to their original authors. As a result, this slide is for personal reference only.
For the contents created in this document, the Copyright belongs to William W.-Y. Liang. © 2005-2016 All Rights Reserved.
NTU CSIE Open Source System Software
2016.03.22
An Introduction to the Linux Kernel
with Device Drivers
William W.-Y. Liang (梁文耀), Ph. D.
http://www.ntut.edu.tw/~wyliang
for 台大資工系開源系統軟體課程
hosted by Prof. Shih-Hao Hung
© 2016 William W.-Y. Liang, All Rights Reserved.
General-purpose Operating Systems
Characteristics
Development of applications can be logically separated from hardware
Complete software stacks and middleware can be created to support easy
development of complex and versatile applications.
Example:
Linux (with many Distributions), Android, Chrome OS, Firefox OS,
Brillo, uClinux, MacOS, iOS, Windows, etc.
Application development
System independent application development: General applications,
GUI/Window programming, Web programming
System dependent software development: System programming, Device
drivers, Protocol software
2 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
The Linux Operating System
Open source and free
Maintained by numerous volunteer experts and hackers
Robust, efficient, and reliable
Modular, configurable, and scalable
Tons of applications available
Suitable for application types from low-end embedded systems, mid-range consumer
products, personal computer, and up to the high performance supercomputers
3 NTU OSSSP 2016: Linux Kernel
https://en.wikipedia.org/wiki/Linux_kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Some References
Linux Kernel Wiki
https://en.wikipedia.org/wiki/Linux_kernel
Linux Kernel Source
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
Reference books for Beginners
Linux Device Driver, 3rd Edition, by Jonathan Corbet, Alessandro
Rubini and Greg Kroah-Hartman, O'Reilly (Also available online
https://lwn.net/Kernel/LDD3/)
Linux Kernel in a NutShell, by Greg Kroah-Hartman, O'Reilly (Also
available online http://www.kroah.com/lkn/)
Understanding the Linux Kernel, 3rd Edition, by Daniel P. Bovet, Marco
Cesati, O'Reilly
4 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Chitchat about Linux and the Kernel
5 NTU OSSSP 2016: Linux Kernel
* Taiwanese slang :^)
© 2016 William W.-Y. Liang, All Rights Reserved.
A Systems View -- from Hardware to Software
Hardware
Software development environment
Tool chain and Library
Boot loader
OS Kernel / RTOS
Middleware*
Applications
6 NTU OSSSP 2016: Linux Kernel
* Example: In Android, the
middleware is called the
Application Framework.
Source: Qing Li and Caroline Yao, “real-time concepts for embedded systems”
Embedded System Development Environment Example
© 2016 William W.-Y. Liang, All Rights Reserved.
The Episode: System Booting
Source: Qing Li and Caroline Yao, “real-time concepts for embedded systems”
7 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Boot Sequence Example
8 NTU OSSSP 2016: Linux Kernel
http://www.at91.com/linux4sam/bin/view/Linux4SAM/GettingStarted
© 2016 William W.-Y. Liang, All Rights Reserved.
Booting the Kernel – Before the C code
9 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Booting the Kernel – Entering the C World
10 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Prepare for Tracing the Kernel
Tools, always the most important thing
git, repo, vim, ctags, grep, find, etc.
Basics for understanding the Kernel
Data structures
11 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Introduction to the Linux Kernel
12 NTU OSSSP 2016: Linux Kernel
Let’s try to understand the Linux
kernel by introducing the basics
for the device drivers and the
kernel features, and discussing
on some related issues.
© 2016 William W.-Y. Liang, All Rights Reserved.
Software View from User Program to Hardware
For a general purpose OS
such as Linux
User level (user space)
Coding
Compilation
Linking
Execution
Kernel (kernel space)
Program loading
System calls (API)
Device drivers
Hardware manipulation
Bare metal hardware
13 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Device Drivers in Linux
Device drivers are usually treated as black boxes for
the application developers.
They resemble as a software layer
lying between the applications and
the actual devices.
14 NTU OSSSP 2016: Linux Kernel
http: //www.ni.com/tutorial/3789/en/
© 2016 William W.-Y. Liang, All Rights Reserved.
Device Drivers in Linux Kernel
15 NTU OSSSP 2016: Linux Kernel
ALESSANDRO RUBINI and JONATHAN CORBET, Linux Device Drivers, Second Edition
© 2016 William W.-Y. Liang, All Rights Reserved.
Major Classes of Devices for Linux
Character devices
A character (char) device is one that can be accessed as a stream
of bytes (just like a normal file).
Block devices
A block device is accessed in a unit of fixed-size block.
The device can be accessed randomly.
Network interfaces
Others: File Systems, Protocol Stack, USB, PCI, etc.
Refers to <kernel-source>/Documentation/devices.txt”
16 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Device Files
File Operations vs. Device Accesses
Device Initialization vs. File Open
Device Accesses vs. File Read/Write
Device Control vs. File Control
Device Termination vs. File Close
UNIX/Linux systems implement device files to enable
users to employ familiar commands and functions such
as open, read, write, and close when working with
some peripherals.
17 NTU OSSSP 2016: Linux Kernel
int open( char *pathname, int flags, … );
int read( int fd, void *buf, size_t count );
int write( int fd, void *buf, size_t count );
int ioctl(struct inode *, struct file *, unsigned int, unsigned long );
int close( int fd );
© 2016 William W.-Y. Liang, All Rights Reserved.
How Device File and Driver Modules Work?
18 NTU OSSSP 2016: Linux Kernel
☼ Discussion: taking “Hello, World” as an example
© 2016 William W.-Y. Liang, All Rights Reserved.
Example: Applications using a Device
19 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Device Number
Example
crw-rw-rw- 1 root root 1, 3 Mar 2 2015 null
crw-rw-rw- 1 root root 1, 5 Mar 2 2015 zero
crw------- 1 root root 4, 1 Mar 2 2015 tty1
crw-rw-rw- 1 root tty 4, 64 Mar 2 2015 ttys0
crw-rw---- 1 root uucp 4, 65 Mar 2 2015 ttyS1
crw------- 1 root root 10, 1 Mar 2 2015 psaux
crw-rw-rw- 1 root root 123, 0 Mar 2 2015 androint
A System Administrator may create device files with
the “mknod” command. For example,
mknod /dev/androint c 123 0
‘/dev/androint’ is the file’s pathname, ‘c’ indicates that it’s a
character-mode device, 123 is its (unique) ‘major number’,
and 0 is its ‘minor number’.
20 NTU OSSSP 2016: Linux Kernel
☼ Discussion: relationship between device files and drivers
© 2016 William W.-Y. Liang, All Rights Reserved.
Loadable Kernel Modules
A great mechanism for OS ‘extensibility’
No need to recompile and then reboot
A kernel module differs from a normal C program
A kernel module cannot call any of the familiar
functions from the standard C runtime libraries
A module will be run as part of the kernel
Any ‘bug’ can cause a system malfunction or a
complete crash!
21 NTU OSSSP 2016: Linux Kernel
☼ Discussion: GPL issues with the Linux kernel modules
© 2016 William W.-Y. Liang, All Rights Reserved.
Example
22 NTU OSSSP 2016: Linux Kernel
☼ Discussion: how multiple program entries work?
© 2016 William W.-Y. Liang, All Rights Reserved.
How to get a module to work in Kernel
23 NTU OSSSP 2016: Linux Kernel
ALESSANDRO RUBINI and JONATHAN CORBET, Linux Device Drivers, Second Edition
Driver Functions
© 2016 William W.-Y. Liang, All Rights Reserved.
Example: Device Registration
24 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Driver Methods -- File Operations
The kernel uses the file_operations structure to access the
driver’s methods.
int (*open) (struct inode *, struct file *);
ssize_t (*read) (struct file *, char *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned
long);
int (*release) (struct inode *, struct file *);
…
25 NTU OSSSP 2016: Linux Kernel
☼ Discussion: drivers vs. the object-orient concept
© 2016 William W.-Y. Liang, All Rights Reserved.
Kernel and User Space
26 NTU OSSSP 2016: Linux Kernel
☼ Discussion: address space for kernel and processes
© 2016 William W.-Y. Liang, All Rights Reserved.
Virtual to Physical Space
27 NTU OSSSP 2016: Linux Kernel
https://en.wikipedia.org/wiki/Operating_system
☼ Discussion: how the memory space is utilized?
ALESSANDRO RUBINI and JONATHAN CORBET, Linux Device Drivers, Second Edition
© 2016 William W.-Y. Liang, All Rights Reserved.
Data Transfer between User and Kernel Space
28 NTU OSSSP 2016: Linux Kernel
Read: kernel->user
Write: user->kernel
☼ Discussion: issues for cross space data accesses
ALESSANDRO RUBINI and JONATHAN CORBET, Linux Device Drivers, Second Edition ,
© 2016 William W.-Y. Liang, All Rights Reserved.
Example: User & Kernel Space Data Transfer
29 NTU OSSSP 2016: Linux Kernel
© 2016 William W.-Y. Liang, All Rights Reserved.
Kernel Memory Allocation
Small size allocation
kmalloc and kfree
dptr->data = kmalloc(qset * sizeof(char *), GFP_KERNEL);
memset(dptr->data, 0, qset * sizeof(char *));
Limitations
Large size allocation
vmalloc and vfree
Restrictions
Page allocation
Slab and memory pool
30 NTU OSSSP 2016: Linux Kernel
☼ Discussion: performance issues in memory management
© 2016 William W.-Y. Liang, All Rights Reserved.
Multi-tasking: the Central Part of the OS
Process states in OSes
Running: own CPU
Ready: To be scheduled,
in ready queue (run-queue)
Waiting:
Pending on I/O or Event
Delay itself for some duration
Request a resource but is not yet available
Linux Task States
Tasks: user-process, user-thread, kernel thread
States: TASK_RUNNING, TASK_INTERRUPTIBLE, etc.
Scheduling Policy
SCHED_OTHER, SCHED_FIFO, SCHED_RR, etc
31 NTU OSSSP 2016: Linux Kernel
☼ Discussion: scheduling and preemption issues
© 2016 William W.-Y. Liang, All Rights Reserved.
Concurrency Problems
Problems: Data inconsistency, Deadlock
Race Condition: Occurs when multiple tasks want to
access the shared resources, such as shared data or
hardware devices.
32 NTU OSSSP 2016: Linux Kernel
☼ Discussion: what’s the exact cause?
© 2016 William W.-Y. Liang, All Rights Reserved.
Thread Safe
Potential Causes of Thread-Unsafe Problems
Global variables
Static variables
Indirect accesses
Solutions
Reentrancy
Atomic operations
Thread-local storage
Mutual exclusion
33 NTU OSSSP 2016: Linux Kernel
Concurrency in Kernel and Device Drivers
 Driver code vs. Tasks
 Single Core vs. Multicore
 IRQ impact
 Soft-IRQ
☼ Discussion: performance issues for synchronizations
© 2016 William W.-Y. Liang, All Rights Reserved.
Synchronization Operations
Semaphore
down(), up(), etc.
Mutex
mutex_lock(), mutex_unlock(), etc.
Spin locks
spin_lock(), spin_unlock(), etc.
Atomic operations
atomic_set(), atomic_add(), etc
Bit operations
set_bit(), clear_bit(), etc.
34 NTU OSSSP 2016: Linux Kernel
☼ Discussion: semaphore vs. spinlock, usage & performance
© 2016 William W.-Y. Liang, All Rights Reserved.
Interrupt Handling
35 NTU OSSSP 2016: Linux Kernel
☼ Discussion: cost and performance issues
of IRQ handling and solutions
© 2016 William W.-Y. Liang, All Rights Reserved.
Task Blocking and Waiting Queue
Processes are usually blocked due to I/O waiting.
No data available for read, or no space
available for write or device busy
Waiting queues
Blocked task is put into a waiting queue
before it is woke up.
36 NTU OSSSP 2016: Linux Kernel Linux Device Drivers, Second Edition
☼ Discussion: how it works?
Linux Device Drivers, Second Edition
© 2016 William W.-Y. Liang, All Rights Reserved.
The Endless Journey on Discovering Linux
To be Continued…
This brief introductory lecture is just a beginning.
Still many interesting things out there
Take it as interesting adventure, by learning from the
wonderful open source world!
37 NTU OSSSP 2016: Linux Kernel
https://en.wikipedia.org/wiki/Linux_kernel#/media/File:Linux_kernel_map.png
Let’s keep the discussion next week
on the next topic – Android Framework.
Note: The Copyrights of the referenced materials and photos go to their original authors. As a result, this slide is for personal reference only.
For the contents created in this document, the Copyright belongs to William W.-Y. Liang. © 2005-2016 All Rights Reserved.
Q & A
william.wyliang@gmail.com
http://www.ntut.edu.tw/~wyliang
http://www.facebook.com/william.wyliang

More Related Content

What's hot

linux device driver
linux device driverlinux device driver
linux device driverRahul Batra
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceBrendan Gregg
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debuggingHao-Ran Liu
 
Kernel Module Programming
Kernel Module ProgrammingKernel Module Programming
Kernel Module ProgrammingSaurabh Bangad
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesChris Simmonds
 
From Android NDK To AOSP
From Android NDK To AOSPFrom Android NDK To AOSP
From Android NDK To AOSPMin-Yih Hsu
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessNanik Tolaram
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel SourceMotaz Saad
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driverVandana Salve
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Opersys inc.
 

What's hot (20)

linux device driver
linux device driverlinux device driver
linux device driver
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
 
Linux Kernel Overview
Linux Kernel OverviewLinux Kernel Overview
Linux Kernel Overview
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
 
Linux Programming
Linux ProgrammingLinux Programming
Linux Programming
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems Performance
 
Linux kernel modules
Linux kernel modulesLinux kernel modules
Linux kernel modules
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
ARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- OverviewARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- Overview
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
Linux kernel
Linux kernelLinux kernel
Linux kernel
 
Kernel Module Programming
Kernel Module ProgrammingKernel Module Programming
Kernel Module Programming
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
 
From Android NDK To AOSP
From Android NDK To AOSPFrom Android NDK To AOSP
From Android NDK To AOSP
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driver
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
 

Similar to An introduction to the linux kernel and device drivers (NTU CSIE 2016.03)

Android device driver structure introduction
Android device driver structure introductionAndroid device driver structure introduction
Android device driver structure introductionWilliam Liang
 
Comparison of Windows and Linux Operating Systems in Advanced Features
Comparison of Windows and Linux Operating Systems in Advanced FeaturesComparison of Windows and Linux Operating Systems in Advanced Features
Comparison of Windows and Linux Operating Systems in Advanced FeaturesIJERA Editor
 
Group project linux helix
Group project linux helixGroup project linux helix
Group project linux helixJeff Carroll
 
linux system and network administrations
linux system and network administrationslinux system and network administrations
linux system and network administrationshaile468688
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 
UNIT I LINUX.docx
UNIT I LINUX.docxUNIT I LINUX.docx
UNIT I LINUX.docxBhuvanaR13
 
An Introduction to the Android Framework -- a core architecture view from app...
An Introduction to the Android Framework -- a core architecture view from app...An Introduction to the Android Framework -- a core architecture view from app...
An Introduction to the Android Framework -- a core architecture view from app...William Liang
 
I Am Linux-Introductory Module on Linux
I Am Linux-Introductory Module on LinuxI Am Linux-Introductory Module on Linux
I Am Linux-Introductory Module on LinuxSagar Kumar
 
Introduction to System Programming
Introduction to System ProgrammingIntroduction to System Programming
Introduction to System ProgrammingSayed Chhattan Shah
 
OS Lab: Introduction to Linux
OS Lab: Introduction to LinuxOS Lab: Introduction to Linux
OS Lab: Introduction to LinuxMotaz Saad
 
Linux nic training_intro_14_dec_09
Linux nic training_intro_14_dec_09Linux nic training_intro_14_dec_09
Linux nic training_intro_14_dec_09Aravindan Arun
 

Similar to An introduction to the linux kernel and device drivers (NTU CSIE 2016.03) (20)

Android device driver structure introduction
Android device driver structure introductionAndroid device driver structure introduction
Android device driver structure introduction
 
Comparison of Windows and Linux Operating Systems in Advanced Features
Comparison of Windows and Linux Operating Systems in Advanced FeaturesComparison of Windows and Linux Operating Systems in Advanced Features
Comparison of Windows and Linux Operating Systems in Advanced Features
 
Linux
Linux Linux
Linux
 
Linux Introduction
Linux IntroductionLinux Introduction
Linux Introduction
 
Group project linux helix
Group project linux helixGroup project linux helix
Group project linux helix
 
linux system and network administrations
linux system and network administrationslinux system and network administrations
linux system and network administrations
 
Before begining linux
Before begining linuxBefore begining linux
Before begining linux
 
Linux introduction (eng)
Linux introduction (eng)Linux introduction (eng)
Linux introduction (eng)
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
Linux technology
Linux technologyLinux technology
Linux technology
 
Group 3
Group 3Group 3
Group 3
 
Presentation on linux
Presentation on linuxPresentation on linux
Presentation on linux
 
UNIT I LINUX.docx
UNIT I LINUX.docxUNIT I LINUX.docx
UNIT I LINUX.docx
 
An Introduction to the Android Framework -- a core architecture view from app...
An Introduction to the Android Framework -- a core architecture view from app...An Introduction to the Android Framework -- a core architecture view from app...
An Introduction to the Android Framework -- a core architecture view from app...
 
I Am Linux-Introductory Module on Linux
I Am Linux-Introductory Module on LinuxI Am Linux-Introductory Module on Linux
I Am Linux-Introductory Module on Linux
 
3CS LSP UNIT 1-1.pdf
3CS LSP UNIT 1-1.pdf3CS LSP UNIT 1-1.pdf
3CS LSP UNIT 1-1.pdf
 
Introduction to System Programming
Introduction to System ProgrammingIntroduction to System Programming
Introduction to System Programming
 
OS Lab: Introduction to Linux
OS Lab: Introduction to LinuxOS Lab: Introduction to Linux
OS Lab: Introduction to Linux
 
Deft v7
Deft v7Deft v7
Deft v7
 
Linux nic training_intro_14_dec_09
Linux nic training_intro_14_dec_09Linux nic training_intro_14_dec_09
Linux nic training_intro_14_dec_09
 

More from William Liang

Edge Computing for the Industry
Edge Computing for the IndustryEdge Computing for the Industry
Edge Computing for the IndustryWilliam Liang
 
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...William Liang
 
The development trends of smart applications and open source system software ...
The development trends of smart applications and open source system software ...The development trends of smart applications and open source system software ...
The development trends of smart applications and open source system software ...William Liang
 
The key issues for teaching or learning Android and Linux Kernel
The key issues for teaching or learning Android and Linux KernelThe key issues for teaching or learning Android and Linux Kernel
The key issues for teaching or learning Android and Linux KernelWilliam Liang
 
Data-centric IoT (NTU CSIE 2016.12)
Data-centric IoT (NTU CSIE 2016.12)Data-centric IoT (NTU CSIE 2016.12)
Data-centric IoT (NTU CSIE 2016.12)William Liang
 
行動終端、物聯網與雲端平台在高速移動網路下的整合趨勢 (for MOPCON 2016)
行動終端、物聯網與雲端平台在高速移動網路下的整合趨勢 (for MOPCON 2016)行動終端、物聯網與雲端平台在高速移動網路下的整合趨勢 (for MOPCON 2016)
行動終端、物聯網與雲端平台在高速移動網路下的整合趨勢 (for MOPCON 2016)William Liang
 
高速移動網路新時代 - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
高速移動網路新時代  - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...高速移動網路新時代  - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
高速移動網路新時代 - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...William Liang
 
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...William Liang
 
智慧應用與物聯網發展趨勢 (A Development Trend of Smart Applications and IoT)
智慧應用與物聯網發展趨勢 (A Development Trend of Smart Applications and IoT)智慧應用與物聯網發展趨勢 (A Development Trend of Smart Applications and IoT)
智慧應用與物聯網發展趨勢 (A Development Trend of Smart Applications and IoT)William Liang
 
嵌入式智慧應用開源軟硬整合新趨勢 (Open Source Software and Hardware Integration Trend for Emb...
嵌入式智慧應用開源軟硬整合新趨勢 (Open Source Software and Hardware Integration Trend for Emb...嵌入式智慧應用開源軟硬整合新趨勢 (Open Source Software and Hardware Integration Trend for Emb...
嵌入式智慧應用開源軟硬整合新趨勢 (Open Source Software and Hardware Integration Trend for Emb...William Liang
 

More from William Liang (11)

Internet of energy
Internet of energyInternet of energy
Internet of energy
 
Edge Computing for the Industry
Edge Computing for the IndustryEdge Computing for the Industry
Edge Computing for the Industry
 
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
 
The development trends of smart applications and open source system software ...
The development trends of smart applications and open source system software ...The development trends of smart applications and open source system software ...
The development trends of smart applications and open source system software ...
 
The key issues for teaching or learning Android and Linux Kernel
The key issues for teaching or learning Android and Linux KernelThe key issues for teaching or learning Android and Linux Kernel
The key issues for teaching or learning Android and Linux Kernel
 
Data-centric IoT (NTU CSIE 2016.12)
Data-centric IoT (NTU CSIE 2016.12)Data-centric IoT (NTU CSIE 2016.12)
Data-centric IoT (NTU CSIE 2016.12)
 
行動終端、物聯網與雲端平台在高速移動網路下的整合趨勢 (for MOPCON 2016)
行動終端、物聯網與雲端平台在高速移動網路下的整合趨勢 (for MOPCON 2016)行動終端、物聯網與雲端平台在高速移動網路下的整合趨勢 (for MOPCON 2016)
行動終端、物聯網與雲端平台在高速移動網路下的整合趨勢 (for MOPCON 2016)
 
高速移動網路新時代 - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
高速移動網路新時代  - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...高速移動網路新時代  - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
高速移動網路新時代 - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
 
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
 
智慧應用與物聯網發展趨勢 (A Development Trend of Smart Applications and IoT)
智慧應用與物聯網發展趨勢 (A Development Trend of Smart Applications and IoT)智慧應用與物聯網發展趨勢 (A Development Trend of Smart Applications and IoT)
智慧應用與物聯網發展趨勢 (A Development Trend of Smart Applications and IoT)
 
嵌入式智慧應用開源軟硬整合新趨勢 (Open Source Software and Hardware Integration Trend for Emb...
嵌入式智慧應用開源軟硬整合新趨勢 (Open Source Software and Hardware Integration Trend for Emb...嵌入式智慧應用開源軟硬整合新趨勢 (Open Source Software and Hardware Integration Trend for Emb...
嵌入式智慧應用開源軟硬整合新趨勢 (Open Source Software and Hardware Integration Trend for Emb...
 

Recently uploaded

Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 

Recently uploaded (20)

Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 

An introduction to the linux kernel and device drivers (NTU CSIE 2016.03)

  • 1. Note: The Copyrights of the referenced materials and photos go to their original authors. As a result, this slide is for personal reference only. For the contents created in this document, the Copyright belongs to William W.-Y. Liang. © 2005-2016 All Rights Reserved. NTU CSIE Open Source System Software 2016.03.22 An Introduction to the Linux Kernel with Device Drivers William W.-Y. Liang (梁文耀), Ph. D. http://www.ntut.edu.tw/~wyliang for 台大資工系開源系統軟體課程 hosted by Prof. Shih-Hao Hung
  • 2. © 2016 William W.-Y. Liang, All Rights Reserved. General-purpose Operating Systems Characteristics Development of applications can be logically separated from hardware Complete software stacks and middleware can be created to support easy development of complex and versatile applications. Example: Linux (with many Distributions), Android, Chrome OS, Firefox OS, Brillo, uClinux, MacOS, iOS, Windows, etc. Application development System independent application development: General applications, GUI/Window programming, Web programming System dependent software development: System programming, Device drivers, Protocol software 2 NTU OSSSP 2016: Linux Kernel
  • 3. © 2016 William W.-Y. Liang, All Rights Reserved. The Linux Operating System Open source and free Maintained by numerous volunteer experts and hackers Robust, efficient, and reliable Modular, configurable, and scalable Tons of applications available Suitable for application types from low-end embedded systems, mid-range consumer products, personal computer, and up to the high performance supercomputers 3 NTU OSSSP 2016: Linux Kernel https://en.wikipedia.org/wiki/Linux_kernel
  • 4. © 2016 William W.-Y. Liang, All Rights Reserved. Some References Linux Kernel Wiki https://en.wikipedia.org/wiki/Linux_kernel Linux Kernel Source git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git Reference books for Beginners Linux Device Driver, 3rd Edition, by Jonathan Corbet, Alessandro Rubini and Greg Kroah-Hartman, O'Reilly (Also available online https://lwn.net/Kernel/LDD3/) Linux Kernel in a NutShell, by Greg Kroah-Hartman, O'Reilly (Also available online http://www.kroah.com/lkn/) Understanding the Linux Kernel, 3rd Edition, by Daniel P. Bovet, Marco Cesati, O'Reilly 4 NTU OSSSP 2016: Linux Kernel
  • 5. © 2016 William W.-Y. Liang, All Rights Reserved. Chitchat about Linux and the Kernel 5 NTU OSSSP 2016: Linux Kernel * Taiwanese slang :^)
  • 6. © 2016 William W.-Y. Liang, All Rights Reserved. A Systems View -- from Hardware to Software Hardware Software development environment Tool chain and Library Boot loader OS Kernel / RTOS Middleware* Applications 6 NTU OSSSP 2016: Linux Kernel * Example: In Android, the middleware is called the Application Framework. Source: Qing Li and Caroline Yao, “real-time concepts for embedded systems” Embedded System Development Environment Example
  • 7. © 2016 William W.-Y. Liang, All Rights Reserved. The Episode: System Booting Source: Qing Li and Caroline Yao, “real-time concepts for embedded systems” 7 NTU OSSSP 2016: Linux Kernel
  • 8. © 2016 William W.-Y. Liang, All Rights Reserved. Boot Sequence Example 8 NTU OSSSP 2016: Linux Kernel http://www.at91.com/linux4sam/bin/view/Linux4SAM/GettingStarted
  • 9. © 2016 William W.-Y. Liang, All Rights Reserved. Booting the Kernel – Before the C code 9 NTU OSSSP 2016: Linux Kernel
  • 10. © 2016 William W.-Y. Liang, All Rights Reserved. Booting the Kernel – Entering the C World 10 NTU OSSSP 2016: Linux Kernel
  • 11. © 2016 William W.-Y. Liang, All Rights Reserved. Prepare for Tracing the Kernel Tools, always the most important thing git, repo, vim, ctags, grep, find, etc. Basics for understanding the Kernel Data structures 11 NTU OSSSP 2016: Linux Kernel
  • 12. © 2016 William W.-Y. Liang, All Rights Reserved. Introduction to the Linux Kernel 12 NTU OSSSP 2016: Linux Kernel Let’s try to understand the Linux kernel by introducing the basics for the device drivers and the kernel features, and discussing on some related issues.
  • 13. © 2016 William W.-Y. Liang, All Rights Reserved. Software View from User Program to Hardware For a general purpose OS such as Linux User level (user space) Coding Compilation Linking Execution Kernel (kernel space) Program loading System calls (API) Device drivers Hardware manipulation Bare metal hardware 13 NTU OSSSP 2016: Linux Kernel
  • 14. © 2016 William W.-Y. Liang, All Rights Reserved. Device Drivers in Linux Device drivers are usually treated as black boxes for the application developers. They resemble as a software layer lying between the applications and the actual devices. 14 NTU OSSSP 2016: Linux Kernel http: //www.ni.com/tutorial/3789/en/
  • 15. © 2016 William W.-Y. Liang, All Rights Reserved. Device Drivers in Linux Kernel 15 NTU OSSSP 2016: Linux Kernel ALESSANDRO RUBINI and JONATHAN CORBET, Linux Device Drivers, Second Edition
  • 16. © 2016 William W.-Y. Liang, All Rights Reserved. Major Classes of Devices for Linux Character devices A character (char) device is one that can be accessed as a stream of bytes (just like a normal file). Block devices A block device is accessed in a unit of fixed-size block. The device can be accessed randomly. Network interfaces Others: File Systems, Protocol Stack, USB, PCI, etc. Refers to <kernel-source>/Documentation/devices.txt” 16 NTU OSSSP 2016: Linux Kernel
  • 17. © 2016 William W.-Y. Liang, All Rights Reserved. Device Files File Operations vs. Device Accesses Device Initialization vs. File Open Device Accesses vs. File Read/Write Device Control vs. File Control Device Termination vs. File Close UNIX/Linux systems implement device files to enable users to employ familiar commands and functions such as open, read, write, and close when working with some peripherals. 17 NTU OSSSP 2016: Linux Kernel int open( char *pathname, int flags, … ); int read( int fd, void *buf, size_t count ); int write( int fd, void *buf, size_t count ); int ioctl(struct inode *, struct file *, unsigned int, unsigned long ); int close( int fd );
  • 18. © 2016 William W.-Y. Liang, All Rights Reserved. How Device File and Driver Modules Work? 18 NTU OSSSP 2016: Linux Kernel ☼ Discussion: taking “Hello, World” as an example
  • 19. © 2016 William W.-Y. Liang, All Rights Reserved. Example: Applications using a Device 19 NTU OSSSP 2016: Linux Kernel
  • 20. © 2016 William W.-Y. Liang, All Rights Reserved. Device Number Example crw-rw-rw- 1 root root 1, 3 Mar 2 2015 null crw-rw-rw- 1 root root 1, 5 Mar 2 2015 zero crw------- 1 root root 4, 1 Mar 2 2015 tty1 crw-rw-rw- 1 root tty 4, 64 Mar 2 2015 ttys0 crw-rw---- 1 root uucp 4, 65 Mar 2 2015 ttyS1 crw------- 1 root root 10, 1 Mar 2 2015 psaux crw-rw-rw- 1 root root 123, 0 Mar 2 2015 androint A System Administrator may create device files with the “mknod” command. For example, mknod /dev/androint c 123 0 ‘/dev/androint’ is the file’s pathname, ‘c’ indicates that it’s a character-mode device, 123 is its (unique) ‘major number’, and 0 is its ‘minor number’. 20 NTU OSSSP 2016: Linux Kernel ☼ Discussion: relationship between device files and drivers
  • 21. © 2016 William W.-Y. Liang, All Rights Reserved. Loadable Kernel Modules A great mechanism for OS ‘extensibility’ No need to recompile and then reboot A kernel module differs from a normal C program A kernel module cannot call any of the familiar functions from the standard C runtime libraries A module will be run as part of the kernel Any ‘bug’ can cause a system malfunction or a complete crash! 21 NTU OSSSP 2016: Linux Kernel ☼ Discussion: GPL issues with the Linux kernel modules
  • 22. © 2016 William W.-Y. Liang, All Rights Reserved. Example 22 NTU OSSSP 2016: Linux Kernel ☼ Discussion: how multiple program entries work?
  • 23. © 2016 William W.-Y. Liang, All Rights Reserved. How to get a module to work in Kernel 23 NTU OSSSP 2016: Linux Kernel ALESSANDRO RUBINI and JONATHAN CORBET, Linux Device Drivers, Second Edition Driver Functions
  • 24. © 2016 William W.-Y. Liang, All Rights Reserved. Example: Device Registration 24 NTU OSSSP 2016: Linux Kernel
  • 25. © 2016 William W.-Y. Liang, All Rights Reserved. Driver Methods -- File Operations The kernel uses the file_operations structure to access the driver’s methods. int (*open) (struct inode *, struct file *); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); int (*release) (struct inode *, struct file *); … 25 NTU OSSSP 2016: Linux Kernel ☼ Discussion: drivers vs. the object-orient concept
  • 26. © 2016 William W.-Y. Liang, All Rights Reserved. Kernel and User Space 26 NTU OSSSP 2016: Linux Kernel ☼ Discussion: address space for kernel and processes
  • 27. © 2016 William W.-Y. Liang, All Rights Reserved. Virtual to Physical Space 27 NTU OSSSP 2016: Linux Kernel https://en.wikipedia.org/wiki/Operating_system ☼ Discussion: how the memory space is utilized? ALESSANDRO RUBINI and JONATHAN CORBET, Linux Device Drivers, Second Edition
  • 28. © 2016 William W.-Y. Liang, All Rights Reserved. Data Transfer between User and Kernel Space 28 NTU OSSSP 2016: Linux Kernel Read: kernel->user Write: user->kernel ☼ Discussion: issues for cross space data accesses ALESSANDRO RUBINI and JONATHAN CORBET, Linux Device Drivers, Second Edition ,
  • 29. © 2016 William W.-Y. Liang, All Rights Reserved. Example: User & Kernel Space Data Transfer 29 NTU OSSSP 2016: Linux Kernel
  • 30. © 2016 William W.-Y. Liang, All Rights Reserved. Kernel Memory Allocation Small size allocation kmalloc and kfree dptr->data = kmalloc(qset * sizeof(char *), GFP_KERNEL); memset(dptr->data, 0, qset * sizeof(char *)); Limitations Large size allocation vmalloc and vfree Restrictions Page allocation Slab and memory pool 30 NTU OSSSP 2016: Linux Kernel ☼ Discussion: performance issues in memory management
  • 31. © 2016 William W.-Y. Liang, All Rights Reserved. Multi-tasking: the Central Part of the OS Process states in OSes Running: own CPU Ready: To be scheduled, in ready queue (run-queue) Waiting: Pending on I/O or Event Delay itself for some duration Request a resource but is not yet available Linux Task States Tasks: user-process, user-thread, kernel thread States: TASK_RUNNING, TASK_INTERRUPTIBLE, etc. Scheduling Policy SCHED_OTHER, SCHED_FIFO, SCHED_RR, etc 31 NTU OSSSP 2016: Linux Kernel ☼ Discussion: scheduling and preemption issues
  • 32. © 2016 William W.-Y. Liang, All Rights Reserved. Concurrency Problems Problems: Data inconsistency, Deadlock Race Condition: Occurs when multiple tasks want to access the shared resources, such as shared data or hardware devices. 32 NTU OSSSP 2016: Linux Kernel ☼ Discussion: what’s the exact cause?
  • 33. © 2016 William W.-Y. Liang, All Rights Reserved. Thread Safe Potential Causes of Thread-Unsafe Problems Global variables Static variables Indirect accesses Solutions Reentrancy Atomic operations Thread-local storage Mutual exclusion 33 NTU OSSSP 2016: Linux Kernel Concurrency in Kernel and Device Drivers  Driver code vs. Tasks  Single Core vs. Multicore  IRQ impact  Soft-IRQ ☼ Discussion: performance issues for synchronizations
  • 34. © 2016 William W.-Y. Liang, All Rights Reserved. Synchronization Operations Semaphore down(), up(), etc. Mutex mutex_lock(), mutex_unlock(), etc. Spin locks spin_lock(), spin_unlock(), etc. Atomic operations atomic_set(), atomic_add(), etc Bit operations set_bit(), clear_bit(), etc. 34 NTU OSSSP 2016: Linux Kernel ☼ Discussion: semaphore vs. spinlock, usage & performance
  • 35. © 2016 William W.-Y. Liang, All Rights Reserved. Interrupt Handling 35 NTU OSSSP 2016: Linux Kernel ☼ Discussion: cost and performance issues of IRQ handling and solutions
  • 36. © 2016 William W.-Y. Liang, All Rights Reserved. Task Blocking and Waiting Queue Processes are usually blocked due to I/O waiting. No data available for read, or no space available for write or device busy Waiting queues Blocked task is put into a waiting queue before it is woke up. 36 NTU OSSSP 2016: Linux Kernel Linux Device Drivers, Second Edition ☼ Discussion: how it works? Linux Device Drivers, Second Edition
  • 37. © 2016 William W.-Y. Liang, All Rights Reserved. The Endless Journey on Discovering Linux To be Continued… This brief introductory lecture is just a beginning. Still many interesting things out there Take it as interesting adventure, by learning from the wonderful open source world! 37 NTU OSSSP 2016: Linux Kernel https://en.wikipedia.org/wiki/Linux_kernel#/media/File:Linux_kernel_map.png Let’s keep the discussion next week on the next topic – Android Framework.
  • 38. Note: The Copyrights of the referenced materials and photos go to their original authors. As a result, this slide is for personal reference only. For the contents created in this document, the Copyright belongs to William W.-Y. Liang. © 2005-2016 All Rights Reserved. Q & A william.wyliang@gmail.com http://www.ntut.edu.tw/~wyliang http://www.facebook.com/william.wyliang