Author: | Ronald J. Leach | ISBN: | 9780985368562 |
Publisher: | AfterMath | Publication: | August 25, 2012 |
Imprint: | Language: | English |
Author: | Ronald J. Leach |
ISBN: | 9780985368562 |
Publisher: | AfterMath |
Publication: | August 25, 2012 |
Imprint: | |
Language: | English |
The first edition of Advanced Topics in UNIX was originally published by John Wiley in 1993 when it was named an Alternate Main Selection of the Newbridge Book Club. That book stayed in print for thirteen years, an eternity in the computing literature. Due to changes in the publishing industry, this edition of the book is only available electronically.
I was motivated to revise the book because of the increased popularity of several variants of UNIX and on what I learned from reviews of the previous published version of the book. Linux has become increasingly popular, due in no little part to it being essential to the open source community and because it serves as the basis of the operating system for the Google Android phone. The Mach operating system, originally developed at Carnegie Mellon University, is the basis for Darwin, the underlying operating system used to control Apple Macintosh computers. Solaris, originally developed by Sun Microsystems, is now considered by Oracle to be the top enterprise operating system and also claimed to have been especially built for cloud computing. It is easy to run versions of both Linux and Solaris concurrently on Windows PCs. Fedora (Red Hat), Debian, Ubuntu, and SUSE are other variants.
It was clear to me that a revision of the book was necessary. My experience with multiple versions of UNIX-like operating systems showed me that end users, application programmers, system programmers, and system administrators often had difficulties in making programs and utilities work well across different UNIX variants, due to differences in file system organization, different locations of critical configuration files, and important, yet subtle, differences in how system calls operate. There are also issues with different utilities and application programs, many of which are either not available on all UNIX versions, or else require a substantial effort to even get them to install properly.
I have chosen an approach guided by my own research and experience in the efficient development of large, high-quality, software systems in both UNIX and non-UNIX environments over much of the last twenty-five years. Much of my research in this area is based on the application of systematic approaches to software reuse as part of the software development process.
What is the relevance of software reuse to a book on UNIX? A huge percentage of current software applications for UNIX and other operating systems are built using existing software components that are either partially or entirely reused. Older software components necessarily have been built using older technology. Hence, they are likely to use some of the older system calls as well as newly created calls. You clearly need to be able to understand the differences in different generations of system calls and their behavior if you are redeploying existing software components. That is, after all, the reason for learning system calls if you are an applications programmer. Of course, the same holds true for systems-level programming, especially kernel-level programming, since operating systems are rarely written from scratch.
As a result of the importance of reusing software, especially in a UNIX environment, we will discuss both newer and older – what Marc Rochkind calls obsolete – system calls. The idea is for you to understand enough about system calls and what types of interactions can occur between them, to be able to, at the very least, write the kind of functions known as wrappers, glueware, or bridgeware. which are functions coded with the sole purpose of allowing different program modules and system components to communicate, passing all required data as necessary.
The first edition of Advanced Topics in UNIX was originally published by John Wiley in 1993 when it was named an Alternate Main Selection of the Newbridge Book Club. That book stayed in print for thirteen years, an eternity in the computing literature. Due to changes in the publishing industry, this edition of the book is only available electronically.
I was motivated to revise the book because of the increased popularity of several variants of UNIX and on what I learned from reviews of the previous published version of the book. Linux has become increasingly popular, due in no little part to it being essential to the open source community and because it serves as the basis of the operating system for the Google Android phone. The Mach operating system, originally developed at Carnegie Mellon University, is the basis for Darwin, the underlying operating system used to control Apple Macintosh computers. Solaris, originally developed by Sun Microsystems, is now considered by Oracle to be the top enterprise operating system and also claimed to have been especially built for cloud computing. It is easy to run versions of both Linux and Solaris concurrently on Windows PCs. Fedora (Red Hat), Debian, Ubuntu, and SUSE are other variants.
It was clear to me that a revision of the book was necessary. My experience with multiple versions of UNIX-like operating systems showed me that end users, application programmers, system programmers, and system administrators often had difficulties in making programs and utilities work well across different UNIX variants, due to differences in file system organization, different locations of critical configuration files, and important, yet subtle, differences in how system calls operate. There are also issues with different utilities and application programs, many of which are either not available on all UNIX versions, or else require a substantial effort to even get them to install properly.
I have chosen an approach guided by my own research and experience in the efficient development of large, high-quality, software systems in both UNIX and non-UNIX environments over much of the last twenty-five years. Much of my research in this area is based on the application of systematic approaches to software reuse as part of the software development process.
What is the relevance of software reuse to a book on UNIX? A huge percentage of current software applications for UNIX and other operating systems are built using existing software components that are either partially or entirely reused. Older software components necessarily have been built using older technology. Hence, they are likely to use some of the older system calls as well as newly created calls. You clearly need to be able to understand the differences in different generations of system calls and their behavior if you are redeploying existing software components. That is, after all, the reason for learning system calls if you are an applications programmer. Of course, the same holds true for systems-level programming, especially kernel-level programming, since operating systems are rarely written from scratch.
As a result of the importance of reusing software, especially in a UNIX environment, we will discuss both newer and older – what Marc Rochkind calls obsolete – system calls. The idea is for you to understand enough about system calls and what types of interactions can occur between them, to be able to, at the very least, write the kind of functions known as wrappers, glueware, or bridgeware. which are functions coded with the sole purpose of allowing different program modules and system components to communicate, passing all required data as necessary.