#119 in Computers & technology books
Use arrows to jump to the previous/next product

Reddit mentions of Linux Kernel Development

Sentiment score: 17
Reddit mentions: 25

We found 25 Reddit mentions of Linux Kernel Development. Here are the top ones.

Linux Kernel Development
Buying options
View on Amazon.com
or
    Features:
  • Takes 2 AA batteries; Picture size 62 x 46 millimeter; Viewfinder real image finder, 0.37x, with target spot
  • New selfie mirror, shutter speed: 1 per 60 sec
  • New macro lens adapter for close ups 35 centimeters to 50 centimeters
  • Automatic exposure measurement; The camera signals the recommended aperture setting with a flashing LED; This helps capture the perfect photo every time
  • Focusing: 0.6 meter
Specs:
Height9 Inches
Length7 Inches
Number of items1
Release dateJuly 2010
Weight1.763698096 Pounds
Width1.06 Inches

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Found 25 comments on Linux Kernel Development:

u/CatZeppelin · 8 pointsr/linux

I always find myself looking at man pages while programming in C, the illusion of speed while using Google can be counter-productive -- blog posts are always filled with misinformation that hampers your ability.

I recommend spending quite a bit of time in userland first. In kernel land the stakes are much higher, after all who's going to look after the kernel. To name a few issues:

  • 8K stack on 32bit kernels, or 16K stack on 64 bit kernels (I believe it can be changed via a config). This means you need to use vmalloc and kmalloc to have a large array.

  • If you corrupt memory in the kernel, your system will crash.

  • No FPU. Only use integers. Remember you're executing in a process context.

    I would start with something very simple, look at the linked-list structure of task_struct and thread_info in <linux/sched.h>

    eg:

    struct task_struct {
    volatile long state; / -1 unrunnable, 0 runnable, >0 stopped /
    void stack;
    atomic_t usage;
    unsigned int flags; /
    per process flags, defined below */
    unsigned int ptrace;

    ifdef CONFIG_SMP

      struct llist_node wake_entry;<br />
      int on_cpu;<br />

    };


    and thread_info

    struct thread_info {
    struct task_struct task; / main task structure /
    struct exec_domain
    exec_domain; / execution domain /
    u32 flags; / low level flags /
    u32 status; / thread synchronous flags /
    __u32 cpu; / current CPU /
    int preempt_count; / 0 =&gt; preemptable,
    &lt;0 =&gt; BUG
    /
    };

    To learn Linux, or any large software project you need to get your hands dirty. Hack the kernel as you please, after all that's why linux is open source.

    Book recomendations:

    Linux Kernel Development

    Modern Operating Systems

    Have fun hacking!

u/Kingizzardthelizard · 8 pointsr/linuxquestions

I got a bookmark folder filled with resources just for the day I choose not being a lazy slob. Here's some:

https://www.kernel.org/doc/html/latest/ - Official docs

http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html - Resource list including books and webpages

Some books i got from libgen:

Professional Kernel Architecture

Understanding the Linux Kernel, Third Edition

Linux Kernel Development (3rd Edition)

u/zyrkan · 7 pointsr/linux

As you can imagine, the kernel is a gigantic project, so it's hard to jump in and understand how things are working. If this is your first exposure to any operating system stuff, I would suggest backing up and learning a bit more of the basics. You'll find information like that under the terms "computer architecture" and "computer organization". Modern Operating Systems by Tanenbaum is a classic read to get started.

If you really want to dig at the kernel code, I'd recommend Robert Love's Linux Kernel Development. It gets into the details of process scheduling, interrupts, memory management, file systems, etc. and looks at the code. But I'd warn you that it's pretty complex and can be quite slow to learn.

There are a few free linux kernel books online such as Advanced Linux Programming and Linux Device Drivers. Even if some of the information is outdated, you'll get a lot of information about how the kernel works in general from these resources.

Hope that helps, and enjoy.

u/deaddodo · 5 pointsr/osdev

The source in the littleosbook builds on itself each chapter. However, it's important to know that the littleosbook, osdev wiki and most online resources aren't necessarily "tutorials" after the bootloader and bare-bones stages. Any later information is going to be more abstract and guidance. If you need in depth assistance with osdev, you'll want to invest in one (or more) of the following:

u/CannedCorn · 5 pointsr/linux

"Linux Kernel Development 3rd Edition" is fairly modern (2010) and really good:

http://www.amazon.com/Linux-Kernel-Development-3rd-Edition/dp/0672329468/ref=sr_1_1?ie=UTF8&amp;amp;qid=1413858907&amp;amp;sr=8-1&amp;amp;keywords=linux+kernel+development

Also... not kernel internals specific but an AMAZING book about programing against the linux kernel is "The Linux Programming Interface":

http://www.amazon.com/The-Linux-Programming-Interface-Handbook/dp/1593272200/ref=pd_sim_b_4?ie=UTF8&amp;amp;refRID=1X9Y7ZM18JWKJ80PNXN3

It was written by the guy who wrote a lot of the linux man pages and is one of the best books about how linux works from a programming interface perspective that I've ever read.

u/EirrinGoBragh · 5 pointsr/linux

Read here: http://www.advancedlinuxprogramming.com/


Program. Then read here: http://www.amazon.com/Linux-Kernel-Development-3rd-Edition/dp/0672329468


Program some more. Then maybe read here: http://www.amazon.com/Linux-Device-Drivers-3rd-Edition/dp/0596005903


And program some more. Yes, I know two of the links are to amazon. I'm sure if you look real hard you can find other formats.

u/Drach88 · 4 pointsr/C_Programming

A note re: jumping into The Linux Kernel -- This is best tackled while simultaneously reading a book on the kernel like Linux Kernel Development (3rd Edition) by Robert Love and a book on general *nix fundamentals like Advanced Programming in the Unix Environment by Stevens and Rago.

u/appleade280 · 3 pointsr/linux

You might be interested in trying gentoo, especially before trying LFS.

Edit: Also, if you'd like to read about the kernel itself you could check out this book, I enjoyed it.

u/A0B97834-AD43-11E3-9 · 3 pointsr/learnprogramming

Linux Kernel Development is what's been recommended to me in the past.

u/ccondon · 2 pointsr/linux

Well yes. It has a lot of features, and it was O(1). The scheduler has to be able to support nicety, among other things that I can't think of at the moment. For a good introduction, see this book by Robert Love. I used the second edition. The third edition talks about the newer, O(log n) scheduler. The O(1) scheduler performs better for servers with many tasks and little user interaction, whereas the newer one is apparently much better at minimizing latency for applications with a lot of user interaction, as a desktop would have.

Granted, a round-robin scheduler is O(1), and certainly much faster than the O(1) linux scheduler, but it lacks all sorts of important behavior.

u/srnull · 2 pointsr/programming

You got downvoted because what you said wasn't clear. There is a version of what you said that might be sort of correct, but what you typed really isn't.

Threads and processes are more similar on Linux than they are on other systems because they're both just tasks. See this answer on StackOverflow for an overview. They're both struct task_struct in the C source, which is a huge structure, closing in on 2KB. See this answer on StackOverflow for an overview.

If you're interested in these kinds of things, read e.g. Robert Love's Linux Kernel Development.

u/AlienBloodMusic · 2 pointsr/linux

The OS is just a program like any other program. In order to really start understanding how it works, you should learn C.

Once you've got some C down, read Advanced Linux Programming

From there read Robert Loves Linux Kernel Development - even if you're not a kernel developer, it'll give you tremendous insight into how the kernel works.

Also check out Linux Device Drivers. I found this &amp; Loves book complemented each other nicely.

u/HPCer · 2 pointsr/cpp_questions

While I would be really surprised if you found any resources implementing software RAID 5 in C++, you could look at the mdadm C code (used by Linux) to create software RAID:
https://github.com/neilbrown/mdadm

That's written in C, but it's something. If you're doing this simply for learning, I would shoot for something significantly simpler and draw out one source array with three destination arrays (to simulate three drives - you may expand this to N drives later). Then you'll want to work on iterating through the array and calculating/round-robin distributing the parity blocks across the destination arrays. If you want to expand this further and implement it as a driver, that will likely involve you reading a couple books on the relevant OS first. For Linux, I regularly recommend Robert Love's Linux Kernel Development book:
https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468

He does a decent job providing a pretty high-level view of each component of the kernel (considering the complexity of the kernel, 440 pages is short). I also found it to be a really interesting/fun read.

I'm a little short on time to actually read the mdadm code, but I'll check again tomorrow if the above isn't enough to start you off.

u/AiwendilH · 2 pointsr/linux4noobs

Ugh...afraid I am not that much of a help there...too old ;) Lots of this actually comes from DOS (you know, the OS of microsoft before windows) programming books and books about the linux kernel in version 2.0 ;) So really old and probably not available anymore. And both had nothing to do with virtualization...just, well DOS was no multitasking system. Direct hardware access and even manipulating the memory mapping registers were common back then for normal programs (as only one program could run at a time...you could do whatever you wanted, nothing else could get in your way). All this is pretty useless knowledge nowadays...but it helped a lot to know the basics to somewhat understand "modern" stuff like virtualization...it's more just learning how it was done as the basics are still in large parts the same.

But afraid that means I have no clue about a modern book that would teach these topics nicely. (not to mention that my first books about that hardware stuff were still in German...only two years learning English at school were not enough back then to understand English programming books ;))

I heard some good about Linux kernel development but afraid didn't read it...so take with a grain of salt (And this is really more if you are interested how the kernel does things and how hardware access is really done, it's not a book that will help you much with "ordinary" daily work on a linux system.

Afraid I am not aware of any general purpose book for linux at all...there must be some for sure but afraid I always just looked into kind of specialized books...so can't help there at all.

A slightly higher level book that helped me a lot to deal with linux was linux application development (although I read it in the first edition..and german translation back then. In this case I have no excuse for that...by that time I should have been good enough in English to read the original..so probably just some teenager laziness). But this one is really good, leads you through the whole process of writing your own shell...requires basic C knowledge though.

What brings up something interesting...even if not linux related directly...any book about learning the basics of C will also help a lot with linux. I see that a bit different than learning a language like python for example..while learning python will of course also help you understanding linux better in some cases learning C gets you really dirty. It forces you to learn some basics about hardware...most other languages "shield" you there (exception c++ which is also very lowlevel and if you ask me the more interesting language to learn...but if you ask Torvalds he probably would have some strong words of disagreement there. So for the linux kernel learning C is better)

But overall...really better make a new question about this and ask a wider audience...afraid I am just the wrong person to give any good suggestions there.

u/scopegoa · 1 pointr/sysadmin

I bought it from this link:

http://www.amazon.com/gp/aw/d/0672329468?pc_redir=1397146287&amp;amp;robot_redir=1

It's literally called Linux Kernel Development by Robert Love.

u/postmodern · 1 pointr/programming

Yes, because browsers "run" webpages inside of sandboxes, where performance and security are critical. This is similar to how the kernel runs userspace programs. Think of the DOM and various JavaScript functions as syscalls. Browsers also contain their own memory manager similar to Virtual Memory; except with Garbage Collection. The various obscure file formats browsers have to support (VRML) are like executable formats that kernels support (COFF). Browsers support a variety of network protocols (TFTP, FTP, HTTP 1.0/1.1, Web Sockets and now SPYDY). Browsers also need to support plugins and provide an internal API for them to hook into. Finally, FireFox is 9.23M lines of C++/C/JavaScript which brings it close to Linux's 16M lines of C.

Kernels are really not that mysterious or complex. If your interested in learning about the architecture of the Linux Kernel, checkout Linux Kernel Development by Robert Love.

u/coned88 · 1 pointr/linux

While being a self taught sys admin is great, learning the internals of how things work can really extend your knowledge beyond what you may have considered possible. This starts to get more into the CS portion of things, but who cares. It's still great stuff to know, and if you know this you will really be set apart. Im not sure if it will help you directly as a sys admin, but may quench your thirst. Im both a programmer and unix admin, so I tend to like both. I own or have owned most of these and enjoy them greatly. You may also consider renting them or just downloading them. I can say that knowing how thing operate internally is great, it fills in a lot of holes.

OS Internals

While you obviously are successful at the running and maintaining of unix like systems. How much do you know about their internal functions? While reading source code is the best method, some great books will save you many hours of time and will be a bit more enjoyable. These books are Amazing
The Design and Implementation of the FreeBSD Operating System

Linux Kernel Development
Advanced Programming in the UNIX Environment

Networking

Learning the actual function of networking at the code level is really interesting. Theres a whole other world below implementation. You likely know a lot of this.
Computer Networks

TCP/IP Illustrated, Vol. 1: The Protocols

Unix Network Programming, Volume 1: The Sockets Networking API

Compilers/Low Level computer Function

Knowing how a computer actually works, from electricity, to EE principles , through assembly to compilers may also interest you.
Code: The Hidden Language of Computer Hardware and Software

Computer Systems: A Programmer's Perspective

Compilers: Principles, Techniques, and Tools

u/myaut · 1 pointr/linux

"Linux Kernel Development" by Robert Love is also good
http://www.amazon.com/Linux-Kernel-Development-3rd-Edition/dp/0672329468

u/droug132 · 1 pointr/linuxquestions

I enjoyed Linux kernel development by Robert Love.
He starts with a high level view, just to understand the concept, and then points you to the relevant code in the kernel.
But as with all books about the kernel, references become outdated but not too hard to find it in recent kernels.

u/yur_mom · 1 pointr/programming

Yeah, the beauty of the low level libraries is they really do not change very much or often. I do not expect everyone to master them, but having an understanding will help in any area of userspace you work. Here are two great books that can be read with just an understanding of the c language.


http://www.amazon.com/The-Linux-Programming-Interface-Handbook/dp/1593272200/ref=sr_1_10?ie=UTF8&amp;amp;qid=1404953887&amp;amp;sr=8-10&amp;amp;keywords=linux


http://www.amazon.com/Linux-Kernel-Development-3rd-Edition/dp/0672329468/ref=pd_sim_b_1?ie=UTF8&amp;amp;refRID=10S29ZMT4Q5VQM4KYZRY

u/akkaone · 1 pointr/linux4noobs

It is four years old now but "Linux Kernel Development" http://www.amazon.com/Linux-Kernel-Development-3rd-Edition/dp/0672329468
despite the name, the book is also nice even for people not doing kernel development.