1 / 8

Computer Science 635

Computer Science 635. Advanced Systems Programming Fall 2007 Professor Allan Cruse. Course’s theme is…. “Using the computer to study the computer”. Normal C/C++ programming. We would write most of this source-code “app.cpp”

nicolev
Download Presentation

Computer Science 635

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computer Science 635 Advanced Systems Programming Fall 2007 Professor Allan Cruse

  2. Course’s theme is… “Using the computer to study the computer”

  3. Normal C/C++ programming We would write most of this source-code “app.cpp” but we would call some library-functions e.g., open(), read(), write(), malloc(), … then our code would get ‘linked’ with standard runtime libraries (So this is an example of “code reuse”) application call ret standard “runtime” libraries

  4. Normal C/C++ programming Many standard library functions perform services that require executing privileged instructions (which only the kernel can do) application call Operating System kernel ret syscall standard “runtime” libraries sysret user space kernel space

  5. Linux Kernel Modules Linux allows us to write our own installable kernel modules and add them to a running system application module call ret call Operating System kernel ret syscall standard “runtime” libraries sysret user space kernel space

  6. Requirements/Benefits • An LKM has to be written using “C” -- but can include “inline” assembly language • An LKM runs in kernel-space – so it can do anything that the CPU supports • So an LKM can – • directly control the peripheral devices • modify the kernel’s scheduling algorithms • examine the kernel’s hidden data-structures

  7. Course prerequisites • Be a CS Graduate Student • Be familiar with using Linux (or UNIX) • Be able to write programs in C (or C++) • Be able to use an assembler • Be acquainted with x86 architecture • General-purpose registers (EAX, EBX, …) • Categories of instructions (MOV, ADD, …) • Ways to address memory (direct, indirect,…)

  8. Recommended texts Corbet, Rubini, and Kroah-Hartman, Linux Device Drivers (3rd Ed), O’Reilly (2005), ISBN 0-596-00590-3 Bovet and Cesati, Understanding the Linux Kernel (3rd Ed), O’Reilly (2006), ISBN 0-598-00565-2

More Related