Future of the Linux Kernel

By Linus Torvalds, Helsinki University

Summary by Gordon Galligher

There was so much interest in this talk that the conference management made the "Client Tricks" session switch rooms, because its room was much larger. Once we were all seated in our new room, Linus began with a thank-you to all of the people who have been working on the OS and making it successful. He then went into a brief history of Linux and assured everyone that, by 1998, no one will have to worry about "Bill" anymore.

In 1991, Linux actually started out as a terminal emulator (it is the Emacs of terminal emulators). He added some Virtual Memory, some context switching, and voilá, he had UNIX! Actually, in March of 1994, version 1.0 was released, but it lacked good networking, which is one of the reasons it took so long. By March of 1995 version 1.2 was released, and the major change was that the networking really worked by then. In June of 1996, version 2.0 was released; it included multiple architecture support (i386 and DEC Alpha), SMP support and faster performance.

Linus's view of the future of Linux can be boiled down to two words: "world domination." He had a picture of Pinky and the Brain as the background for this slide, and he mentioned that he really wanted to see UNIX on the desktop. Many vendors are pushing their products as "servers" and "giving in" to other products for control of the desktop. Linus truly wants Linux to be a "fun" system, with games and other applications that people need in their work. "Sysadmin tools are boring. No one buys a system for administration tools. They buy it for the games!"

In Progress. The works already in progress for Linux include better Symmetric Multiprocessing (SMP) support on the Intel and SPARC platforms. He mentioned that it required finer granularity for the clocking and that the current system does not scale well on SMP platforms. There are also works to improve the filesystem performance, especially Network Filesystem (NFS) performance. It is written as a user-level application, and that does tend to slow it down as compared to other operating systems that have implemented NFS partially in kernel space. There is also an effort to make kernel threads more efficient via the clone() interface. Clone() is similar to the rfork() call from Plan-9 and sproc() on the SGI platform. As Linus said, "all the others are wrong: Linux is implementing them via clone() as God intended." Linus was a very humble presenter.

More Distant Future. In the more distant future, Linus plans to concentrate much more on performance issues of the kernel. Having sat through the SPARCLinux port discussion, I can see that this idea was probably helped along considerably by pushing from David Miller (the person who performed the main kernel port of Linux to the SPARC). One way to implement that is by having "0-copy devices" so that the kernel is not wasting time copying data back and forth from user to kernel space.

Clone: Kernel Threads. Linus spent a considerable amount of his time discussing the clone() interface for threads, and it generated the most amount of discussion. The main difference between clone() and the way "everyone else" does it is that there is no longer a "thread" vs. "process" dichotomy. Instead of there being a hard and fast wall separating threads of different processes (namely, the process itself), the clone() approach has more importance put on the "context" of the thread. Therefore, threads of different processes will be able to communicate and share execution state (the same virtual memory, file descriptors, signal state, etc.). This lends itself to true lightweight threads and is a good performance booster for things such as threaded execve() for Web-based services.

After a few questions regarding this novel approach, Linus capitulated and stated that perhaps sharing of file descriptors may not be a good idea (because someone else could close a descriptor and it ends up closing yours). However, having threads that share part of their information, such as the virtual memory space but not the descriptors, is a good thing and is something that cannot be done with the existing thread models.

Realtime Features. Linus mentioned that there are a couple of plans to give both "soft" and "hard" realtime support to the Linux kernel. The soft realtime consists of memory locking, signal extensions, and scheduling issues. This is the "easy" realtime to implement, and it is nearly done. The more difficult one is the hard realtime that implements guaranteed latencies among all the other aspects of soft realtime. A member of the audience mentioned that there is a patch available that purports to supply hard realtime to the Linux kernel from the University of Mexico Tech.

Existing/Future Ports. The list of stable and "integrated" ports of Linux include the Intel 80x86 platform, the DEC Alpha, and the Sun SPARC. There are a number of other "unintegrated" ports available for platforms such as the MIPS, the PowerPC, Motorola's 68k architecture, and the Acorn ARM. The unintegrated ports are working versions of Linux, but their changes have not made it into the main source tree that Linus maintains. He mentioned that they would be integrated within a few months. As a result of the DEC Alpha port, Linux is already a 64-bit clean operating system. He then asked the audience, "Would you trust Microsoft or SCO/HP with the P7? They are not even out of the gate for a 64-bit clean OS."

Compatibility Issues. Through the use of the "Wine" program, Linux can run a number of Microsoft Windows programs. Linus mentioned that Microsoft Word runs on Linux, and the only drawback is that it cannot print directly from the application. This should soon be fixed. Once Wine is in more widespread distribution, many of the Microsoft applications can run on Linux. This could give Linux something that has been lacking from UNIX systems from the beginning: desktop applications. There is also support for running OSF/1 applications on the DEC Alpha port of Linux, as well as the SunOS (and some Solaris) applications on the SPARCLinux port.

Copyright/Trademark Issues. A member of the audience asked about the recent trademark dispute over the name Linux. Linus mentioned that there was ongoing work to try to invalidate the trademark, which was registered in 1995 using a "first use date" of 1994-well after Linux was in widespread use. Linus further mentioned that if the person wanted to continue to claim ownership of the trademark, he would lose in court. Another audience member mentioned that interested people could check out the Web page at: http://www.linuxmall.com/announce.html.

Overall, this was a very well attended and interesting session. Linus used humor quite a bit in his presentation, and the number of people who clamored to attend was astounding. Linus is leaving Helsinki University and moving to Cupertino, CA; but he mentioned that other than being "off the air" for a month, his role of updating and managing the development of Linux should not be impacted.

Originally published in ;login: Vol. 22, No.2, April 1997.

Copyright 1997