Linux+: Operating System Intro 01 - UNIX An Operating System (OS) is the software foundation on a computer system which allows it to operate. The OS provides an interface between a user and the system hardware. For example, the OS can manage requests to read or write files to a Hard Disk Drive (HDD). The OS also manages the Random Access Memory (RAM) for executing applications. UNIX was developed in the 1970’s at Bell Labs. It was released as source language to allow others to modify the OS as needed. Programs are written in various computer languages. Programming languages come in two types: high-level and low-level. The high-level languages, such as BASIC, FORTRAN, C, etc., are considered close to human language. Low-level languages, such as Assembly, are close to machine language. Machine language is the code being sent on the system bus which is understood by the system, but is dependent on the system type. High-level languages must be compiled, which is where the near human language is converted to a machine language for the system to understand. A specific compiler for each system type allows the source code to be compiled to create an executable program for that system. In this way, the source code can be compiled for various system types to work across multiple platforms, or system types. Of course, the code can be modified as needed, before being compiled, to provide the required functionality. NOTE: Each system may have different CPU types, bus methods and even character coding (ASCII or EBCDIC). These various system types, called a platform, require different coding. Assembly language was more specific to the platform, so UNIX was written in C. Part of the kernel is still in Assembly language requiring a different kernel for each platform. With all the changes made to the source code, there arose the need to have standards for any OS which was not dependent on a system manufacturer. Portable Operating System Interface (POSIX) was developed to provide the OS standards. The standards were created and are maintained by the Institute of Electrical and Electronics Engineers (IEEE). Each version of POSIX is a decimal and the version number following POSIX. The versions are as follows: POSIX.0 – Guide and overview Overview of application portability POSIX.1 – Core Services Defines interface between applications and OS POSIX.1b – Real-time extensions Sets up standards for system scheduling, timers, clocks, etc. POSIX.1c – Thread extensions Thread control, management, creation, deletion, etc. POSIX.2 – Shell and utilities Standards for shells, scripts and others in the user interface POSIX.3 – Test and verify Standards to perform tests for POSIX conformance POSIX.4 – Real-time features Timers, event managers, shared memory and the like POSIX.5 – ADA language bindings Allowed ADA programs to be bound into the source code POSIX.6 – Security Security for specific privileges is included as to the Depart of Defense’s (DOD) “Orange Book” POSIX.7 – System Administration Allows for system management across various systems POSIX.8 – Networking Permits an OS to operate in a shared environment POSIX.9 – FORTRAN binding Allowed FORTRAN programs to be bound into the source code POSIX.10 – Supercomputers Incorporates supercomputers in the OS’s environment POSIX.11 – Transaction Processing Allows an OS to perform transactions All Operating Systems have one of two interfaces: command-line or Graphic User Interface (GUI). Command-line interfaces require more knowledge of commands and their syntaxes. To copy or delete files require a certain command. The syntax are the appropriate parameters needed to specify how the command should be carried out. For example, to delete a file, you need to include the syntax to specify which file to delete. The Graphical User Interface is one which includes icons and usually uses the mouse to allow a user to point and click. It is possible to maneuver around a GUI with just a keyboard, but is more difficult. Operating Systems come in two main types: stand-alone systems or Network Operating System (NOS). A stand-alone system is one that will not be connected to a network to allow resource sharing. A stand-alone system is usually one found in a home or even an office which may contain information or provide a resource which cannot be shared on a network. For example, systems which provide exams to take the Linux+ Certification Exam should not be on an office network so access cannot be made to the systems. NOTE: A stand-alone system can connect to the Internet which is not the same as a network. Network Operating Systems (NOS) are those which allow resources to be shared and can connect to the resources over a wireless or cabled network. Shared resources can be files, printers, CD or DVD drives, etc. NOTE: Not all systems provide network capabilities.