Chapter 1 Introduction

Total Page:16

File Type:pdf, Size:1020Kb

Chapter 1 Introduction Chapter 1 Introduction 1.0 Objectives 1.1 Introduction to Unix, Linux and GNU 1.1.1. What is Unix? 1.1.2. The GNU project and Free Software Foundation 1.1.3. What is Linux? 1.1.4. Linux Distributions 1.1.5. Understanding Differences between Windows & Linux 1.2 Duties of System Administrator 1.2.1. The Linux System Administrator 1.2.2. Installing and Configuring Servers 1.2.3. Installing and Configuring Application Software 1.2.4. Creating and Maintaining User Accounts 1.2.5. Backing Up and Restoring Files 1.2.6. Monitoring and Tuning Performance 1.2.7. Configuring a Secure System 1.2.8. Using Tools to Monitor Security 1.3 Summary 1.4 Review Questions 1.5 Bibliography, References and Further Reading 1.0 Objectives In this chapter, you discover what Linux is and how it relates to its inspiration, UNIX. What is the GNU project. This chapter also discusses the duties and responsibilities of Linux system administrator. 1.1 Introduction In recent years Linux has become a phenomenon. Major hardware vendors like IBM and Dell support Linux, and major software vendors like Oracle support their software running on Linux. Linux truly has become a viable operating system, especially in the server market. Linux owes its success to systems and applications that preceded it: UNIX and GNU software. 1.1.1 What is Unix? As a version of Unix, the history of Linux naturally begins with Unix. The story begins in the late 1960s, when a concerted effort to develop new operating system techniques occurred. In 1968, a consortium of researchers from General Electric, AT&T Bell Laboratories, and the Massachusetts Institute of Technology carried out a special operating system research project called MULTICS (the Multiplexed Information and Computing Service). MULTICS incorporated many new concepts in multitasking, file management, and user interaction. In 1969, Ken Thompson, Dennis Ritchie, and the researchers at AT&T Bell Laboratories developed the Unix operating system, incorporating many of the features of the MULTICS research project. They tailored the system for the needs of a research environment, designing it to run on minicomputers. From its inception, Unix was an affordable and efficient multiuser and multitasking operating system. They developed a new operating system, which was 1. Simple and elegant. 2. Written in the C programming language instead of in assembly code. 3. Able to recycle code. Throughout the next couple of decades the development of UNIX continued. More things became possible to do and more hardware and software vendors added support for UNIX to their products. UNIX was initially found only in very large environments with mainframes and minicomputers (note that a PC is a "micro" computer). You had to work at a university, for the government or for large financial corporations in order to get your hands on a UNIX system. But smaller computers were being developed, and by the end of the 80's, many people had home computers. By that time, there were several versions of UNIX available for the PC architecture, but none of them were truly free and more important: they were all terribly slow, so most people ran MS DOS or Windows 3.1 on their home PCs. Many UNIX-like systems are available commercially, such as IBM’s AIX, HP’s HP- UX, and Sun’s Solaris. Some have been made available for free, such as FreeBSD and Linux. Unix Philosophy The UNIX operating system, and hence Linux, encourages a certain programming style. Following are a few characteristics shared by typical UNIX programs and systems: Simplicity: Many of the most useful UNIX utilities are very simple and, as a result, small and easy to understand. KISS, “Keep It Small and Simple,” is a good technique to learn. Larger, more complex systems are guaranteed to contain larger, more complex bugs, and debugging is a chore that we’d all like to avoid. Focus: It’s often better to make a program perform one task well than to throw in every feature along with the kitchen sink. A program with “feature bloat” can be difficult to use and difficult to maintain. Programs with a single purpose are easier to improve as better algorithms or interfaces are developed. Reusable Components: Make the core of your application available as a library. Well-documented libraries with simple but flexible programming interfaces can help others to develop variations or apply the techniques to new application areas. Examples include the dbm database library, which is a suite of reusable functions rather than a single database management program. Filters: Many UNIX applications can be used as filters. That is, they transform their input and produce output. As you’ll see, UNIX provides facilities that allow quite complex applications to be developed from other UNIX programs by combining them in novel ways. Open File Formats: The more successful and popular UNIX programs use configuration files and data files that are plain ASCII text or XML. It enables users to use standard tools to change and search for configuration items and to develop new tools for performing new functions on the data files. A good example of this is the ctags source code cross-reference system, which records symbol location information as regular expressions suitable for use by searching programs. Flexibility: You can’t anticipate exactly how ingeniously users will use your program. Try to be as flexible as possible in your programming. Try to avoid arbitrary limits on field sizes or number of records. If you can, write the program so that it’s network-aware and able to run across a network as well as on a local machine. Never assume that you know everything that the user might want to do. 1.1.2 The GNU Project and Free Software Foundation In the early 1980s, AT&T began to recognize the commercial value of Unix. Consequently, they asserted proprietary rights to it and began charging a substantial license fee. Many who had contributed code to Unix believed that AT&T had unfairly appropriated their contributions. Not content merely to whine, MIT researcher Richard Stallman launched the GNU (GNU is not Unix) project, which focused on creating a Unix-like operating system that could be freely distributed. As a vehicle in support of the GNU, Stallman and others created the Free Software Foundation (FSF) in 1984. The GNU Project has already provided the software community with many applications that closely mimic those found on UNIX systems. All these programs, so-called GNU software, are distributed under the terms of the GNU General Public License (GPL). The FSF promotes free software, but free software is not necessarily cost free software. The FSF intends the word free in the sense of freedom. Free software is software with which you can do the following: 1. Use for any purpose. 2. Study to learn how it works, and adapt to meet your needs. 3. Copy and redistribute. 4. Distribute as part of an improved software system. As a practical matter, these freedoms require access to the software’s source code, which is why some refer to Open Source Software (OSS), rather than free software. The Apache Web server and Linux are, in the opinion of many, the most significant OSS products created to date. A few major examples of software from the GNU Project distributed under the GPL follow: GCC: The GNU Compiler Collection, containing the GNU C compiler G++: A C++ compiler, included as part of GCC GDB: A source code–level debugger GNU make: A version of UNIX make Bison: A parser generator compatible with UNIX yacc bash: A command shell GNU Emacs: A text editor and environment Many other packages have been developed and released using free software principles and the GPL, including spreadsheets, source code control tools, compilers and interpreters, Internet tools, graphical image manipulation tools such as the Gimp, and two complete object-based environments: GNOME and KDE. 1.1.3 What is Linux? As you may already know, Linux is a freely distributed implementation of a UNIX-like kernel, the low-level core of an operating system. Because Linux takes the UNIX system as its inspiration, Linux and UNIX programs are very similar. In fact, almost all programs written for UNIX can be compiled and run on Linux. Also, some commercial applications sold for commercial versions of UNIX can run unchanged in binary form on Linux systems. Linux was developed in the early 1990s by Linus Torvalds at the University of Helsinki, with the help of UNIX programmers from across the Internet. It began as a hobby inspired by Andy Tanenbaum’s Minix, a small UNIX-like system, but has grown to become a complete system in its own right. The intention is that the Linux kernel will not incorporate proprietary code but will contain nothing but freely distributable code. Linux is a fast and stable open source operating system for personal computers (PCs) and workstations that features professional-level Internet services, extensive development tools, fully functional graphical user interfaces (GUIs), and a massive number of applications ranging from office suites to multimedia applications. As an operating system, Linux performs many of the same functions as Unix, Macintosh, Windows, and Windows NT. However, Linux is distinguished by its power and flexibility, along with being freely available. Most PC operating systems, such as Windows, began their development within the confines of small, restricted PCs, which have only recently become more versatile machines. Such operating systems are constantly being upgraded to keep up with the ever- changing capabilities of PC hardware. Linux, on the other hand, was developed in a different context.
Recommended publications
  • Oracle® Linux 7 Release Notes for Oracle Linux 7.2
    Oracle® Linux 7 Release Notes for Oracle Linux 7.2 E67200-22 March 2021 Oracle Legal Notices Copyright © 2015, 2021 Oracle and/or its affiliates. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial computer software" or "commercial computer software documentation" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, reproduction, duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other Oracle data, is subject to the rights and limitations specified in the license contained in the applicable contract.
    [Show full text]
  • The Multics System, 1975
    Honeywell The Multics System O 1975,1976,Honeywell Information Systems Inc. File No.:lLll - -- - ecure A Unique Business Problem-SolvingTool Here is a computer techniques are available to system that enables data all users automatically processing users to control through the Multics operating and distribute easily accessi- supervisor. ble computer power. The Because it is a unique Honeywell Multics System combination of advanced represents an advanced computing theory and out- approach to making the com- standing computer hardware, puter an integral, thoroughly Multics can provide an infor- reliable part of a company's mation service system more operation. advanced than any other yet The Multics System available. replaces many of the proce- Honeywell offers, as dures limiting conventional part of its advanced Series 60 systems and sweeps away line, two models for Multics - many of the factors that have the Model 68/60 and the restricted the application of Model 68/80. computers to routine data While contributing sig- processing assignments. nificantly to the application Now-with Multics - diversity of the Series 60 the computer becomes a family, these Multics systems responsive tool for solving also enable Honeywell to challenging business accommodate more efficiently problems. the computing needs of The Multics System today's businesses. incorporates many of the most user-oriented program- ming and supervisory tech- niques yet devised. These Multics is Transaction Processing -and More Although Multics is by Ease of accessibility, design a transaction oriented, featuring a simple and con- interactive information sys- sistent user interface for all tem, its functional capability types of services. There is no encompasses the full spec- job control or command trum of a general purpose language to learn and an computer.
    [Show full text]
  • Bootstrapping Complexity
    BOOTSTRAPPING COMPLEXITY learning from self-organizing systems in nature and technology - a remix of Kevin Kellyʼs book “Out of Control” (1994) by Andreas Lloyd 2009 Distributed with permission under a Creative Commons license Introduction 3 Hive mind 6 Machines with an attitude 23 Assembling complexity 38 Co-evolution 47 The natural flux 63 The emergence of control 78 Closed systems 91 Artificial evolution 107 An open universe 128 The butterfly sleeps 142 Epilogue: Nine Laws of God 153 Text rights: Kevin Kelly: “Out of Control”, 1994, all rights reserved - used with kind permission. Full text available at http://www.kk.org/outofcontrol/ Wikipedia: “Cybernetics”, as of september 2009 - some rights reserved (BY-SA) Full text available at http://en.wikipedia.org/wiki/Cybernetics Photo rights: The Blue Marble, NASA Goddard Space Flight Center. Image by Reto Stöckli (land surface, shallow water, clouds). Enhancements by Robert Simmon (ocean color, compositing, 3D globes, animation). Data and technical support: MODIS Land Group; MODIS Science Data Support Team; MODIS Atmosphere Group; MODIS Ocean Group Additional data: USGS EROS Data Center (topography); USGS Terrestrial Remote Sensing Flagstaff Field Center (Antarctica); Defense Meteorological Satellite Program (city lights). http://visibleearth.nasa.gov/ Ecosphere, Statico - some rights reserved (BY-NC-SA). http://www.flickr.com/photos/ statico/143803777/ 2 Introduction “Good morning, self-organizing systems!” The cheerful speaker smiled with a polished ease and adjusted his tie. "I am indeed very happy to find the Office of Naval Research joining with the Armour Research Foundation in organizing this conference on what I personally consider an exceedingly important topic, and at such a well-chosen time." It was a spring day in early May, 1959.
    [Show full text]
  • Multics Security Evaluation: Vulnerability Analysis*
    * Multics Security Evaluation: Vulnerability Analysis Paul A. Karger, 2Lt, USAF Roger R. Schell, Maj, USAF Deputy for Command and Management Systems (MCI), HQ Electronic Systems Division Hanscom AFB, MA 01730 ABSTRACT operational requirements cannot be met by dedicated sys- A security evaluation of Multics for potential use as a tems because of the lack of information sharing. It has two-level (Secret / Top Secret) system in the Air Force been estimated by the Electronic Systems Division (ESD) Data Services Center (AFDSC) is presented. An overview sponsored Computer Security Technology Panel [10] that is provided of the present implementation of the Multics these additional costs may amount to $100,000,000 per Security controls. The report then details the results of a year for the Air Force alone. penetration exercise of Multics on the HIS 645 computer. In addition, preliminary results of a penetration exercise 1.2 Requirement for Multics Security of Multics on the new HIS 6180 computer are presented. Evaluation The report concludes that Multics as implemented today is not certifiably secure and cannot be used in an open This evaluation of the security of the Multics system use multi-level system. However, the Multics security was performed under Project 6917, Program Element design principles are significantly better than other con- 64708F to meet requirements of the Air Force Data Ser- temporary systems. Thus, Multics as implemented today, vices Center (AFDSC). AFDSC must provide responsive can be used in a benign Secret / Top Secret environment. interactive time-shared computer services to users within In addition, Multics forms a base from which a certifiably the Pentagon at all classification levels from unclassified to secure open use multi-level system can be developed.
    [Show full text]
  • Bootstrapping a Compiler for Fun and Profit
    Starting From Scratch Bootstrapping a Compiler for Fun and Profit Disclaimer: Profit not guaranteed Neither is fun. A background in compilers is neither assumed, implied, nor expected. Questions are welcome; and will be answered, possibly correctly. What’s a Compiler? A program that translates from one programming language into another programming language. To create a compiler, we need at least three things: A source language(e.g. C, Java, LLVM byte code) A target language (e.g. C, Java ByteCode, LLVM byte code, or the machine code for a specific CPU) to translate it to Rules to explain how to do the translation. How do we make a great compiler? There are two approaches to this problem. A) Write the perfect compiler on your very first try. (Good luck!) B) Start out with a not-so-great compiler. Use it to write a better one. Repeat. That’s great, but… What if I don’t have a not-so-great compiler to start out with? What if I don’t have a compiler at all? The Modern Answer: Just Google it. Someone will have written one for you by now. If they haven’t, you can start with an existing compiler for an existing source language (such as C), and change the target language that it generates. Starting from Scratch… What did we do before we had the Internet? What would we do if we didn’t have a compiler to start from? We’d make one! There are many possible ways to go about doing this. Here’s my approach… What are we trying to Do? We want to write a program that can translate from the language we HAVE to the language we WANT.
    [Show full text]
  • Developer Guide(KAE Encryption & Decryption)
    Kunpeng Acceleration Engine Developer Guide(KAE Encryption & Decryption) Issue 15 Date 2021-08-06 HUAWEI TECHNOLOGIES CO., LTD. Copyright © Huawei Technologies Co., Ltd. 2021. All rights reserved. No part of this document may be reproduced or transmitted in any form or by any means without prior written consent of Huawei Technologies Co., Ltd. Trademarks and Permissions and other Huawei trademarks are trademarks of Huawei Technologies Co., Ltd. All other trademarks and trade names mentioned in this document are the property of their respective holders. Notice The purchased products, services and features are stipulated by the contract made between Huawei and the customer. All or part of the products, services and features described in this document may not be within the purchase scope or the usage scope. Unless otherwise specified in the contract, all statements, information, and recommendations in this document are provided "AS IS" without warranties, guarantees or representations of any kind, either express or implied. The information in this document is subject to change without notice. Every effort has been made in the preparation of this document to ensure accuracy of the contents, but all statements, information, and recommendations in this document do not constitute a warranty of any kind, express or implied. Issue 15 (2021-08-06) Copyright © Huawei Technologies Co., Ltd. i Kunpeng Acceleration Engine Developer Guide(KAE Encryption & Decryption) Contents Contents 1 Overview....................................................................................................................................1
    [Show full text]
  • Pluggable Authentication Modules
    Who this book is written for This book is for experienced system administrators and developers working with multiple Linux/UNIX servers or with both UNIX and Pluggable Authentication Windows servers. It assumes a good level of admin knowledge, and that developers are competent in C development on UNIX-based systems. Pluggable Authentication Modules PAM (Pluggable Authentication Modules) is a modular and flexible authentication management layer that sits between Linux applications and the native underlying authentication system. The PAM framework is widely used by most Linux distributions for authentication purposes. Modules Originating from Solaris 2.6 ten years ago, PAM is used today by most proprietary and free UNIX operating systems including GNU/Linux, FreeBSD, and Solaris, following both the design concept and the practical details. PAM is thus a unifying technology for authentication mechanisms in UNIX. This book provides a practical approach to UNIX/Linux authentication. The design principles are thoroughly explained, then illustrated through the examination of popular modules. It is intended as a one-stop introduction and reference to PAM. What you will learn from this book From Technologies to Solutions • Install, compile, and configure Linux-PAM on your system • Download and compile third-party modules • Understand the PAM framework and how it works • Learn to work with PAM’s management groups and control fl ags • Test and debug your PAM confi guration Pluggable Authentication Modules • Install and configure the pamtester utility
    [Show full text]
  • Trapper: an Operating System Bootstrapping Package for IBM PC Compatible Computer Systems
    Программные продукты и системы /Software&Systems 2 (33) 2020 Software &Systems Received 26.09.19 DOI: 10.15827/0236-235X.130.210-217 2020, vol. 33, no. 2, pp. 210–217 Trapper: an operating system bootstrapping package for IBM PC compatible computer systems Y.I. Klimiankou 1, Postgraduate Student, [email protected] 1 Belarusian State University of Informatics and Radioelectronics, Minsk, 220013, Belarus The paper presents an overview of the bootstrapping process on the IBM PC-compatible computer systems and proposes an architecture of the operating system bootstrapping package. The proposed package implements a framework for constructing boot images targeted at non-traditional operating systems like microkernel, an exokernel, unikernel, and multikernel. The bootstrapping package consists of three sets of independent boot modules and a Boot Image Builder application, which creates OS boot images. This application integrates and chains boot modules with one another to organize a complete bootloader chain. They are necessary to bring the operating system to a working state. The bootstrapping package architecture reflects the principal stages of the computer system boot process. Each set of boot modules is connected to the particular boot stage and forms a layer that is responsible for performing its own clearly defined set of functions and relies on clearly defined inter-layer interfaces to strictly isolate dependencies on the boot device, firmware and the specifics of the boot- loaded operating system. The paper presents the implementation of the described architecture for boot image generation designed and implemented for a research multikernel operating system and explains how it boots up. Additionally, the paper proposes the full separation idea of initialization code out of the operating system kernel and its movement into the independent OS loader module.
    [Show full text]
  • Towards Comprehensible and Effective Permission Systems
    Towards Comprehensible and Effective Permission Systems Adrienne Porter Felt Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2012-185 http://www.eecs.berkeley.edu/Pubs/TechRpts/2012/EECS-2012-185.html August 9, 2012 Copyright © 2012, by the author(s). All rights reserved. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. Towards Comprehensible and Effective Permission Systems by Adrienne Porter Felt A dissertation submitted in partial satisfaction of the requirements for the degree of Doctor of Philosophy in Computer Science in the GRADUATE DIVISION of the UNIVERSITY OF CALIFORNIA, BERKELEY Committee in charge: Professor David Wagner, Chair Professor Vern Paxson Professor Tapan Parikh Fall 2012 Towards Comprehensible and Effective Permission Systems Copyright c 2012 by Adrienne Porter Felt Abstract Towards Comprehensible and Effective Permission Systems by Adrienne Porter Felt Doctor of Philosophy in Computer Science University of California, Berkeley Professor David Wagner, Chair How can we, as platform designers, protect computer users from the threats associated with ma- licious, privacy-invasive, and vulnerable applications? Modern platforms have turned away from the traditional user-based permission model and begun adopting application permission systems in an attempt to shield users from these threats. This dissertation evaluates modern permission systems with the goal of improving the security of future platforms.
    [Show full text]
  • Strong Distributed Authentication Architecture for UNIX Ashwin Ganti
    University of Illinois at Chicago Strong Distributed Authentication Architecture for UNIX by Ashwin Ganti A PROJECT SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE MASTER OF SCIENCE in COMPUTER SCIENCE Approved, MASTERS PROJECT COMMITTEE Jon Solworth, Adviser Associate Professor of Computer Science V.N. Venkatakrishnan Assistant Professor of Computer Science Chicago, Illinois December, 2007 This project is dedicated to my family. Acknowledgments I would like to thank my adviser Jon Solworth for his invaluable guidance throughout the course of the research for this project and for having been most patient and supportive of me during the entire duration of my time in graduate school. Ashwin 2 Contents 1 Introduction 7 2 Overview of the Frameworks used 9 2.1 PAM........................................ 10 2.2 Name Service Module . 11 2.3 IPSec . 12 3 System Design 12 3.1 Statics . 12 3.1.1 Modules of the system . 12 3.1.2 Relation between the Modules . 13 3.1.3 SayAnything Certificates Used . 13 3.1.4 Relation between certificates . 15 3.2 Dynamics - Logical Flow . 17 4 System Internals 18 4.1 pam sayAnything . 18 4.2 nss sayAnything . 18 4.2.1 getpwuid (uid t uid) . 19 4.2.2 getpwnam (char* name) . 20 4.2.3 setpwent (void) . 20 4.2.4 getpwent (void) . 20 4.2.5 endpwent (void) . 21 4.3 sayAnything Agent . 21 4.3.1 Overview . 22 4.3.2 Logical Flow . 22 4.4 Certificate Server . 24 3 4.4.1 Add Certificate . 24 4.4.2 Get Certificate . 24 5 System Administration 25 5.1 pam sayAnything .
    [Show full text]
  • Practical Migration from IBM X86 to Linux on IBM System Z
    Front cover Practical Migration from x86 to Linux on IBM System z A guide to migrating popular applications and services from Linux on x86 to Linux on System z Practical guidance on planning, analysis, and TCO Comprehensive hands-on migration case study Lydia Parziale Eduardo Simoes Franco Craig Gardner Berthold Gunreben Tito Ogando Serkan Sahin ibm.com/redbooks International Technical Support Organization Practical Migration from x86 to Linux on IBM System z September 2014 SG24-8217-00 Note: Before using this information and the product it supports, read the information in “Notices” on page vii. First Edition (September 2014) This edition applies to z/VM Version 6.3, DB2 Version 10.5, SUSE Linux Enterprise Server Version 11, and Red Hat Enterprise Linux Version 6. Versions of other software components are incident to the versions available from the respective distributions referenced above. © Copyright International Business Machines Corporation 2014. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Notices . vii Trademarks . viii Preface . ix Authors. ix Now you can become a published author, too! . xi Comments welcome. xii Stay connected to IBM Redbooks . xii Chapter 1. Benefits of migrating workloads to Linux on System z . 1 1.1 Benefits . 2 1.2 Reasons to select Linux on System z . 3 1.2.1 System z strengths . 3 1.3 A new type of information technology: Workload centric . 5 1.4 Workload-centric cloud . 7 1.5 Enterprise cloud computing blueprint for System z. 9 1.5.1 Empowered virtualization management: IBM Wave for z/VM.
    [Show full text]
  • 3 Compiler Construction and Bootstrapping
    Compilers and Compiler Generators © P.D. Terry, 2000 3 COMPILER CONSTRUCTION AND BOOTSTRAPPING By now the reader may have realized that developing translators is a decidedly non-trivial exercise. If one is faced with the task of writing a full-blown translator for a fairly complex source language, or an emulator for a new virtual machine, or an interpreter for a low-level intermediate language, one would probably prefer not to implement it all in machine code. Fortunately one rarely has to contemplate such a radical step. Translator systems are now widely available and well understood. A fairly obvious strategy when a translator is required for an old language on a new machine, or a new language on an old machine (or even a new language on a new machine), is to make use of existing compilers on either machine, and to do the development in a high level language. This chapter provides a few examples that should make this clearer. 3.1 Using a high-level host language If, as is increasingly common, one’s dream machine M is supplied with the machine coded version of a compiler for a well-established language like C, then the production of a compiler for one’s dream language X is achievable by writing the new compiler, say XtoM, in C and compiling the source (XtoM.C) with the C compiler (CtoM.M) running directly on M (see Figure 3.1). This produces the object version (XtoM.M) which can then be executed on M. Even though development in C is much easier than development in machine code, the process is still complex.
    [Show full text]