Abstract
This book presents UNIX as a practical case of operating systems for the reader to understand and master deeply and tangibly the theory and algorithms in operating systems. It gives discussions and studies on the hierarchical structure, principles, applications, shells, development, and management of the UNIX operation system multi-dimensionally, systematically and from the elementary to the profound. It brings readers to go into the inside of the UNIX operating system and lets them understand clearly what and how UNIX operating system functions. This book consists of 11 chapters. The first two chapters discuss the background of UNIX operating system (OS), and give a whole picture of what UNIX OS looks like and the evolution of UNIX. Chapter 3 focuses on the editors that will be used frequently by UNIX users, no matter who are regular users or seasoned programmers. Chapters 4, 5, 6, and 7 concentrate on the services of the UNIX kernel. Chapter 4 zooms in the process management, which is usually hidden from the final users. Chapter 5 is to discuss the UNIX memory management, which cooperates with the process management to accomplish the processes' concurrently running. Chapter 6 introduces the UNIX file management, which is involved almost in every service that the UNIX kernel provides to the users. Chapter 6, however, for UNIX users, is fundamentally useful to understand how UNIX works. Chapter 7 explores UNIX I/O, I/O redirection and piping. As UNIX treats its hardware devices as special files, this mechanism brings a whole different concept on UNIX input and output devices. I/O redirection and piping are two useful tools that can be used to deduce different commands to control the terminals through UNIX system calls. UNIX has almost as many shells as versions of the UNIX operating system. Chapter 8 introduces some types of shells, shell evolution, and some common concepts in UNIX shells. As there are so many kinds of shells, it vi Preface Preface vii mers and also confine their imagination and creativity. This tendency can also affect the ability of system development newcomers to develop an intact software system that can handle software as well as hardware by restricting the field of vision to some detached modules or applications so as to result in software maintenance costly and complicated. Further, just understanding the theory of operating systems, readers cannot image and understand well how the operating system works. With UNIX as a real case, readers can map the abstract algorithms, mechanisms and strategies of operating system theory into the real modules, functions and programs of UNIX implementation one-to-one. The abstract theory can be exemplified. In this way, as the promising programmers, readers can understand well and master these algorithms and mechanisms, practice them in their own development, and stimulate novel algorithms and mechanisms that may be more effective and efficient to their own context. It seems as if a repetition of the old tale when considering the discussion on UNIX, which, all in all, reached its heyday around 1980s. In the latest two decades, however, due to commercial purposes and activities, there are no other operating systems like UNIX, which is so thoroughly open for the academic community to learn and do research. In addition, there are plenty of references about UNIX that have been published, but most of them were originally published around 1980s. For the recent promising programmers, the published classics may be somewhat obscure because of the sparse context that might not be necessary for readers in those days but can be unfamiliar to nowadays readers. As the well-known rapid development of computer hardware in the latest decades, computer architecture and structure have made a big change. This change has also wielded a deep influence on the theories and concepts of computer, which makes the difficulty for recent readers to understand well descriptions and expressions in the published UNIX classics, and to map them properly into practical cases. It is possible to build an obstacle for readers to learn from them. Otherwise, for the operating system construction, which belongs to software developments but resides the one of the most exciting and integrated of software development, it would be a pity and defect if losing an operational means. Fortunately, this means can be gained by doing research on UNIX. It is taken that UNIX has its own philosophy and several items in the philosophy are written in different references. If having the right, we can say that the most important one should be the UNIX programmers' dedication and passion to their work. UNIX is also deemed to a programmer's OS. UNIX programmers have done a wonderful work just as for tackling a necessary affair, from which others else really benefit. It is critical for the academic community. UNIX benefited also from those days. If AT&T, at that time, could market computer products without a 1956 Consent Decree signed with the Federal Government, and if Bell Laboratories did not withdraw Ken Thompson and others from the MULTICS project, and if Professor Robert S. Fabry of the viii Preface University of California at Berkeley did not contact Ken Thompson at the Symposium on Operating Systems Principles at Purdue University in November 1973, we would have a totally different story about UNIX. It needs the open and free soil to breed an academic activity. The more relieved the outside environment is, the more natural the academic activity develops within the environment. UNIX was destined for being flourishing in its day. Even though being just observers on this period of history, the authors of this book are impressed by the passion and concentration that UNIX developers had in the day. During five years of teaching UNIX in their campuses, the authors realized that if this fantastic piece of history was not introduced to more readers, it would be a pity for authors as well as readers. In this high-technology and high-material-civilization age, UNIX development process can give readers some new inspiration-a glowing motivation from inside to accomplish a meaningful work. Preface ix of operating systems and the underlying hardware parts. For real developers and programmers, it may take a big risk to sit on a seemingly-transparent but unfamiliar system to do their developments-finally they may encounter some bugs that they cannot tackle. They have to experience something that can let them understand what really make the construction of an operating system, what the kernel of an operating system does for users, and how algorithms and mechanisms in the theory of operating systems are implemented. Even though the disassembled UNIX cannot tell all the story of a well-designed modern or future operating system, it can give the mapping or clues to different functions and services, which can be treated as an anatomy lecture of a promising surgeon. In other words, a well-designed operating system may be daunting for a promising developer, which is complicated and confused. The simplicity and clarity of UNIX can help readers walk out of the swamp and sort out the confusion, and lead them to face and tackle more sophisticated problems. Knowledge needs to renew and information needs to update. The updating includes the expression of a convincing, successful and classical process in a proper, timely and new way. Maybe the UNIX story is old, but it can give different inspirations to people in different ages, which is still developing. The authors hope the developing can be reflected in this book. One of the targets of this book is to let the UNIX philosophy propagate and carry on. Let more readers comprehend this philosophy's results-the fast development, maintainability and scalability of an operating system. The authors also want to present readers (especially, programmers) two aspects of a whole operating system and any one of its subsystems, in other words, to give not only the inside implementation process, which is viewed by the system or application programmers, but also the outside application performance, which is usually felt by the end users. In this way, readers cannot only keep the view of the system constructors but also be considerate of the end users when developing their systems. During development, a system can benefit from that its developers can consider more for its end users. For readers, it is easy to enter the learning from user interfaces of UNIX operating systems since they have usually had the experience of using one of operating systems in their daily works or lives. Thus, in this book, we take this strategy: when starting one topic, we present it from its user interface, and then go into the kernel with the system calls and lower-level algorithms if possible. In this way, readers can be brought from a familiar environment into elusive and deep techniques. To describe algorithms, we try to use common English language rather than some computer language, such as C or assembly language. The primary x Preface reason is: we try to make algorithms more readable and help readers save their time and effort. For a programmer, it is often time-consuming to read some code that is written by others. This book is written for the wide groups of readers who want to master the professional knowledge of operating systems through a real and opensource case. Its main readers include graduates, senior undergraduates and teachers of computer and software majors, and potential researchers on applicable computing and engineering modeling. The readers can also be ones who maybe have some or have not much knowledge related to Computer Science and Technology and Software Engineering, but have a strong interest in these fields and want to get into them quickly, acquire some useful and important knowledge and reach an advanced level in the relevant fields after learning. This book can help readers construct, not...
References (169)
- Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Cooke D, Urvan J, Hailton S (1999) UNIX and beyond: An interview with Ken Thompson. Computer 32(5): 58 -64
- German DM, Penta MD, Davies J (2010) Understanding and auditing the licensing of open source software distributions. IEEE 18th International Conference on Program Comprehension, Braga, Minho Portugal, June 2010: pp 84 -93
- Jespersen H (1995) POSIX retrospective. ACM, StandardView 3(1): 2 -10
- Katzan H Jr (1970) Operating system architecture. AFIPS: Spring Joint Computer Conference, Atlantic City, New Jersey, 5 -7 May 1970: pp109 -118
- Kim T, Shin G, Hong E (1999) Experience with porting a UNIX version case tool to the corresponding Java version. APSEC'99: IEEE sixth Asia-Pacific software engineering conference, Takamatsu, December 1999: pp 622 -629
- Lawrence DC (1998) Internetnews server: Inside an open-source project. IEEE Internet Comput 2(5): 49 -52
- Mann D (1992) UNIX and the Am29000 microprocessor. IEEE Micro 12(1): 23 -31
- Martin VC (1995) There can be only one! A summary of the UNIX standardization movement. ACM, Crossroads 1(3): 9 -11
- McKusick MK (1999) Twenty years of Berkeley Unix: from AT&T-owned to freely redistributable. LINUXjunkies.org. http://www.linuxjunkies.org/articles/ kirkmck.pdf. Accessed 20 Aug 2010
- McKusick MK, Neville-Neil GV (2005) The design and implementation of FreeBSD operating system. Addison-Wesley, Boston References Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Badger L, Sterne DF, Sherman DL et al (1995) Practical domain and type enforce- ment for UNIX. SP'95: The 1995 IEEE Symposium on Security and Privacy, Oakland, CA, 8 -10 May 1995, pp 66 -77
- Berkman J (1995) A user-friendly menu interface for UNIX. The 23rd Annual ACM SIGUCCS Conference on User Services: Winning the Networking Game, St. Louis, Missouri, US. ACM, 1995, pp 51 -54
- Braams J (1995) Batch class process scheduler for UNIX SVR4. SIGMETER- ICS'95/PERFORMANCE'95: The 1995 ACM SIGMETERICS Joint Interna- tional Conference on Measurement and Modeling of Computer Systems, Ottawa, Ontario, Canada. ACM, pp 301 -302
- Carson SD, Setia S (1992) Analysis of the periodic update write policy for disk cache. IEEE Software Eng 18(1): 44 -54
- Heindel LE, Kasten VA (1995) Real-time UNIX application filestores. RTAS'95: First IEEE Real-time Technology and Applications Symposium, Chicago, Illi- nois, 15 -17 May 1995, pp 44 -45
- Isaak J (1990) The history of POSIX: a study of the standards process. Computer 23(7): 89 -92
- Isaak J, Lohnson L (1998) POSIX/UNIX standards: Foundation for 21st century growth. IEEE Micro 18(4): 88, 87
- Jespersen H (1995) POSIX retrospective. ACM, StandardView 3(1): 2 -10
- McKusick MK (1999) Twenty years of Berkeley Unix: From AT&T-owned to freely redistributable. LINUXjunkies.org. http://www.linuxjunkies.org/articles/ kirkmck.pdf. Accessed 20 Aug 2010
- McKusick MK, Neville-Neil GV (2005) The design and implementation of FreeBSD operating system. Addison-Wesley, Boston
- Mohay G, Zellers J (1997) Kernel and shell based applications integrity assurance. ACSAC'97: The IEEE 13th Annual Computer Security Applications Confer- ence, San Diego, CA, 8 -12, December 1997, pp 34 -43
- Nelson BL, Keezer WS, Schuppe TF (1996) A hybrid simulation-queuing module for modeling UNIX I/O in performance analysis. WSC'96: The 1996 IEEE Winter Simulation Conference, 8 -11 December 1996, pp 1238 -1246
- Nguyen HQ, Bac C, Bernard G (1997) Integrating QoS management in a micro- kernel based UNIX operating system. The 23rd IEEE EUROMICRO Conference '97 new Frontiers of Information Technology, Budapest, Hungary, 1 -4 Septem- ber 1997, pp 371 -378
- Quarterman JS, Silberschatz A, Peterson JL (1985) Operating systems concepts, 2nd edn. Addison-Wesley, Reading, Massachusetts
- Rashid R, Tevanian A, Michael JR et al (1988) Machine-independent virtual mem- ory management for paged uniprocessor and multiprocessor architectures. IEEE Comput 37(8): 896 -908
- Ritchie DM, Thompson K (1974) The Unix time-sharing system. Commun ACM 17 (7): 365 -375
- References Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Baecker R (1986) Design principles for the enhanced presentation of computer pro- gram source text. CHI'86: Conference on Human Factors in Computer Systems, Boston, Massachusetts, US, 13 -17 April 1986, ACM: 51 -58
- Douglas SA, Moran TP (1983) Learning text editor semantics by analogy. CHI'83: Conference on Human Factors in Computer Systems, Boston, Massachusetts, December 1983, ACM: 207 -211
- Makatani LH, Egan DE, Ruedisueli LW et al (1986) TNT: a talking tutor 'N' trainer for teaching the use of interactive computer systems. CHI'86: Conference on Human Factors in Computer Systems, Boston, Massachusetts, 13 -17 April 1986, ACM: 29 -34
- McKusick MK (1999) Twenty years of Berkeley Unix: from AT&T-owned to freely redistributable. LINUXjunkies.org. http://www.linuxjunkies.org/articles/ kirkmck.pdf. Accessed 20 Aug 2010
- Pelaprat E, Shapiro RB (2002) User activity histories. CHI'02: Conference on Hu- man Factors in Computer Systems, Minneapolis, Minnesota, April 2002, ACM: 876 -877
- Quarterman JS, Silberschatz A, Peterson JL (1985) Operating systems concepts, 2nd edn. Addison-Wesley, Reading, Massachusetts
- Ritchie DM, Thompson K (1974) The Unix time-sharing system. Commun ACM 17(7): 365 -375
- Rosson MB (1985) Effects of experience on learning, using, and evaluating a text editor. Human Factors 26: 463 -475
- Sarwar SM, Koretesky R, Sarwar SA (2006) UNIX: the textbook, 2nd edn. China Machine Press, Beijing
- Stallings W (1998) Operating systems: internals and design principles 3rd edn. Prentice Hall, Upper Saddle River, New Jersey
- Walker N, Olson JR (1988) Designing keybindings to be easy to learn and resistant to forgetting even when the set of commands is large. CHI'88: Conference on Human Factors in Computer Systems, Washington, D.C., US, May 1988, ACM: 201 -206
- Ward W (2003) Getting started with vi. Linux Journal 2003 (114): 5
- Wilder D (1997) At last, an X-based vi. Linux Journal 1997(34): Article No. 6 References
- Anderson TE, Bershad BN, Lazowska ED et al (1992) Scheduler activations: Ef- fective kernel support for the user-level management of parallelism. ACM T Comput Syst 10(1): 53 -79
- Andrews GR (1983) Concepts and notations for concurrent programming. ACM Comput Surv 15(1): 3 -43
- Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Braams J (1995) Batch class process scheduler for UNIX SVR4. SIGMETER- ICS'95/PERFORMANCE'95: The 1995 ACM SIGMETERICS joint interna- tional conference on measurement and modeling of computer systems, Ottawa, Ontario. ACM, pp 301 -302
- Cmelik RF, Gehani NH, Roome WD (1989) Experience with multiple processor versions of concurrent C. IEEE T Software Eng 15(3): 335 -344
- DeBenedictis EP, Johnson SC (1993) Extending UNIX for scalable computing. Computer 26(11): 43 -53
- Denning PJ (1983) The working set model for program behavior. Commun ACM 26(1): 43 -48
- Devarakonda MV, Iyer PK (1989) Predictability of process resource usage: A measurement-based study on UNIX. IEEE T Software Eng 15(12): 1579 -1586
- Dijkstra EW (1968) Cooperating sequential processes, in programming languages. ACM, New York
- Dijkstra EW (1968) The structure of the "THE"-multiprogramming system. Com- mun ACM 11(5): 341 -346
- Forrest S, Hofmeyr SA, Somayaji A et al (1996) A sense of self for UNIX processes. SP'96: The 1996 IEEE Symposium on Security and Privacy, Oakland, CA, 6 -8 May 1996, pp 120 -128
- Kosaraju SR (1973) Limitations of Dijkstra's semaphore primitives and Petri nets. SOSP'73: The Fourth ACM Symposium on Operating System Principles, ACM, pp 122 -126
- Lauesen S (1975) A large semaphore based operating system. Commun ACM 18(7): 377 -389
- Leffler SJ, Fabry RS, Joy WN (1983) A 4.2BSD interprocess communication primer. UNIX Programmer's Manual, 4.2 Berkeley Software Distribution. Computer Systems Research Group, Depat. of Electrical Engineering and Computer Sci- ence, Univ. of California, Berkeley, Aug 1983
- McKusick MK (1999) Twenty years of Berkeley UNIX: From AT&T-owned to freely redistributable. LINUXjunkies.org. http://www.linuxjunkies.org/articles/ kirkmck.pdf. Accessed 20 Aug 2010
- McKusick MK, Neville-Neil GV (2005) The design and implementation of FreeBSD operating system. Addison-Wesley, Boston
- Mohay G, Zellers J (1997) Kernel and shell based applications integrity assurance. ACSAC'97: The IEEE 13th Annual Computer Security Applications Confer- ence, 1997, pp 34 -43
- Peachey DR, Bunt RB, Williamson CL et al (1984) An experimental investigation of scheduling strategies for UNIX. SIGMETRICS: 1984 ACM SIGMETRICS Conference on Measurement and Modeling of Computer Systems, pp 158 -166
- Quarterman JS, Silberschatz A, Peterson JL (1985) Operating systems concepts, 2nd edn. Addison-Wesley, Reading, Massachusetts
- Ritchie DM, Thompson K (1974) The Unix time-sharing system. Commun ACM 17 (7): 365 -375
- Sarwar SM, Koretesky R, Sarwar SA (2006) UNIX: the textbook, 2nd edn. China Machine Press, Beijing
- Sielski KL (1992) Implementing Ada tasking in a multiprocessing, multithreaded UNIX environment. The Conference on TRI-Ada'92, Orlando, Florida. ACM, 512 -517
- Stallings W (1998) Operating systems: internals and design principles, 3rd edn. Prentice Hall, Upper Saddle River, New Jersey
- Thompson K (1978) UNIX implementation. Bell Syst Tech J 57(6) Part 2: 1931 - 1946
- Zhou Y (2009) UNIX process, merging unified process and extreme programming to benefit software development practice. 2009 IEEE First International Workshop on Education Technology and Computer Science, Wuhan, Hubei, China, 7 -8 March 2009, pp 699 -702, doi 10.1109/ETCS.2009.690
- References Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Bartels G, Karlin A, Anderson D et al (1999) Potentials and limitations of fault- based Markov prefetching for virtual memory pages. SIGMETRICS'99: The 1999 ACM SIGMETRICS International Conference on Measurement and Mod- eling of Computer Systems, Atlanta, Georgia, June 1999: 206 -207
- Bays C (1977) A comparison of next-fit, first-fit, and best-fit. Commun ACM 20(3): 191 -192
- Belay LA, Nelson RA, Shedler GS (1969) An anomaly in space-time characteristics of certain programs running in a paging machine. Commun ACM 12(6): 349 - 353
- Braams J (1995) Batch class process scheduler for UNIX SVR4. SIGMETER- ICS'95/PERFORMANCE'95: The 1995 ACM SIGMETERICS Joint Interna- tional Conference on Measurement and Modeling of Computer Systems, Ottawa, 1995, Canada. ACM, pp 301 -302
- Brawn BS, Gustavson FG, Mankin ES (1970) Sorting in a paging environment. Commun ACM 13(8): 483 -494
- Christensen C, Hause AD (1970) A multiprogramming, virtual memory system for a small computer. AFIPS'70 (spring): Spring Joint Computer Conference, Atlantic City, New Jersey, 5 -7 May 1970: pp 683 -690
- Cmelik RF, Gehani NH, Roome WD (1989) Experience with multiple processor versions of concurrent C. IEEE T Software Eng 15(3): 335 -344
- Denning PJ (1968) Thrashing: its causes and prevention. AFIPS'68 (Fall, part I): Fall Joint Computer Conference, part I, San Francisco, California, 9 -11 December 1968: pp 915 -922
- Denning PJ (1970) Virtual memory. ACM Compt Surv 2(3): 153 -189
- Denning PJ (1983) The working set model for program behavior. Commun ACM 26(1): 43 -48
- Iftode L, Blumrich M, Dubnicki C et al (1999) Shared virtual memory with au- tomatic update support. ICS'99: The 13th International Conference on Super- computing, Rhodes, Greece, May 1999, ACM: 175 -183
- McKusick MK, Neville-Neil GV (2005) The design and implementation of FreeBSD operating system. Addison-Wesley, Boston
- Midorikawa ET, Piantola RL, Cassettari HH (2008) On adaptive replacement based on LRU with working area restriction algorithm. ACM SIGOPS Operating Sys- tems Review 42(6): 81 -92
- Park Y, Scott R (1996) Virtual memory versus file interfaces for large, memory- intensive scientific applications. Supercomputing'96: The 1996 ACM/IEEE Con- ference on Supercomputing (CDROM), Pittsburgh, Pennsylvania, November 1996, IEEE computer society: Article No.: 53
- Peachey DR, Bunt RB, Williamson CL et al (1984) An experimental investiga- tion of scheduling strategies for UNIX. SIGMETRICS'84: ACM SIGMETRICS Conference on Measurement and Modeling of Computer Systems, August 1984, 12(3): pp 158 -166
- Quarterman JS, Silberschatz A, Peterson JL (1985) Operating systems concepts, 2nd edn. Addison-Wesley, Reading, Massachusetts
- Rashid R, Tevanian A, Michael JR et al (1988) Machine-independent virtual mem- ory management for paged uniprocessor and multiprocessor architectures. IEEE T Comput 37(8): 896 -908
- Ritchie DM, Thompson K (1974) The Unix time-sharing system. Commun ACM 17 (7): 365 -375
- Stallings W (1998) Operating systems: internals and design principles, 3rd edn. Prentice Hall, Upper Saddle River, New Jersey.
- Weizer N, Oppenheimer G (1969) Virtual memory management in a paging en- vironment. Spring Joint Computer Conference, ACM, Boston, Massachusetts, 14 -16 May 1969: pp 249 -256
- Ashley P, Vandenwauver M (1999) Using SESAME to implement role based access control in UNIX file systems. IEEE 8th International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises, Palo Alto, Califor- nia, 16 -18 June 1999, pp 141 -146
- Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Cai X, Gui Y, Johnson R (2009) Exploiting UNIX file-system races via algorith- mic complexity attacks. 2009 30th IEEE Symposium on Security and Privacy, Oakland, California, US, 17 -20 May 2009, pp 27 -41
- Floyd RA, Ellis CS (1989) Directory reference patterns in hierarchical file systems. IEEE T Knowl and Data En, 1(2): 238 -247
- Heindel LE, Kasten VA (1995) RTAS'95: Real-time UNIX application filestores. First IEEE real-time technology and applications symposium, Chicago, Illinois, 15 -17 May 1995, pp 44 -45
- Isaak J, Lohnson L (1998) POSIX/UNIX standards: foundation for 21st century growth. IEEE Micro 18(4): 88, 87
- Jonge W, Kaashoek MF, Hsieh WC (1993) The logical disk: a new approach to im- proving file systems. SOSP'93: The fourteenth ACM Symposium on Operating Systems Principles, Asheville, North Carolina, December 1993, pp 15 -28
- McKusick MK (1999) Twenty years of Berkeley Unix: from AT&T-owned to freely redistributable. LINUXjunkies.org. http://www.linuxjunkies.org/articles/ kirkmck.pdf. Accessed 20 Aug 2010
- McKusick MK, Neville-Neil GV (2005) The design and implementation of FreeBSD operating system. Addison-Wesley, Boston
- Mohay G, Zellers J (1997) Kernel and shell based applications integrity assurance. ACSAC'97: The IEEE 13th Annual Computer Security Applications Confer- ence, San Diego, 8 -12, December 1997, pp 34 -43
- Ousterhout JK, Costa HD, Harrison D et al (1985) A trace-driven analysis of the UNIX 4.2 BSD file system. SOSP'85: The Tenth ACM Symposium on Operating Systems Principles, Orcas Island, Washington, December 1985, pp 15 -24
- Quarterman JS, Silberschatz A, Peterson JL (1985) Operating systems concepts, 2nd edn. Addison-Wesley, Reading, Massachusetts
- Ritchie DM, Thompson K (1974) The UNIX time-sharing system. Commun ACM 17(7): 365 -375
- Sarwar SM, Koretesky R, Sarwar SA (2006) UNIX: The textbook, 2nd edn. China Machine Press, Beijing
- Stallings W (1998) Operating systems: internals and design principles 3rd edn. Prentice Hall, upper saddle River, New Jersey
- Thompson K (1978) UNIX implementation. Bell Sys Tech J 57(6) Part 2: 1931 - 1946 References
- Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Carson SD, Setia S (1992) Analysis of the periodic update write policy for disk cache. IEEE T Software Eng 18(1): 44 -54
- Heindel LE, Kasten VA (1995) Real-time UNIX application filestores. RTAS'95: First IEEE Real-time Technology and Applications Symposium, Chicago, Illi- nois, 15 -17 May 1995, pp 44 -45
- Isaak J, Lohnson L (1998) POSIX/UNIX standards: Foundation for 21st century growth. IEEE Micro 18(4): 88, 87
- Jespersen H (1995) POSIX retrospective. ACM, StandardView 3 (1): 2 -10
- McKusick MK, Neville-Neil GV (2005) The design and implementation of FreeBSD operating system. Addison-Wesley, Boston
- Nelson BL, Keezer WS, Schuppe TF (1996) A hybrid simulation-queuing module for modeling UNIX I/O in performance analysis. WSC'96: The 1996 IEEE Winter Simulation Conference, 8 -11 December 1996, pp 1238 -1246
- Quarterman JS, Silberschatz A, Peterson JL (1985) Operating systems concepts, 2nd edn. Addison-Wesley, Reading
- Ritchie DM, Thompson K (1974) The Unix time-sharing system. Commun ACM 17 (7): 365 -375
- Ritchie DM (1984) A stream input output system. AT&T Bell Lab Tech J, 63(8) Part 2: 1897 -1910
- Sarwar SM, Koretesky R, Sarwar SA (2006) UNIX: the textbook, 2nd edn. China Machine Press, Beijing
- Stallings W (1998) Operating systems: internals and design principles, 3rd edn. Prentice Hall, Upper Saddle River, New Jersey References Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Bourne SR (1978) The UNIX shell. T Bell Syst Tech J, 57(6) Part 2: pp 1971 -1990
- Bourne SR (1983) The UNIX system. Addison-Wesley, Reading, Massachusetts Joy WN (1980) An introduction to the C shell. UNIX Programmer's Manual, 4.2 Berkeley Software Distribution. Computer systems research group, Depat. of Electrical Engineering and Computer Science, Univ. of California, Berkeley, Aug 1980
- Korn D (1983) KSH -a shell programming language. USENIX Conference Proceed- ings, Toronto, Ontario, June 1983, pp 191 -202
- Miller RC, Myers BA (2000) Integrating a command shell into a web browser. 2000 USENIX Annual Technical Conference, San Diego, California, 18 -23 June 2000. http://www.usenix.org/events/usenix2000/general/generaltechnical. html. Ac- cessed 24 Sep 2009
- Mohay G, Zellers J (1997) Kernel and shell based applications integrity assurance. ACSAC'97: The IEEE 13th Annual Computer Security Applications Confer- ence, 1997, pp 34 -43
- Quarterman JS, Silberschatz A, Peterson JL (1985) Operating systems concepts, 2nd edn. Addison-Wesley, Reading, Massachusetts
- Ritchie DM, Thompson K (1974) The Unix time-sharing system. Commun ACM 17 (7): 365 -375
- Rosenblatt B, Robbins A (2002) Learning the Korn shell, 2nd edn. O'Reilly & Associates, Sebastopol
- Sarwar SM, Koretesky R, Sarwar SA (2006) UNIX: the textbook, 2nd edn. China Machine Press, Beijing References Bach MJ (2006) The design of the UNIX operating system. China Machine Press, Beijing
- Bourne SR (1978) The UNIX shell. Bell Syst Techn J, 57(6) Part 2: pp 1971 -1990
- Bourne SR (1983) The UNIX system. Addison-Wesley, Reading, Massachusetts Joy WN (1980) An introduction to the C shell. UNIX Programmer's Manual, 4.2 Berkeley Software Distribution. Computer Systems Research Group, Depat. of Electrical Engineering and Computer Science, Univ. of California, Berkeley, Aug 1980
- Korn D (1983) KSH -a shell programming language. USENIX Conference Proceed- ings, Toronto, Ontario, June 1983, pp 191 -202
- Miller RC, Myers BA (2000) Integrating a command shell into a web browser. 2000 USENIX Annual Technical Conference, San Diego, California, USA, 18 -23 June 2000. http://www.usenix.org/events/usenix2000/general/generaltechnical. html. Accessed 24 Sep 2009
- Mohay G, Zellers J (1997) Kernel and shell based applications integrity assurance. ACSAC'97: The IEEE 13th Annual Computer Security Applications Confer- ence, 1997, pp 34 -43
- Quarterman JS, Silberschatz A, Peterson JL (1985) Operating systems concepts, 2nd edn. Addison-Wesley, Reading, Massachusetts
- Ritchie DM, Thompson K (1974) The Unix time-sharing system. Commun ACM 17 (7): 365 -375
- Rosenblatt B, Robbins A (2002) Learning the Korn shell, 2nd edn. O'Reilly & Associates, Sebastopol
- Sarwar SM, Koretesky R, Sarwar SA (2006) UNIX: the textbook, 2nd edn. China Machine Press, Beijing
- Stallings W (1998) Operating systems: internals and design principles, 3rd edn. Prentice Hall, Upper Saddle River, New Jersey References
- Bourne SR (1978) The UNIX shell. Bell Syst Tech J 57(6) Part 2, pp 1971 -1990
- Bourne SR (1983) The UNIX system. Addison-Wesley, Reading, Massachusetts Joy WN (1980) An introduction to the C shell. UNIX Programmer's Manual, 4.2 Berkeley Software Distribution. Computer Systems Research Group, Depat. of Electrical Engineering and Computer Science, Univ. of California, Berkeley, Aug, 1980
- Korn D (1983) KSH -a shell programming language. USENIX Conference Proceed- ings, Toronto, Ontario, June 1983, pp 191 -202
- Rosenblatt B, Robbins A (2002) Learning the Korn shell, 2nd edn. O'Reilly & Associates, Sebastopol.
- Sarwar SM, Koretesky R, Sarwar SA (2006) UNIX: the textbook, 2nd edn. China Machine Press, Beijig References
- Borenstein N, Freed N (1993) MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for specifying and describing the format of Internet message bodies. RFC 1521.http://tools.ietf.org/html/rfc1521. Accessed 10 Oct 2010
- Cain B, Deering S, Kouvelas I et al (2002) Internet Group Management Protocol, Version 3. RFC 3376. http://tools.ietf.org/html/rfc3376. Accessed 10 Oct 2010
- Cerf V, Dalal Y (1974) Specification of Internet Transmission Control Program. RFC 675. http://tools.ietf.org/html/rfc675. Accessed 10 Oct 2010
- Comer DE (1998) Computer networks and Internets. Prentice Hall, Upper Saddle River, New Jersey
- Comer DE, Stevens DL (1998) Internetworking with TCP/IP vol III: Client-server programming and applications, windows sockets version. Prentice Hall, Upper Saddle River, New Jersey
- Conta A, Deering S, Gupta M (ed) (2006) Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification. RFC 4443. http://tools.ietf.org/html/rfc4443. Accessed 10 Oct 2010
- Crispin M (1988) Interactive mail access protocol, 2nd edn. RFC 1064. http://tools.ietf.org/html/rfc1064. Accessed 13 Oct 2010
- Crocker DH (1982) Standard for the format of ARPA Internet text messages. RFC 822. http://tools.ietf.org/html/rfc822. Accessed 13 Oct 2010
- Deering S (1989) Host Extensions for IP Multicasting. RFC 1112. http://tools. ietf.org/html/rfc1112. Accessed 10 Oct 2010
- Deering S, Hinden R (1998) Internet Protocol, Version 6 (IPv6) Specification. RFC 2460. http://tools.ietf.org/html/rfc2460. Accessed 10 Oct 2010
- Fenner W (1997) Internet Group Management Protocol, 2nd edn. RFC 2236. http://tools.ietf.org/html/rfc2236. Accessed 10 Oct 2010
- Finlayson R, Mann T, Mogul JC at el (1984) A Reverse Address Resolution Pro- tocol. RFC 903. http://tools.ietf.org/html/rfc903. Accessed 10 Oct 2010
- Holmgren S (1975) Network UNIX. RFC 681. http://tools.ietf.org/html/ rfc681. Accessed 10 Oct 2010
- Kantor B (1991) BSD rlogin. RFC 1282. http://tools.ietf.org/html/rfc1282. Ac- cessed 13 Oct 2010
- Kohler E, Handley M, Floyd S (2006) Datagram congestion control protocol (DCCP). RFC 4340. http://tools.ietf.org/html/rfc4340. Accessed 10 Oct 2010
- Ong L, Yoakum J (2002) An introduction to the stream control transmission pro- tocol (SCTP). RFC 3286. http://tools.ietf.org/html/rfc3286. Accessed 10 Oct 2010
- Plummer DC (1982) An Ethernet Address Resolution Protocol, or converting net- work protocol address to 48 bit Ethernet address for transmission on Ethernet hardware. RFC 826. http://tools.ietf.org/html/rfc826. Accessed 10 Oct 2010
- Postel JB (1980) User datagram protocol. RFC 768. http://tools.ietf.org/html /rfc768. Accessed 10 Oct 2010
- Postel JB (ed) (1981) Internet Protocol. RFC 791. http://tools.ietf.org/html /rfc791. Accessed 10 Oct 2010
- Postel JB (1981) Internet Control Message Protocol. RFC 792. http://tools. ietf.org/html/rfc792. Accessed 10 Oct 2010
- Postel JB (1981) Transmission Control Protocol. RFC 793. http://tools.ietf. org/html/rfc793. Accessed 10 Oct 2010
- Postel JB (1982) Simple Mail Transfer Protocol. RFC 821. http://tools.ietf. org/html/rfc821. Accessed 13 Oct 2010
- Postel JB, Peynolds JK (1983) Telnet Protocol specification. RFC 854. http: //tools.ietf.org/html/rfc854. Accessed 13 Oct 2010
- Postel JB, Reynolds JK (1985) File Transfer Protocol (FTP). RFC 959. http://tools. ietf.org/html/rfc959. Accessed 13 Oct 2010
- Reynolds JK (1984) Post Office Protocol. RFC 918. http://tools.ietf.org/html /rfc918. Accessed 13 Oct 2010
- Stevens WR (2002) TCP/IP illustrated, volume 1: The protocols. China Machine Press, Beijing
- Stevens WR (2002) TCP/IP illustrated, volume 3: TCP for transactions, HTTP, NNTP and UNIX domain protocols. China Machine Press, Beijing
- Stewart R (ed) (2007) Stream control transmission protocol. RFC 4960. http: //tools.ietf.org/html/rfc4960. Accessed 10 Oct 2010
- Wright GR, Stevens WR (2002) TCP/IP illustrated, volume 2: The implementa- tion. China Machine Press, Beijing
- Zimmerman D (1991) The finger user information protocol. RFC 1288. http: //tools.ietf.org/html/rfc1288. Accessed 13 Oct 2010