Linked by Ben Hughes on Tue 5th Oct 2004 19:16 UTC
Linux GNU/Linux, and all other operating systems, are based around a kernel which controls hardware access and maximizes CPU and RAM efficiency by controlling when and how much programs get to use. The difference between Linux and most other operating systems (closed source ones at least BSD and other open source OS's you can do this with) is that you can compile the kernel to meet your needs.
Permalink for comment
To read all comments associated with this story, please click here.
@blixel
by hac on Wed 6th Oct 2004 01:36 UTC

Google can point you to answers to your questions. In general, if you enable some feature that isn't used by any program that you run, then you won't notice any change.

When Unix was first developed, AT&T was forbidden by an antitrust agreement from extending its telephone monopoly into the computer business. Telephone money could not be used to fund non-telephone businesses. By making Unix available for others to use under reasonable terms, it avoided the monopoly control issues. The University of California at Berkeley quickly extended Unix in many ways, adding networking and other features, including sockets as an IPC mechanism.

The breakup of AT&T into the Baby Bells freed the remaining AT&T core to go into the computer business. Rather than using the BSD extensions to early Unix, AT&T reinvented the wheel, and did it differently. This AT&T commercial Unix branch eventually became System V.

For every feature that wasn't in the research editions of Unix, there is usually a BSD way to do it and a SysV way to do it. SysV uses semaphores, message queues, and shared memory to do IPC, where BSD uses sockets. Scientific and engineering users had jumped on BSD early, so many programs were written to use BSD features. AT&T was more successful pushing System V to business users, who came to Unix later.

Sun switched from a BSD base to a System V base, but included a BSD compatibility layer, since all of their customers were running software written for BSD. Most BSD implementations added System V compatibility, as well. Linux is largely POSIX, which tends to follow BSD, but offers SysV as an option.

You need SysV IPC if you run a program that needs it. Complaints about shared memory are a common symptom. Including it makes the kernel larger, which is not a problem for most users. It is a problem for embedded systems, which is why SysV IPC is an option.