Reddit Reddit reviews The Design and Implementation of the FreeBSD Operating System (2nd Edition)

We found 22 Reddit comments about The Design and Implementation of the FreeBSD Operating System (2nd Edition). Here are the top ones, ranked by their Reddit score.

Computer Hardware Embedded Systems
Microprocessor & System Design
Computer Hardware & DIY
Computers & Technology
Books
The Design and Implementation of the FreeBSD Operating System (2nd Edition)
Addison-Wesley Professional
Check price on Amazon

22 Reddit comments about The Design and Implementation of the FreeBSD Operating System (2nd Edition):

u/TheEdgeOfRage · 14 pointsr/BSD

If you want something really hardcore check out The Design and implementation of the FreeBSD operating system

Edit for 2nd edition

u/TreeFitThee · 7 pointsr/freebsd

If, after reading the handbook, you find you still want a deeper dive check out The Design and Implementation of the FreeBSD Operating System

u/dhdfdh · 6 pointsr/freebsd

The Design and Implementation of the FreeBSD Operating System

Also, the devs hang out on the mailing lists and some on the FreeBSD forum.

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/adamnemecek · 5 pointsr/freebsd

you can check out the table of contents on amazon http://www.amazon.com/Design-Implementation-FreeBSD-Operating-Edition/dp/0321968972/ref=dp_ob_title_bk
or the books website http://ptgmedia.pearsoncmg.com/images/9780321968975/samplepages/9780321968975.pdf
but the answer to all your questions is basically yes, this is the book that fits your criteria.

u/icantthinkofone · 4 pointsr/BSD

I noticed you linked to the first edition. Here is the second edition

u/ewood87 · 4 pointsr/BSD
u/mdf356 · 3 pointsr/cscareerquestions

It's about 40 years too late for any one person to have mastery of all the different parts of a computer.

For computer architecture, Hennessy and Patterson is the classic volume. For the software algorithms that are used everywhere, CLRS is the classic guide. For Operating Systems, The Design and Implementation of FreeBSD is a good book. I'm sure there's something similar for networking.

You could read the PCI spec, and some Intel data sheets, and the RFCs for networking protocols if you want to learn those things. For most parts of computers, I strongly suspect that most material is either too high level (yet another "Introduction to") or too low level (reading an RFC doesn't tell you whether it's used that way in practice or has been superseded).

The only way I've gotten to know things is to play with them. Change the code, make it do something else. Personal research like that is very educational but time consuming, and there's way too much out there to know everything, even for a single small piece of hardware and its associated software.

u/a-schaefers · 3 pointsr/unixporn

Initially I watched an episode of lunduke hour that featured a freeBSD dev https://www.youtube.com/watch?v=cofKxtIO3Is

I like the documentation available to help me learn. I got my hands on the FreeBSD handbook and can't wait to get into the design and implementation text book, Addison Wesley, 928 pages. https://www.amazon.com/Design-Implementation-FreeBSD-Operating-System/dp/0321968972/ref=pd_lpo_sbs_14_t_0/143-0574353-4482766?_encoding=UTF8&psc=1

I appreciate the focus on servers and research computing that is BSD's strong suit.

u/Ohthere530 · 3 pointsr/explainlikeimfive

Disk drives are like post office boxes. They are numbered from one to whatever, and each one holds just a small amount of information. Each of these "boxes" is called a block.

Users like to look at documents organized into folders. Each document has its own name and can have any amount of data.

A filesystem is the software that converts from documents and folders the way users like to see them to the blocks that disk drives hold. For every file, there is some information about who owns it, when they last changed it, which blocks hold the actual data, and so on. (This is an inode.)

For details, I'd recommend The Design and Implementation of the FreeBSD Operating System.

u/chalbersma · 2 pointsr/linux
u/melp · 2 pointsr/zfs

That is not true. Sync writes go to memory (in a transaction group) and the SLOG at the same time.

The only reference I know of for this is in this book: https://www.amazon.com/dp/0321968972/

Section 10.4, logging. You can see it in the Amazon preview, starting on page 538.

u/InfinitelyManic · 2 pointsr/openbsd
u/WannabeDijkstra · 2 pointsr/linux

The Design and Implementation of the FreeBSD Operating System by Marshall Kirk McKusick

Though it uses FreeBSD-specific details, its breadth and level of detail is really high, with most of the concepts being applicable to nearly all Unix-likes, and much of it to operating systems in general.

The second edition came out just a few days ago, which I link to.

u/jeremiahs_bullfrog · 1 pointr/linux

Well, it is copyrighted by Kirk McKusick, who was a core contribute in the early days of FreeBSD, and he has a restriction that it only be used tastefully (so there's some subjectivity to it). I don't know if he still works on it as a core contributor though, but he did recently release v2 of The Design and Implementation of the FreeBSD Operating System, so he's involved in some capacity.

I'm not sure of the legal restrictions on the new FreeBSD logo, Beastie or Tux so you may very well be right they they don't need to be defended.

u/Yunath_ · 1 pointr/uwaterloo

Im not sure the applicability (2A BTW), but i picked up a freeBSD textbook and its pretty good on OS content.

https://www.amazon.ca/Design-Implementation-FreeBSD-Operating-System/dp/0321968972/ref=dp_ob_title_bk

I think the content is different, but the theory and concepts are there.

u/a4qbfb · 1 pointr/C_Programming

>> You are confusing sections with segments

> and you're behaving the way C++ usually behave

I am not a C++ anything. I have 25 years of experience with C and 20 years of experience with operating system design and development. The odds are better than even that both the computer you used to post this abusive rant and the computers which reddit use to store and serve it run code that I have written.

(Yes, I've been writing C++ on and off for almost as long as I've been writing C, but I vastly prefer the latter.)

> code section or code segment or text section or test segment are same in this context

Absolutely not. Segments are a feature of
some computer architectures, most prominently the Intel 8086 and 80386 (but not their 64-bit descendants), used to organize and access code and data in memory. Sections are a feature of most executable file formats (such as ELF and COFF) used on modern non-embedded platforms. The OS and / or the run-time linker read code and data from sections in the executable file and store them somewhere in memory.

> simple googling gives you the result: https://stackoverflow.com/questions/2589949/string-literals-where-do-they-go

Stack Overflow is not a reliable source of
correct* information (see for instance this article or this one about how SO's karma system encourages a race to the bottom). I would suggest reading Tanenbaum or McKusick et al. instead.

This specific answer is correct only in the sense that the literals are included in the same file as the code. Setting aside embedded platforms and their idiosyncrasies, they are stored in different sections of the file and loaded into different memory locations at run-time.

> Where do they go? the same segment where the .text section of the object file gets dumped, which has Read and Exec permissions, but not Write

Your information is 20 to 30 years out of date. No modern OS uses segments the way Intel envisioned when they designed the 8086 or the 80386. The former needed segments to escape pointer size limitations when the address bus outgrew the registers, and the latter retained them for backward compatibility and added memory protection features on a per-segment basis. However, modern OSes for the 80386 and its descendants implement memory protection at the page table level rather than at the segment level and use segment registers purely as conveniences for array operations, which is why they were left out when the 80386 architecture was expanded to 64 bits.

> But go ahead c++ pleb continue **** your ***
like your kind always does.

I understand that it can be hard to admit that you are wrong, but that's not a reason to resort to that kind of language.

u/empleadoEstatalBot · 1 pointr/argentina

> For those who prefer video lectures, Skiena generously provides his online. We also really like Tim Roughgarden’s course, available from Stanford’s MOOC platform Lagunita, or on Coursera. Whether you prefer Skiena’s or Roughgarden’s lecture style will be a matter of personal preference.
>
> For practice, our preferred approach is for students to solve problems on Leetcode. These tend to be interesting problems with decent accompanying solutions and discussions. They also help you test progress against questions that are commonly used in technical interviews at the more competitive software companies. We suggest solving around 100 random leetcode problems as part of your studies.
>
> Finally, we strongly recommend How to Solve It as an excellent and unique guide to general problem solving; it’s as applicable to computer science as it is to mathematics.
>
>
>
> [The Algorithm Design Manual](https://teachyourselfcs.com//skiena.jpg) [How to Solve It](https://teachyourselfcs.com//polya.jpg)> I have only one method that I recommend extensively—it’s called think before you write.
>
> — Richard Hamming
>
>
>
> ### Mathematics for Computer Science
>
> In some ways, computer science is an overgrown branch of applied mathematics. While many software engineers try—and to varying degrees succeed—at ignoring this, we encourage you to embrace it with direct study. Doing so successfully will give you an enormous competitive advantage over those who don’t.
>
> The most relevant area of math for CS is broadly called “discrete mathematics”, where “discrete” is the opposite of “continuous” and is loosely a collection of interesting applied math topics outside of calculus. Given the vague definition, it’s not meaningful to try to cover the entire breadth of “discrete mathematics”. A more realistic goal is to build a working understanding of logic, combinatorics and probability, set theory, graph theory, and a little of the number theory informing cryptography. Linear algebra is an additional worthwhile area of study, given its importance in computer graphics and machine learning.
>
> Our suggested starting point for discrete mathematics is the set of lecture notes by László Lovász. Professor Lovász did a good job of making the content approachable and intuitive, so this serves as a better starting point than more formal texts.
>
> For a more advanced treatment, we suggest Mathematics for Computer Science, the book-length lecture notes for the MIT course of the same name. That course’s video lectures are also freely available, and are our recommended video lectures for discrete math.
>
> For linear algebra, we suggest starting with the Essence of linear algebra video series, followed by Gilbert Strang’s book and video lectures.
>
>
>
> > If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is.
>
> — John von Neumann
>
>
>
> ### Operating Systems
>
> Operating System Concepts (the “Dinosaur book”) and Modern Operating Systems are the “classic” books on operating systems. Both have attracted criticism for their writing styles, and for being the 1000-page-long type of textbook that gets bits bolted onto it every few years to encourage purchasing of the “latest edition”.
>
> Operating Systems: Three Easy Pieces is a good alternative that’s freely available online. We particularly like the structure of the book and feel that the exercises are well worth doing.
>
> After OSTEP, we encourage you to explore the design decisions of specific operating systems, through “{OS name} Internals” style books such as Lion's commentary on Unix, The Design and Implementation of the FreeBSD Operating System, and Mac OS X Internals.
>
> A great way to consolidate your understanding of operating systems is to read the code of a small kernel and add features. A great choice is xv6, a port of Unix V6 to ANSI C and x86 maintained for a course at MIT. OSTEP has an appendix of potential xv6 labs full of great ideas for potential projects.
>
>
>
> [Operating Systems: Three Easy Pieces](https://teachyourselfcs.com//ostep.jpeg)
>
>
>
> ### Computer Networking
>
> Given that so much of software engineering is on web servers and clients, one of the most immediately valuable areas of computer science is computer networking. Our self-taught students who methodically study networking find that they finally understand terms, concepts and protocols they’d been surrounded by for years.
>
> Our favorite book on the topic is Computer Networking: A Top-Down Approach. The small projects and exercises in the book are well worth doing, and we particularly like the “Wireshark labs”, which they have generously provided online.
>
> For those who prefer video lectures, we suggest Stanford’s Introduction to Computer Networking course available on their MOOC platform Lagunita.
>
> The study of networking benefits more from projects than it does from small exercises. Some possible projects are: an HTTP server, a UDP-based chat app, a mini TCP stack, a proxy or load balancer, and a distributed hash table.
>
>
>
> > You can’t gaze in the crystal ball and see the future. What the Internet is going to be in the future is what society makes it.
>
> — Bob Kahn
>
> [Computer Networking: A Top-Down Approach](https://teachyourselfcs.com//top-down.jpg)
>
>
>
> ### Databases
>
> It takes more work to self-learn about database systems than it does with most other topics. It’s a relatively new (i.e. post 1970s) field of study with strong commercial incentives for ideas to stay behind closed doors. Additionally, many potentially excellent textbook authors have preferred to join or start companies instead.
>
> Given the circumstances, we encourage self-learners to generally avoid textbooks and start with the Spring 2015 recording of CS 186, Joe Hellerstein’s databases course at Berkeley, and to progress to reading papers after.
>
> One paper particularly worth mentioning for new students is “Architecture of a Database System”, which uniquely provides a high-level view of how relational database management systems (RDBMS) work. This will serve as a useful skeleton for further study.
>
> Readings in Database Systems, better known as the databases “Red Book”, is a collection of papers compiled and edited by Peter Bailis, Joe Hellerstein and Michael Stonebreaker. For those who have progressed beyond the level of the CS 186 content, the Red Book should be your next stop.
>
> If you insist on using an introductory textbook, we suggest Database Management Systems by Ramakrishnan and Gehrke. For more advanced students, Jim Gray’s classic Transaction Processing: Concepts and Techniques is worthwhile, but we don’t encourage using this as a first resource.
>

> (continues in next comment)

u/phao · 0 pointsr/C_Programming

Care to elaborate on what you mean by functional program framework?

Are you talking about doing functional programming in C? I think there is a book on that. I think it's this one: http://www.amazon.com/Functional-C-International-Computer-Science/dp/0201419505/ - I'm not so sure though.

Are you talking about building framework/programs that are functional (as in robust, secure, ...)? If that is the case, then there is an interesting book named "C Interfaces and Implementations" going through several kinds of modules you might want to implement in C, and going through how you'd elaborate an interface and an implementation for them => http://www.amazon.com/Interfaces-Implementations-Techniques-Creating-Reusable/dp/0201498413/. This book covers the sort of thing that I believe you should be studying after learning the overall language syntax and semantics, how to combine features of C to solve not so trivial algorithmic problems, and so forth. In summary, it talks about modules design (both interfaces and implementations) in C.

There are more books here, like those listed in here http://www.iso-9899.info/wiki/Books. You can also check some more learning resources here http://www.iso-9899.info/wiki/Usenet and here http://www.iso-9899.info/wiki/Web_resources.

Still on my second interpretation of your functional program framework (because idk much about the first one besides that book "Functional C"), there are tons of very complicated systems built in C, like operating systems, server software, and so forth. And for many of them, there were books written. Here are some software for which you can find books on their design and implementation: