Do you know if new editions of ULK or R.Love's books are going to be re-released? Or maybe another book is in writings?
Latest books are based on 2.6.18 kernels, so I'm looking if anything newer is coming.
The Third edition of Robert Love's Linux Kernel Development came out less than two years ago and is based on 2.6.34. I don't think there have been any substantial changes to the kernel since.
http://blog.rlove.org/2010/07/linux-kernel-development-third-edition.html
There are two good and mostly still accurate books on the Linux kernel. I'm not aware of anyone writing a new book just now.
If you just care about higher structures, how the scheduler works and things like that, use the Robert Love 3rd Edition.
If you want to know about all the various driver subsystems, choose the Venkateswaran book.
Note that the book is now exactly 3 years old and is starting to show its age.
All other kernel books (including Jonathan Corbet's, Bovet/Cesati and others) are no longer worth reading: too much details have changed.
Especially anything pre 2.6.24 should be avoided because the updated timer framework that got finalized at that revision had quite a big ripple effect.
2.6 was upgraded on 3.0 just because there was 20th anniversary of kernel. 3.0 does not have many breathtaking ideas, and most books relevant for 2.6.x are also relevant for 3.0.x
https://lwn.net/Articles/452531/
Related
According to a comment in one of my previous Questions Linux System Calls. Linux wasn't implemented on 8086/88 Intel CPUs. So what was the first Intel CPU to support Linux and implement its system calls?
From the horse's mouth itself (with no insult intended to Linus):
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.
This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus (torvalds#kruuna.helsinki.fi)
PS. Yes – it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.
This is from the August '91 Usenet posting where Linus first announced his baby.
Hence 386 was the first CPU it was implemented on.
Only those of us who suffered having to lock memory sections at their location in Windows real mode, to prevent the memory manager emulator from moving them around without telling you, will appreciate what a good move Linus made in not trying to shoehorn Linux on to earlier CPUs.
I particularly love the:
just a hobby, won't be big and professional like gnu
comment. If only Linus had realised how big this beast would become.
I have some homework which I should program a virtual device driver on kernel 3.x Can you suggest some documentation about it? I'm using fedora btw.
I know there are lots of tutorials, but there is some difference between 2.x and 3.x.
There is no major difference between the last 2.6.x series kernel and the 3.x series. It's an arbitrary distinction.
The reference work for Linux device drivers is the aptly named Linux Device Drivers. It's somewhat out of date (being based on 2.6.10), but still a good guide. There are slightly less out-of-date examples on Martinez Javiers GitHub.
Of course, the ultimate guide is the code itself. Regardless of what you do you will have to refer to the code frequently. Code reading is an incredibly valuable skill, and you should practice it as much as possible.
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 11 years ago.
I am taking an undergrad operating systems class next semester and this is a recommended book. Iam wondering if you would still recommend Advanced Programming in the Unix Environment 1st Edition as opposed to the second edition. I know you cannot recommend a book for a class you have not taken(not what I am asking for) but am wondering if anyone has read/owns both versions and whether or not they feel the 1st edition is still relevant or due to its age(written in 1992) I would be better off investing in the 2nd edition. I don't know a ton about unix and after taking a look at the 1st edition it seems like its a wealth of info let me know what you think
From the book's web site:
The second edition of Advanced Programming in the UNIX® Environment has been updated to reflect contemporary operating systems and recent changes in standards. In addition, the example chapters were overhauled. The four platforms used to test the examples in the book include FreeBSD 5.2.1, Linux 2.4.22, Mac OS X 10.3, and Solaris 9. These platforms are a moving target, and most likely there are newer versions available now, so your mileage may vary.
Major changes include the addition of a chapter on sockets, two chapters on threads, and the removal of the chapter discussing modem communication, although this lost chapter is available here. Additionally, the printer communication chapter was rewritten to account for today's network-based printers.
To my mind, the most valuable of these changes is the testing with modern platforms. APUE 1/e barely mentioned Linux and of course didn't cover OS X at all since it hadn't been created yet. 2/e fixes this.
That's not to say that APUE 1/e is useless for Linux and OS X systems programming. I used it successfully with Linux for many years. I can't think of any time a topic it covered didn't implicitly cover at least one way to do it on Linux. The main difficulty is that where there is more than one way to do something, APUE usually gives them all, but with 1/e you had to just try them all to find out which one Linux supported. It's a worse problem with OS X, because its kernel is less ecumenical than Linux's.
I don't miss the chapters on threads and sockets in my 1/e copy because I have other books for that. As a new systems programmer, you will find them valuable until you find a reason to get something more comprehensive in those areas. They're both topics worthy of full books. (Full shelves, really.)
Anyway, bottom line, I still have my 1/e copy despite buying 2/e for work. The 1/e copy just went home is all. It's still useful.
It's a good book, and the first edition is not very out of date. Much of the point of Unix is to limit how much the features and interfaces change over time. The older version of the book is still very valid, and the fact that there are only two editions in nineteen years speaks to the stability of the unix libraries and utilities. Of course, your professor should be able to explain and differences you might encounter.
I would need your help. I've come across an interesting book - Programming the Cell Processor: For Games, Graphics, and Computation - it contains mostly C and some Assembly for Cell. The technology is interesting indeed, but there are some doubts on my side.
The book is from 2008 and some things has changed:
There is no Linux support on current firmware version.
Last version on IBM's website is from 2008 Red Hat Enterprise 5.2 and Fedora 9 - has anyone an experience running this IBM SDK on Fedora 13 or at least any version higher than stated Fedora 9, and is Linux available of sufficient testing?
Would it be useful for example for creation of distributable PSN game, and if anyone knows anything about price to actualy get a product there (as I've heard that it waaaaay more expensive than for example X-box indie games)
So do you think that it is worth it or not? Be it just for education purposes or something "more" serious?
Any thoughts are welcomed, thank you!
Cell was dumped by IBM for general purpose computers. It will live for the next 5 years in the Playstation and i'm pretty sure that the next generation Playstation - whenever it will be ready - will also use Cell again because establishing something new in CPU land is so unaffordable today.
But as a technolgy it is indeed no longer interested. Learning CUDA might be a better choice.
Given that you don't have access to a Cell machine, I'd advise that it's probably not worth it. I absolutely love the Cell architecture - I think it was a fantastic step in the right direction. Unfortunately, having done some Cell development in the past, I was really disappointed with the tool chain, the simulator and the seemingly hostile attitude taken towards developers recently.
So given that you're not going to be able to use a real Cell machine in order to get the speed gains you would get from writing programs within that idiom, you'd probably be much better off looking into general distributed programming techniques (using MPI or something similar). These skills are going to be readily transferrable to the Cell or its derivatives, or any similar architectures that might arise in the future.
As far as I'm concerned, and as much as it pains me, I think the Cell is basically a developmental dead end unless you have access to a commercial development license, you'll be extremely frustrated in your ability to actually get anything out of the architecture.
I would like to learn about linux/Unix kernel programming for scalable multi processors (smps). I found this book UNIX(R) Systems for Modern Architectures http://www.amazon.com/UNIX-Systems-Modern-Architectures-Multiprocessing/dp/0201633388/ref=pd_rhf_p_t_3 . Is there any other good resources or a better book since its released in 1994. Thank you very much in advance.
Thanks & Regards,
Mousey.
Definitely buy this excellent book! You will get thorough introduction into:
caches, their types, and how to deal with them in the kernel,
synchronization and what hardware primitives are behind it,
general kernel designs as related to concurrency (cli/sti, giant lock, cli+spinlock, etc.)
The book is general enough not to be out of date by now. The only thing I don't remember mentioned there is NUMA, but I don't think there are any good published texts on this subjects yet except for maybe Gorman's Linux memman paper (somebody correct me if I'm wrong here).
I think the book was really worth the money.
Understanding the Linux Kernel is a great book about how the Linux kernel is built, it describes Linux 2.2, 2.4 and 2.6 (Third Edition).
If you want to make drivers, there's Linux Device Drivers , and is also a reference about how Linux is built.
For Linux, Rusty's Unreliable Guide to Kernel Locking is a must-read. After that, you can also read the file Documentation/spinlocks.txt located in the Linux kernel sources.