CS433 Linux Kernel Programming - Why?
Why should I learn Linux Kernel? -
Do you need to know?
-
The market share of Linux-based servers has been relentlessly growing. See the facts below.
-
Empower yourself to become a problem solver for serious system programming.
Some facts you show know why Linux kernel programming is increasingly important:http://www.dwheeler.com/oss_fs_why.html
Some of you may carry old kernel 3.* with you in your cell phone (android-based phones).
Benefits
- Learn a large-scale open source software project.
- Learn how all the pieces of what you have learned are put together to run many servers around the globe. Developing application-level software is not the same as writing low system-level projects.
- Experience programming styles and disciplines employed in this large-scale software.
- Learn how the open-source community has been working to build large-scale software projects. And you can be a part of it.
- Knowing what's down there, not only will you be able to do a better job of programming but more importantly you can plan and design better, which will have a greater impact on the overall software development.
- Find how Linux kernel interacts with other open-source projects such as Apache, Asterisk VOIP, OpenSSL, mySql, among others.
- Be able to modify the kernel for your own needs.
- Learn the foundation of LAMP (Linux Apache Mysql Php/Perl) as opposed to MS Windows/IIS/Sql/Dot Net.
- Check what you are lacking and plan ahead for your own remedial steps before going out to face the realworld problems. Be better prepared.
Prerequisites
- This course is demanding and challenging both in terms of time and intellect. If you are not ready and willing to take on a such challenge, this course is not for you.
- You must be familiar with using Unix/Linux/BSD/Irix/AIX/Ultrix/etc. If you have not extensively used a Unix like OS, this class is not for you.
- Proficiency in C language. If you are not familiar with C, this class is not for you. Linux kernel is written in C.
- You should have some general familiarity with assembly language concepts. If you have never been exposed to assembly, this class is not for you.
With limited knowledge on assembly language, you will pick up AT&T and Intel assembly as we go.
- Computer architecture, in particular Intel Pentium series, including bus structure, registers, main memory, cache memory, disk, interrupts, network interface card, etc.
-
Operating system principles are not required. You will learn the principles as well as actual practice.