Handout: Fundamentals of
Computer Technology
Version: FCT/Handout/1107/1.0Date: 08-11-07
Cognizant 500 Glen Pointe Center West Teaneck, NJ 07666
TABLE OF CONTENTS
Introduction ... 7
About this Document ... 7
Target Audience ... 7
Objectives ... 7
Pre-requisite ... 7
Session 1: Introduction to Computer Fundamentals ... 8
Learning Objectives ... 8
Computer Generations ... 8
A typical Computer System ... 11
Computer Types ... 15
What is an Operating System ... 15
OS Objectives ... 16
OS Functions ... 17
Evolution of OS ... 18
Types of Operating Systems ... 22
OS Layers ... 25
Summary ... 25
Test your Understanding ... 25
Session 2: Introduction to Computer Networking ... 27
Learning Objectives ... 27
Introduction to Computer Networks ... 27
Why Networking ... 27
Network Goals ... 28
Components of a Computer Network ... 29
Network Types ... 31
Classification of computer networks ... 32
Network Services ... 38
Summary ... 41
Test your Understanding ... 41
Session 3: CPU Structure ... 42
Overview of CPU Behavior ... 43
Instruction Execution ... 44
Instruction types... 45
Fetching a word from Memory ... 45
Storing Word in Memory ... 46
Register Transfers ... 46
Arithmetic Logic Unit ... 46
Register Gating ... 47
Timing of Data Transfers ... 47
Control Unit ... 47
Hardwired Control ... 48
Micro programmed Control ... 48
Control Sequence ... 49
Microinstructions ... 50
Intel, AMD ... 50
Summary ... 51
Test your Understanding ... 51
Session 4: Operating Systems Management... 52
Learning Objectives ... 52
Operating System Components ... 52
Processes and Process management ... 54
Process States ... 55
Process Control Block (PCB) ... 56
Scheduling: A Few Scenarios ... 59
Process Scheduling Algorithms ... 60
Session 5: Operating Systems Management... 66
Learning Objectives ... 66
Memory Management ... 66
Memory hierarchy ... 67
Memory Organization ... 70
Placement Algorithm ... 74
Page Replacement Algorithms ... 82
File System Management ... 84
File Operations ... 86
Learning Objectives ... 97
Overview ... 97
Accessing I/O Devices ... 98
Hardware to connect I/O Device to BUS ... 98
Implementation of I/O operations ... 99
Programmed I/O ... 99
Isolated I/O ...100
Interrupt –Driven I/O ...100
How to achieve better Speed of Execution? ...101
Direct Memory Access (DMA) ...101
Block diagram of a computer with Input-Output Processor ...103
I/O Management ...103
MS-DOS ...104
Windows Family ...105
Summary ...105
Session 7: Network Protocols and Cognizant Network System...106
Learning Objectives ...106
Protocol Definition...106
The Open Systems Interface (OSI) Reference Model ...107
The OSI Layers...108
The Application Layer ...110
The Presentation Layer ...111
The Session Layer ...112
The Transport Layer ...112
The Network Layer ...117
The Data Link Layer ...119
The Physical Layer ...121
Introduction to TCP/IP ...122
The Four Layers of TCP/IP ...123
Transmission Control Protocol ...126
Cognizant Network System ...137
Summary ...138
Session 8: Internetworking and Network Management ...139
What Is an Internetwork? ...139
Repeaters: ...140
Bridges ...141
Transparent Bridge ...144
Routers ...145
Gateways ...147
What is a network firewall? ...148
Why would I want a firewall? ...148
What can a firewall protect against?...148
What can't a firewall protect against? ...149
What about viruses? ...149
Network Management ...151
Summary: ...152
Session 9: Advanced Computing Concepts – A Survey ...153
Learning Objective ...153
Pipelining ...153
Effect of operation that takes more than 1 clock cycle ...155
Why can’t the pipeline operate at its maximum theoretical speed? ...155
Parallelism ...155
Flynn’s Classification ...156
Client – Server ...158
Architecture ...159
Client Server Model ...159
Server ...160 Server Types ...160 File Server ...162 Compute Server...162 Database Server ...162 Communication Server ...163 Multiprocessor Organization ...163 Summary ...164
Test your Understanding ...164
Session 10: Case Study – UNIX ...165
Learning Objectives ...165
What is UNIX? ...165
Types of UNIX ...165
Layered Architecture ...166
Kernel ...166
UNIX Shell ...168
Basic Form of UNIX Commands ...170
UNIX Process Management ...173
UNIX CPU Scheduling ...177
UNIX Memory Management ...178
UNIX File System ...179
UNIX I/O Subsystem ...181
UNIX IPC ...182
Network Support in UNIX ...184
Session 11: Case Study – WINDOWS XP ...185
Learning Objectives ...185
Windows XP ...185
History ...186
Design Principles ...186
System Components — Kernel ...186
Kernel — Process and Threads ...186
Kernel — Scheduling ...187
Executive — Object Manager ...187
Executive — Virtual Memory Manager ...187
Executive — Process Manager ...188
Executive — Local Procedure Call (LPC) Facility ...188
Executive — I/O Manager ...188
Executive — Security Reference Monitor ...188
File System ...189
File System — Security ...189
Networking ...189
Summary ...190
Test Your Understanding ...190
References ...191
Websites ...191
Books ...191
Introduction
About this Document
This module discusses Fundamental concepts of Computer system, Operating System and Networks
Target Audience
Entry Level Trainees
Objectives
Get an Insight into the Computer Technologies Obtain Basic Knowledge of Operating Systems Understand Computer Networking Principles
Pre-requisite
This module requires that the trainee meet the following prerequisites: Basic knowledge of Computer Fundamentals and Digital Electronics Basic Structure of Computer Hardware and Software
Session 1: Introduction to Computer Fundamentals
Learning Objectives
After completing this chapter, you will be able to: List various Generations of Computers Explain a typical Computer System Differentiate Types of Computers Define an Operating System
Identify Operating Systems available today
Computer Generations
The Computer Evolution over the period of time has resulted in development of various
generations and devices. Different technologies have been used for manufacturing the computer hardware. Based on the component technology, computers are classified into five generations. Each computer generation is characterized by a major technological development that
fundamentally changed the way computers operate, architectural structure, resulting in
increasingly smaller, cheaper, more powerful and more efficient and reliable devices. The study of these aspects, helps one to distinguish between past and the present dimensions of the computer.
First Generation Computers (1937-1953)
These computers were pure hardware machines which contained no Operating System.
Programming was done in the machine language which differs from one computer to another.
The user deals with several switches in the front panel to start, run or halt the computer.
The internal status of the computer is displayed on several lights on the front panel. Invariably only a designer or programmer could operate the computer due to the
complexities involved.
These machines used electronic switches, in the form of vacuum tubes, instead of electromechanical relays.
In principle, the electronic switches would be more reliable, since they would have no moving parts that would wear out, but the technology was still new at that time and the vacuum tubes were comparable to relays in reliability.
Electronic components had one major benefit, they could "open" and "close" about 1,000 times faster than mechanical switches.
The earliest attempt to build an electronic computer was by J.V. Atanasoff, a Professor of Physics and Mathematics at Iowa State, in 1937. Atanasoff set out to build a
machine that would help his graduate students solve systems of partial differential equations.
By 1941, he and his graduate student Clifford Berry had succeeded in building a machine that could solve 29 simultaneous equations with 29 unknowns. However, the machine was not programmable, and was more of an electronic calculator.
Electronic Numerical Integrator and Calculator(ENIAC) was the first general purpose electronic computer. It was an enormous machine weighing about 30 tons and containing more than 18,000 vacuum tubes.
Second Generation Computers (1954-1962) -
Transistor Invention by Bell Labs was a boon to second generation computers. Smaller in size and also consumes less power.
Several companies such as IBM, NCR, RCA etc. quickly introduced transistor technology which also improved reliability of computers.
Instead of ‘wiring’ circuits, photo printing was used to build Printed Circuit Boards (PCB).
Both computer production and maintenance of computers became easier.
The second generation saw several important developments at all levels of computer system design, from the technology used to build the basic circuits to the programming languages used to develop scientific applications
Electronic switches in this era were based on discrete diodes and transistors technology with a switching time of approximately 0.3 microseconds.
The first machines to be built with this technology include TRADIC (TRAnsistor
DIgital Computer) at Bell Laboratories in 1954 and TX-0 at MIT's Lincoln Laboratory. Memory technology was based on magnetic cores, which could be accessed in
random order, as opposed to mercury delay lines, in which data was stored as an acoustic wave that passed sequentially through the medium and could be accessed only when the data moved by the I/O interface.
Important innovations in Computer Architecture were index registers for controlling loops and floating point units for calculations based on real numbers.
Floating-point operations were performed by libraries of software routines in early computers, but were done in hardware in second generation machines.
Third Generation Computers (1963-1972)
Integrated Circuit(IC) chip Invention is a great event for electronics field giving rise to microelectronics.
IC has multiple advantages over discrete components: smaller size, higher speed, lower hardware cost, improved reliability etc.
Digital computer design became more attractive and interesting.
The use of computers in a continuous processing and manufacturing sectors such as petroleum refining and electrical power distribution became popular.
The computer families by leading companies such as IBM, UNIVAC, HP,ICL and DEC dominated the computer industry.
The third generation brought huge gains in computational power:
Integrated Circuits, or ICs (semiconductor devices with several transistors built into one physical component), semiconductor memories instead of magnetic cores,
Operating System software allowed efficient sharing of a computer system by several user programs.
The first ICs were based on Small-Scale Integration (SSI) circuits, which had around 10 devices per circuit (or "chip"), and evolved to the use of Medium-Scale Integrated (MSI) circuits, which had up to 100 devices per chip.
Multilayered printed circuits were developed and core memory was replaced by faster, solid state memories.
Computer designers began to take advantage of parallelism by using multiple functional units, overlapping CPU and I/O operations, and pipelining (internal parallelism) in both the instruction stream and the data stream.
In 1964, Seymour Cray developed the CDC 6600, which was the first architecture to use functional parallelism. By using 10 separate functional units that could operate simultaneously and 32 independent memory banks, the CDC 6600 was able to attain a computation rate of 1 million floating point operations per second (1 MFlops).
Fourth Generation Computers (1972- 1984)
Computers built after 1972, called Fourth Generation computers were based on LSI (Large Scale Integration) of circuits (such as microprocessors) - typically 500 or more transistors on a chip.
Later developments included VLSI (Very Large Scale Integration) integrated circuits typically 10,000 transistors.
Modern circuits may now contain millions of components. This has led to very small, yet incredibly powerful computers.
The fourth generation is generally viewed as running right up until the present, since, although computing power has increased, the basic technology has remained virtually the same.
By the late 1990’s many people began to suspect that this technology was reaching its limit, further miniaturization could only achieve so much.
1 GB RAM chips have circuitry so small that it can be measured in terms of atoms. Such small circuits pose many technical problems like the increase in temperature and radiation.
Fifth Generation Computers (1984-1990)
The use of VLSI and artificial intelligence concept is used in this generation of computers.
Expert systems, pattern recognition, voice recognition, signature capturing and recognition, microprocessor controlled robots etc. are some of the sophisticated developments in the field of computers.
They will be able to take commands in a audio visual way and carry out instructions. Many of the operations which require low human intelligence will be performed by
these computers.
The development of the next generation of computer systems is characterized mainly by the acceptance of parallel processing.
Until this time, parallelism was limited to pipelining and vector processing, or at most to a few processors sharing jobs.
The fifth generation saw the introduction of machines with hundreds of processors that could all be working on different parts of a single program.
The scale of integration in semiconductors continued at an incredible pace - by 1990, it was possible to build chips with a million components - and semiconductor
memories became standard on all computers.
Other new developments were the widespread use of Computer Networks and the increasing use of single-user workstations.
Large scale parallel processing was employed in commercial products.
A typical Computer System
We will see a real life situation. In a college, Principal is the person who instructs the others to do their corresponding work. But he will not do all the work by himself. The fig. shows the structure of above. Principal Teaching& Non – Teaching Staff Student Government or Management
Fig 1.1: College Management Hierarchy
In the above structure, principal is instructed by the management or government. Without any knowledge of the management or government he does not take any action. Principal has to depend upon the management or government. But principal has to instruct the staff working under him to carryout the administrative activity in a satisfactory manner. The staff members can interact with the students and vice-versa.
From the above example we know what the work of principal is. Now we will compare this with the computer system. A Computer system may be divided into four major components
1. Hardware( Principal )
2. Operating System (Management)
3. Application Programs ( Teaching & Non- Teaching Staff ) 4. Users (Students) ……..……. User 1 User 2 User 3
Compiler Assembler Text Editor Database System Application Programs Operating System Computer Hardware n User
Fig 1.2: Abstract View of the Components of a Computer System
The computer is an electronic machine with built-in intelligence to execute the instructions. A Computer System is an arrangement of hardware and software. The term hardware generally refers to the electronic circuits in the computer. The main hardware modules are keyboard, CRT monitor, Disk Drive, Printer, and other peripherals. In practice, the term hardware is used for all physical items in a computer including mechanical, electrical and electronic assemblies and components. The Electrical components are Motors, power supplies, Transformers, Relays, Fans, PCBs, Wires, and Cables. The Mechanical components are Switches, Panels, Covers, Chassis, Nuts and Screws. The Electronic components are Resistors, Capacitors, Coils, Diodes,
Transistors, ICs, Crystals, LED, Speakers, and CRT. Fig 1.3 Shows Components of a Typical Computer System
Fig 1.3: Components of a Typical Computer System
Any program is software. The software is developed to solve a problem and it controls the
hardware when the program is executed. The hardware can be seen visually whereas the software is a logical action plan that is not visually noticeable. Computer Software is classified into two types: Application and System Software. An application program is a program solving users problems. Typical examples are: Payroll program, Inventory control program, tax calculator, class room scheduler, library management software, train reservation software, billing software and game programs. A system program is a program which helps in efficient utilization of the system by other programs and the users. It is generally developed for a given type of computer and it is not concerned with specific application or user. Operating system and compiler are examples of system software.
Communication Network IO expansion slots I/O Devices
I/O (local) bus Video Control Hard Disk Control Keyboard Control Network Control Secondary Memory Keyboard Video Monitor
Peripheral I/O Interface control unit Cache CPU Bus Interface Unit o r y M e m M a i n System Bus
Fig 1.4: A Typical Personal Computer System
Another way of looking into a typical personal computer is as shown Fig 1.4. At the core of this computer is a single-chip microprocessor such as the Pentium – Dual Core or AMD. The
microprocessor’s internal (micro) architecture usually contains a number of speedup features not found in its earlier version. A system bus connects the microprocessor to a main memory based on semiconductor DRAM technology and to an I/O subsystem. The widely used I/O bus (peripheral bus) used in computers of all sizes, provides a shared data path between the Central Processing Unit (CPU) and peripheral controllers, such as network, display, SCSI and RAID cards.
A separate I/O bus, such as the industry standard PCI Express (Peripheral Component
Interconnect Express) ‘local” bus, connects the I/O devices and their controllers. The I/O bus is linked to the system bus via a special bus-to-bus control unit sometimes referred to as a Bridge. The I/O devices of a personal computer include the traditional keyboard, a TFT-based or flat-panel video monitor, USB and disk drive units for the hard and flexible (floppy) disk storage devices that constitute secondary memory. More recent additions to the I/O devices include drive units for DVD (Digital Versatile Disk), which have extremely high capacity and allow sound and video images to be stored and retrieved efficiently. Other common audiovisual I/O devices in personal computers are microphones, loudspeakers, LCD projectors, video scanners, and webcam which are referred to as multimedia equipments.
Computer Types
Mainframe: Mainframes are computers used mainly by large organizations for critical applications,
typically bulk data processing such as census, industry/consumer statistics, ERP, financial transaction processing. They require large power and storage capacity.
Desktop: Is a personal computer made for use on a desk in an office or home. Desktop systems
are normally set up in a permanent location. Most desktops offer more power, storage and
versatility for less cost than their portable counter parts. Desktops are currently the most affordable computers; Nearly all desktop computers are modular, with components that can easily be
replaced or upgraded.
Portable: Is a computer that is designed to be moved from one place to another. Also called
notebooks/laptops - are portable computers that integrate the display, keyboard, a pointing device or trackball, processor, memory and hard disk drive all in a battery-operated package slightly larger than an average hardcover book.
Workstation: A desktop computer that has a more powerful processor, additional memory and
enhanced capabilities for performing a special group of tasks, such as 3D Graphics or game development.
Supercomputer: This type of computer usually costs hundreds of thousands or even millions of
dollars. Although some supercomputers are single computer systems, most are comprised of multiple high performance computers working in parallel as a single system. Supercomputers are used for the large-scale numerical calculations required in applications such as weather
forecasting and aircraft design and simulation. The best-known supercomputers are built by Cray Supercomputers.
What is an Operating System
An Operating System is a software program or set of programs that acts as a central control program for the computer. It mediates access between physical devices (such as keyboard, mouse, monitor, disk drive or network connection) and application programs (such as word processor, World-Wide Web browser or electronic mail client).
An operating system (sometimes abbreviated as "OS") is the program that, after being initially loaded into the computer by a boot program, manages all the other programs in a computer. The other programs are called applications or application programs. The application programs make use of the operating system by making requests for services through a defined Application Program Interface (API).
A set of routines, protocols, and tools for building software applications, which provides all the building blocks for the programmer to put together. Most operating environments, such as MS-Windows, provide an API so that programmers can write applications consistent with the operating environment. Although APIs are designed for programmers, they are ultimately good for users as their similar interfaces make it easier for users to learn new programs.
In addition, users can interact directly with the operating system through a user interface such as a command language or a graphical user interface (GUI). The basic resources of a computer system are provided by its hardware, software and data. The operating system provides the means for the proper use of these resources in the operation of the computer system. It simply provides an environment within which other programs can do useful work.
We can view an operating system as a resource allocator. A computer system has many resources (hardware and software) that may be required to solve a problem: CPU time, memory space, files storage space, input/output devices etc.
The operating system acts as the manager of these resources and allocates them to specific programs and users, as necessary for their tasks. An operating system is a control program i.e, it acts as a controller. This program controls the execution of user programs to prevent errors and improper use of the computer.
OS Objectives
The primary goal of an operating system is convenience for the user. A secondary goal is the efficient operation of a computer system. This goal is particularly important for large, shared multi-user systems. It is known that sometimes these two goals, convenience and efficiency, are contradictory.
OS Functions
A computer’s operating system (OS) is a group of programs designed to serve two basic purposes: To control the allocation and use of the computing system’s resources among the
various users and tasks, and.
To provide an interface between the computer hardware and the programmer that simplifies and makes feasible the creation, coding, debugging, and maintenance of application programs.
An Operating System do the following:
Facilitate creation and modification of program and data files through an editor program,
Provide access to compilers to translate programs from high-level languages to machine language,
Provide a loader program to move the complied program code to the computer’s memory for execution,
Provide routines that handle the intricate details of I/O programming,
Assure that when there are several active processes in the computer, each will get fair and non interfering access to the central processing unit for execution,
Take care of storage and device allocation,
Provide for long term storage of user information in the form of files, and Permit system resources to be shared among users when appropriate, and be
protected from unauthorized or mischievous intervention as necessary.
An operating system performs these services for applications:
In a multitasking operating system where multiple programs can be running at the same time, the operating system determines which applications should run in what order and how much time should be allowed for each application before giving another application a turn.
It manages the sharing of internal memory among multiple applications.
It handles input and output to and from attached hardware devices, such as hard disks, printers, and dial-up ports.
It sends messages to each application or interactive user (or to a system operator) about the status of operation and any errors that may have occurred.
On computers that can provide parallel processing, an operating system can manage how to divide the program so that it runs on more than one processor at a time.
All major computer platforms (hardware and software) require and sometimes include an operating system. Linux, Windows 2000, VMS, OS/400, AIX, and z/OS are all examples of operating
Evolution of OS
The History of OS is linked with the development of various computer generations. By tracing that evolution we can identify the common elements of operating systems,
and see how, and why they evolved as they are now.
Operating systems and computer architecture have a great deal of influence on each other.
To facilitate the use of the hardware, operating systems were designed, developed and simplified.
Since operating systems have historically been closely tied to the architecture of the computers on which they run. The mapping of operating systems to computer generations is admittedly crude, but it does provide some structure where there would otherwise be none. Because the history of computer operating systems parallels that of computer hardware, it can be generally divided into five distinct time periods, called generations, that are characterized by hardware component technology, software development, and mode of delivery of computer services.
The Zeroth Generation
The term Zeroth Generation is used to refer to the period of development of computing, which predated the commercial production and sale of computer equipment.
In particular, this period witnessed the emergence of the first electronic digital computers on the Atanasoff-Berry Computer (ABC), designed by John Atanasoff in 1940; the Mark I, built by Howard Aiken and a group of IBM engineers at Harvard in 1944; and the Electronic Numerical Integrator And Computer (ENIAC), designed and constructed at the University of Pennsylvania by Wallace Eckert and John Mauchly. Perhaps the most significant of these early computers was the Electronic Discrete Variable Automatic Computer(EDVAC), developed in 1944-46 by John von Neumann, Arthur Burks, and Herman Goldstine, since it was the first to fully implement the idea of the stored program and serial execution of instructions.
The development of EDVAC set the stage for the evolution of commercial computing and operating system software. The hardware component technology of this period was electronic vacuum tubes. The actual operation of these early computers took place without be benefit of an operating system. Early programs were written in machine language and each contained code for initiating operation of the computer itself.
The First Generation, 1951-1956
The first generation marked the beginning of commercial computing, including the introduction of Eckert and Mauchly’s UNIVersal Automatic Computer I (UNIVAC I) in early 1951, and a bit later, The IBM 701 which was also known as the Defense Calculator.
Operation continued without the benefit of an operating system for a time. Application programs were run one at a time, and were translated with absolute
computer addresses that bound them to be loaded and run from these pre assigned storage addresses set by the translator, obtaining their data from specific physical I/O device.
There was no provision for moving a program to a different location in storage for any reason. Similarly, a program bound to specific devices could not be run at all if any of these devices were busy or broken down.
The inefficiencies inherent in the above methods of operation led to the development of the mono programmed operating system, which eliminated some of the human intervention in running a job and provided programmers with a number of desirable functions.
The OS consisted of a permanently resident kernel in main storage, and a job scheduler and a number of utility programs kept in secondary storage.
User application programs were preceded by control or specification cards (in those days, computer program were submitted on data cards) which informed the OS of what system resources (software resources such as compilers and loaders and hardware resources such as tape drives and printer) were needed to run a particular application.
The systems were designed to be operated as batch processing system. These systems continued to operate under the control of a human operator who initiated operation by mounting a magnetic tape that contained the operating system
executable code onto a “boot device”, and then pushing the IPL (initial program load) or “boot” button to initiate the bootstrap loading of the operating system.
Once the system was loaded, the operator entered the date and time, and then initiated the operation of the job scheduler program which read and interpreted the control statements, secured the needed resources, executed the first user program, recorded timing and accounting information, and then went back to begin processing of another user program, and so on, as long as there were programs waiting in the input queue to be executed.
At the same time, the development of programming languages was moving away from the basic machine languages; first to assembly language, and later to procedure oriented languages, the most significant being the development of FORTRAN by John W. Backus in 1956.
Several problems remained, however. The most obvious was the inefficient use of system resources, which was most evident when the CPU waited while the relatively slower, mechanical I/O devices were reading or writing program data.
In addition, system protection was a problem because the operating system kernel was not protected from being overwritten by an erroneous application program. Moreover, other user programs in the queue were not protected from destruction by executing programs.
The second Generation, 1956-1964 (Batch Operating Systems):
The second generation of computer hardware was most notably characterized by transistors replacing vacuum tubes as the hardware component technology. In addition, some very important changes in hardware and software architectures
occurred during this period.
For the most part, computer systems remained card and tape-oriented systems. Significant use of random access devices, that is, disks, did not appear until towards the end of the second generation.
The most significant innovations addressed the problem of excessive central processor delay due to waiting for input/output operations.
Recall that programs were executed by processing the machine instructions in a strictly sequential order.
As a result, the CPU, with its high speed electronic component, was often forced to wait for completion of I/O operations which involved mechanical devices (card readers and tape drives) that were order of magnitude slower.
This problem led to the introduction of the data channel, an integral and special-purpose computer with its own instruction set, registers, and control unit designed to process input/output operations asynchronously from the operation of the computer’s main CPU, near the end of the first generation, and its widespread adoption in the second generation.
The data channel allowed some I/O to be buffered. That is, a program’s input data could be read “ahead” from data cards or tape into a special block of memory called a buffer. Then, when the user’s program came to an input statement, the data could be transferred from the buffer locations at the faster main memory access speed rather than the slower I/O device speed. Similarly, a program’s output could be written in another buffer and later moved from the buffer to the printer, tape, or cardpunch. What made this all work was the data channel’s ability to work asynchronously and
concurrently with the main processor. Thus, the slower mechanical I/O could be happening concurrently with main program processing. This process was called I/O overlap.
The data channel was controlled by a channel program set up by the operating system I/O control routines and initiated by a special instruction executed by the CPU. Then, the channel independently processed data to or from the buffer. This provided communication from the CPU to the data channel to initiate an I/O operation. It remained for the channel to communicate to the CPU such events as data errors
and the completion of a transmission. At first, this communication was handled by polling-the CPU stopped its work periodically and polled the channel to determine if there was any massage.
Polling was obviously inefficient (imagine stopping your work periodically to go to the post office to see if an expected letter has arrived) and led to another significant innovation of the second generation - the interrupt. The data, channel was now able to interrupt the CPU with a message- usually “I/O complete.”
In fact, the interrupt idea was later extended from I/O to allow signaling of number of exceptional conditions such as arithmetic overflow, division by zero and time-run-out. Of course, interval clocks were added in conjunction with the latter, and thus operating system came to have a way of regaining control from an exceptionally long or
indefinitely looping program.
Towards the end of this period, as random access devices became available, tape-oriented operating systems began to be replaced by disk-tape-oriented systems. With the more sophisticated disk hardware and the operating system supporting a greater portion of the programmer’s work, the computer system that users saw was more and more removed from the actual hardware - users saw a virtual machine.
The second generation was a period of intense operating system development. Also it was the period for sequential batch processing. But the sequential processing of one job at a time remained a significant limitation. Thus, there continued to be low CPU utilization for I/O bound jobs and low I/O device utilization for CPU bound jobs. This was a major concern, since computers were still very large (room-size) and expensive machines.
Researchers began to experiment with multiprogramming and multiprocessing in their computing services called the time-sharing system. A noteworthy example is the Compatible Time Sharing System (CTSS), developed at MIT during the early 1960s.
The Third Generation, 1964-1979 (Multiprogramming and Time Sharing Systems):
The third generation officially began in April 1964 with IBM’s announcement of its System/360 family of computers.
Hardware technology began to use integrated circuits (ICs), which yielded significant advantages in both speed and economy.
Operating system development continued with the introduction and widespread adoption of multiprogramming.
These systems worked by introducing two new systems programs, a system reader to move input jobs from cards to disk, and a system writer to move job output from disk to printer, tape, or cards. Operation of spooling system was, as before, transparent to the computer user who perceived input as coming directly from the cards and output going directly to the printer.
The idea of taking fuller advantage of the computer’s data channel, I/O capabilities continued to develop. That is, designers recognized that I/O needed only to be
initiated by a CPU instruction - the actual I/O data transmission could take place under control of separate and asynchronously operating channel program.
Thus, by switching control of the CPU between the currently executing user program, the system reader program, and the system writer program, it was possible to keep the slower mechanical I/O device running and minimize the amount of time the CPU spent waiting for I/O completion.
The net result was an increase in system throughput and resource utilization, to the benefit of both user and providers of computer services.
This concurrent operation of three programs (more properly, apparent concurrent operation, since systems had only one CPU, and could, therefore executes just one instruction at time) required that additional features and complexity be added to the operating system.
The Fourth Generation, 1980 - 1994(Personal Computers and Workstations):
The fourth generation is characterized by the appearance of the personal computer and the workstation.
Miniaturization of electronic circuits and components continued and large-scale integration (LSI), the component technology of the third generation, was replaced by very large scale integration (VLSI), which characterizes the fourth generation. VLSI with its capacity for containing thousands of transistors on a small chip, made
The microprocessor brought the fourth generation of computers, as thousands of integrated circuits were built onto a single silicon chip. What in the first generation filled an entire room could now fit in the palm of the hand. The Intel 4004 chip, developed in 1971, located all the components of the computer – from the central processing unit and memory to input/output controls - on a single chip.
In 1981 IBM introduced its first computer for the home user, and in 1984 Apple introduced the Macintosh. Microprocessors also moved out of the realm of desktop computers and into many areas of life as more and more everyday products began to use microprocessors.
As these small computers became more powerful, they could be linked together to form networks, which eventually led to the development of the Internet. Fourth generation computers also saw the development of GUIs, the mouse and handheld devices.
Fifth Generation - Present and Beyond: Artificial Intelligence
Fifth generation computing devices, based on artificial intelligence, are still in
development, though there are some applications, such as voice recognition, that are being used today.
The use of parallel processing and superconductors is helping to make artificial intelligence a reality.
Quantum computation and molecular and nanotechnology will radically change the face of computers in years to come.
The goal of fifth-generation computing is to develop devices that respond to natural language input and are capable of learning and self-organization.
Types of Operating Systems
Modern computer operating systems may be classified into three groups, which are distinguished by the nature of interaction that takes place between the computer user and his or her program during its processing. The three groups are called batch, time-shared and real time operating systems.
In a batch processing operating system environment, users submit jobs to a central place where these jobs are collected into a batch, and subsequently placed on an input queue at the computer where they will be run. In this case, the user has no interaction with the job during its processing, and the computer’s response time is the turnaround time-the time from submission of the job until execution is complete, and the results are ready for return to the person who submitted the job.
Another mode for delivering computing services is provided by time sharing operating systems. In this environment a computer provides computing services to several or many users concurrently on-line. Here, the various users are sharing the central processor, the memory, and other
resources of the computer system in a manner facilitated, controlled, and monitored by the
operating system. The user, in this environment, has nearly full interaction with the program during its execution, and the computer’s response time may be expected to be no more than a few second.
The third classes of operating systems, real time operating systems, are designed to service those applications where response time is of the essence in order to prevent error, misrepresentation or even disaster. Examples of real time operating systems are those, which handle airlines
reservations, machine tool control, and monitoring of a nuclear power station. The systems, in this case, are designed to be interrupted by external signal that require the immediate attention of the computer system.
In fact, many computer operating systems are hybrids, providing for more than one of these types of computing services simultaneously. It is especially common to have a background batch system running in conjunction with one of the other two on the same computer. A number of other
definitions are important to gaining an understanding of operating systems:
A multiprogramming operating system is a system that allows more than one active user program (or part of user program) to be stored in main memory simultaneously. Thus, it is evident that a time-sharing system is a multiprogramming system, but note that a multiprogramming system is not necessarily a time-sharing system. A batch or real time operating system could, and indeed usually does, have more than one active user program simultaneously in main storage. Another important, and all too similar, term is ‘multiprocessing’.
A multiprocessing system is a computer hardware configuration that includes more than one independent processing unit. The term multiprocessing is generally used to refer to large computer hardware complexes found in major scientific or commercial applications.
A networked computing system is a collection of physically interconnected computers. The operating system of each of the interconnected computers must contain, in addition to its own stand-alone functionality, provisions for handing communication and transfer of program and data among the other computers with which it is connected.
A distributed computing system consists of a number of computers that are connected and managed so that they automatically share the job processing load among the constituent computers, or separate the job load as appropriate particularly configured processors. Such a system requires an operating system, which in addition to the typical stand-alone functionality provides coordination of the operations and information flow among the component computers.
The networked and distributed computing environments and their respective operating systems are designed with more complex functional capabilities. In a network operating system the users are aware of the existence of multiple computers, and can log in to remote machines and copy files from one machine to another. Each machine runs its own local operating system and has its own user (or users).
A distributed operating system, in contrast, is one that appears to its users as a traditional uniprocessor system, even though it is actually composed of multiple processors. In a true distributed system, users should not be aware of where their programs are being run or where their files are located; that should all be handled automatically and efficiently by the operating system.
Network operating systems are not fundamentally different from single processor operating systems. They obviously need a network interface controller and some low-level software to drive it, as well as programs to achieve remote login and remote files access, but these additions do not change the essential structure of the operating systems.
What OSs Are Available Today
The list of different types of operating systems and a few examples of Operating Systems that fall into each of the categories. Many computer Operating Systems will fall into more then one of the below categories given below.
GUI - Short for Graphical User Interface, a GUI Operating System contains graphics and icons and
is commonly navigated using a computer mouse. Below are some examples of GUI Operating Systems.
System 7.x Windows 98 Windows CE
Multi-user - A multi-user Operating System allows for multiple users to use the same computer at
the same time and/or different times. Below are some examples of multi-user Operating Systems. Linux
UNIX
Windows 2000 VMS
MVS
Multiprocessing - An Operating System capable of supporting and utilizing more than one
computer processor. Below are some examples of multiprocessing Operating Systems. Linux
UNIX
Windows 2000
Multitasking - An Operating systems that is capable of allowing multiple software processes to be
run at the same time. Below are some examples of multitasking Operating Systems. UNIX
Windows 2000
Multithreading - Operating systems that allow different parts of a software program to run
concurrently. Operating systems that would fall into this category are: Linux
UNIX
Networking OS:
Windows 2000 Novell Netware
OS Layers
An operating system provides the environment within which programs are executed. To construct such an environment, the system is partitioned into small modules with a well-defined interface. The design of a new operating system is a major task. It is very important that the goals of the system be well defined before the design begins. The type of system desired is the foundation for choices between various algorithms and strategies that will be necessary. The important modules for an operating system are listed below.
Process Management Memory Management
Secondary Storage Management I/O System
File Management Protection System Networking
Command Interpreter System
Obviously, not all systems have the same structure.
Summary
Computers have been classified into five generations The various components of a typical computer system
The Computer types are determined based on size, speed and cost. The Definition of an OS, Objectives, Functions, Evolution, Types, Layers A few examples of Operating Systems that fall into each of the categories.
Test your Understanding
1. Which component, if missing, will keep the Personal Computer from not functioning? a. Scanner
b. Printer c. Camera d. Processor
2. Today’s fastest computers are called: a. C.P.U.
b. Mega computers c. Supercomputers d. Terminals
3. What is multitasking and Multiprogramming?
4. Why Operating System is called a resource manager? 5. Which of the following is not an Operating System?
a. Linux b. Solaris
c. MVS (Multiple Virtual Storage) d. Sun OS
Answer:
1. d 2. c 5. c
Session 2: Introduction to Computer Networking
Learning Objectives
After completing this session, you will be able to Explain computer networks
Describe the need for a computer network Identify the classification of computer networks Differentiate network topologies
List network services
Introduction to Computer Networks
Networks are changing the way we do business and the way we live. Business decisions have to be made ever more quickly, and the decision makers require immediate access to accurate information. But before we ask how quickly we can get hooked up, we need to know how networks operate, what types of technology are available and which design best fits which set of needs. When a company adds a new division, the technology has to be flexible enough to reflect changing configurations. Is a particular design robust enough to handle the growth? Understanding what it does and when to use each type of technology is essential for providing the right system in today’s dynamically changing information management.
Why Networking
Computer networking is the scientific and engineering discipline concerned with communication between computer systems. Such communicating computer systems constitute a computer network and these networks generally involve at least two devices capable of being networked with at least one usually being a computer. The devices can be separated by a few meters (e.g. via Bluetooth) or thousands of kilometers (e.g. via the Internet). The public Internet is a world-wide computer network, that is, a network that interconnects millions of computing devices throughout the world. Most of these computing devices are traditional desktop PCs, UNIX based workstations, and so called servers that store and transmit information such as Web (WWW) pages and e-mail messages. Increasingly, non-traditional computing devices such as Web TVs, mobile computers, pagers and toasters are being connected to the Internet. In the internet jargon, all of these devices are called hosts or end systems.
A network is a set of devices (often referred to as nodes) connected by links. A node can be a computer, printer, or any other device capable of sending and/or receiving data generated by other nodes on the network. The links connecting the devices are often called communication channels. A computer network is two or more computers connected together using a telecommunication system for the purpose of communicating and sharing resources.
Network Goals
If we connect all PCs in a network, each PC can share information from other PCs. In effect, this signifies what is known as information sharing. A company with many factories may have a computer at each location to keep track of inventories, monitor productivity, and do the local payroll. Initially, each of these computers may have worked in isolation from others. But at some point, management might have decided to connect them to be able to extract and correlate information about the entire company.
In Cognizant HR department, one person looks after the resumes of the employees, another takes care of leaves availed (balance) by the employees, a third person may administer the HR policies. They would all have to take printouts for various purposes. In case, the computers are not
connected, each of them would need a separate printer. This would be expensive and probably it would take some time for the company to provide a separate printer to every machine. This would lead to delay in work. This problem can be overcome; if all the machines are connected in a network in which case, there will be only one printer required which can cater to everybody’s needs. This is what is known as Resource Sharing. This is a slightly more general form of
information sharing and the goal is to make all programs, data and equipment available to anyone on the network without regard to the physical location of the resource and the user. In other words, the mere fact that a user happens to be 1000 km away from his data should not prevent him from using the data as if they were local. This goal may be summarized by saying that it is an attempt to end the “tyranny of geography”.
The Finance department takes 2-3 days to process the salaries of the employees, as the number of employees is as large as 80-90 thousand. This is mainly because the Finance department uses only one machine to do the entire task of payroll processing as only this machine has the database of employees. If we can make this database available to more machines this would result in faster generation of pay slips. A database, which can be accessed by a number of machines, is called a central database and this aspect of network is called Load Sharing.
Another advantage of network is to provide high reliability by having alternative sources of supply. For example, all files could be replicated on two or three machines, so if one of them is unavailable (due to hardware failure), the other copies could be used. In addition, the presence of multiple CPUs means that if one goes down, the others may be able to take over its work, although at reduced performance. For military, banking, air traffic control, and many other applications, the ability to continue operating in the face of hardware problem is of great importance.
Another advantage of a network is that it is cost effective. Small computers have a much better Price/Performance ratio than large ones. Mainframes are roughly a factor of ten faster than the fastest single chip microprocessor, but they cost a thousand times more.
This imbalance has compelled many systems designers to build systems consisting of powerful personal computers, one per user, with data kept on one or more shared file server machines.
So, we can list down the benefits of network as: Information sharing Resource sharing Load sharing High reliability Cost effective
Components of a Computer Network
Many of the components of which an average computer network is composed are individual computers, which are generally either workstations or servers.
Types of Workstations
There are many types of workstations that may be incorporated into a particular network, some of which have high-end displays, multiple CPUs, large amounts of RAM, large amounts of hard drive storage space, or other enhancements required for special data processing tasks, graphics, or other resource intensive applications.
Types of Servers
The following is a list of some of the more common types of servers and their purpose.
File Server - Stores various types of files and distributes them to other clients on the
network.
Print server - Controls and manages one or more printers and accepts print jobs from
other network clients, and performing most or all of the other functions that a
workstation would perform to accomplish a printing task if the printer were connected directly to the workstation's printer port.
Mail Server - Stores, sends, receives, routes, and performs other email related
operations for other clients on the network.
Fax Server - Stores, sends, receives, routes, and performs other functions necessary
for the proper transmission, reception, and distribution of faxes.
Telephony Server - Performs telephony related functions such as answering calls
automatically, performing the functions of an interactive voice response system, storing and serving voice mail, routing calls between the Public Switched Telephone Network (PSTN) and the network or the Internet (e.g., Voice-over IP (VoIP) gateway), etc.
Proxy Server - Performs some type of function on behalf of other clients on the
network to increase the performance of certain operations (e.g., prefetching and caching documents or other data that is requested very frequently) or as a security precaution to isolate network clients from external threats.
Remote Access Server (RAS) - Monitors modem lines or other network
communications channels for requests to connect to the network from a remote location, answers the incoming telephone call or acknowledges the network request, and performs the necessary security checks and other procedures necessary to log a user onto the network.
Application Server - Performs the data processing or business logic portion of a client application, accepting instructions for what operations to perform from a workstation and serving the results back to the workstation, while the workstation performs the user interface or GUI portion of the processing (i.e., the presentation logic) that is required for the application to work properly.
Web Server - Stores HTML documents, images, text files, scripts, and other Web
related data (collectively known as content), and distributes this content to other clients on the network on request.
Backup Server - Has network backup software installed and have large amounts of
hard drive storage or other forms of storage (tape, etc.) available to it to be used for the purpose of insuring that data loss does not occur in the network.
Printers
Many printers are capable of acting as part of a computer network without any other device, such as a print server, to act as an intermediary between the printer and the device that is requesting a print job to be completed.
Dumb Terminals
Many networks use dumb terminals instead of workstations either for data entry and display purposes or in some cases where the application runs entirely on the server. Is a computer terminal that has limited functionality?
Other Devices
There are many other types of devices that may be used to build a network, many of which require an understanding of more advanced computer networking concepts before they are able to be easily understood (e.g., hubs, routers, bridges, switches, hardware firewalls, etc.).
A Simple Network
A simple computer network may be constructed from two computers by adding a network adapter (Network Interface Controller (NIC)) to each computer and then connecting them together with a special cable called a crossover cable. This type of network is useful for transferring information between two computers that are not normally connected to each other by a permanent network connection or for small home networking applications.
Practical Networks
Practical networks generally consist of more than two interconnected computers and generally require special devices in addition to the Network Interface Controller that each computer needs to be equipped with.
Network Types
Below is a list of the more common types of computer networks, although there are other types that are not listed.
Local Area Network (LAN)
A network that is limited to a relatively small spatial area such as a room, a single building, a ship, or an aircraft. For administrative purposes, large LANs are generally divided into smaller logical segments called workgroups. A workgroup is a group of computers that share a common set of resources within a LAN.
Campus Area Network (CAN)
A network that connects two or more LANs but that is limited to a specific (possibly private) geographical area such as a college campus, industrial complex, or a military base.
Note: A CAN is generally limited to an area that is smaller than a Metropolitan Area Network (MAN).
Metropolitan Area Network (MAN)
A network that connects two or more LANs or CANs together, but that does not extend beyond the boundaries of the immediate town, city, or metropolitan area.
Wide Area Network (WAN)
A network that covers a broad geographical area (i.e., any network whose communications links cross metropolitan, regional, or national boundaries) or, less formally, a network that uses routers and public communications links.
Types of WANs:
Centralized: A centralized WAN consists of a central computer that is connected to
dumb terminals and / or other types of terminal devices.
Distributed: A distributed WAN consists of two or more computers in different
locations and may also include connections to dumb terminals and other types of terminal devices.
Internet work
Two or more networks or network segments connected using devices that operate at layer 3 (the 'network' layer) of the OSI Basic Reference Model(a layered abstract description for
communication and computer network protocol design) , such as a router or layer 3 switch.
Note: Any interconnection among or between public, private, commercial, industrial, or
Internet:
A specific internet work, consisting of a worldwide interconnection of governmental, academic, public, and private networks based upon the Advanced Research Projects Agency Network (ARPANET) developed by ARPA of the U.S. Department of Defense – also known as the World Wide Web (WWW) or the 'Internet' with a capital 'I' to distinguish it from other generic internet works.
Intranet
A network or internet work that is limited in scope to a single organization or entity or a network or internet work that is limited in scope to a single organization or entity and which uses one kind network protocol called Transmission Control Protocol/Internet Protocol(TCP/IP) protocol suite, Hyper Text Transfer Protocol (HTTP), File Transfer Protocol (FTP), and other network protocols and software commonly used on the Internet.
Note: Intranets may also be categorized as a Local Area Network(LAN), Campus Area Network(CAN), Metropolitan Area Network(MAN), Wide Area Network(WAN), or other type of network.
Extranet
A network or internet work that is limited in scope to a single organization or entity but which also has limited connections to the networks of one or more other usually, but not necessarily, trusted organizations or entities (e.g., a company's customers may be provided access to some part of its intranet creating an extranet while at the same time the customers may not be considered 'trusted' from a security standpoint).
Note: Technically, an extranet may also be categorized as a CAN, MAN, WAN, or other type of
network, although, by definition, an extranet cannot consist of a single LAN, since an extranet must have at least one connection with an outside network.
It is interesting to note that Intranets and extranets may or may not have connections to the Internet, but if they are connected to the Internet, the intranet or extranet is normally protected from being accessed from the Internet without proper authorization, and the Internet itself is not considered to be a part of the intranet or extranet, although the Internet may serve as a portal for access to portions of an extranet.
Classification of computer networks
By network layer
Computer networks may be classified according to the network layer at which they operate
according to some basic reference models that are considered to be standards in the industry such as the seven layer OSI reference model and the five layer TCP/IP model.
By scale
Computer networks may be classified according to the scale or extent of reach of the network, for example as a Personal area network (PAN), Local Area Network, Wireless local area network (WLAN), Campus area network (CAN), Metropolitan area network (MAN), or Wide area network (WAN).
Note: WLAN is also known as PAN (Personal Area Networking) with wireless connection
technologies such as Bluetooth (which has a limited range of approximately 15 meters).
By connection method
Computer networks may be classified according to the technology that is used to connect the individual devices in the network such as HomePNA, Power line communication, Ethernet, or WiFi.
By functional relationship
Computer networks may be classified according to the functional relationships which exist between the elements of the network, for example Active Networking, Client-server and Peer-to-peer (Workgroup) architectures.
By network topology
Computer networks may be classified according to the network topology upon which the network is based, such as Bus network, Star network, Ring network, Mesh network, Star-bus network, Tree topology network, etc. We will study different network topologies in detail.
Bus Network
A bus network is a network architecture in which a set of clients are connected via a shared communications line, called a bus. There are several common instances of the bus architecture, including one in the motherboard of most computers, and those in some versions of Ethernet networks.
Bus networks are the simplest way to connect multiple clients, but often have problems when two clients want to transmit at the same time on the same bus. Thus systems which use bus network architectures normally have some scheme of collision handling or collision avoidance for
communication on the bus, quite often using Carrier Sense Multiple Access or the presence of a bus master which controls access to the shared bus resource.
A true bus network is passive – the computers on the bus simply listen for a signal; they are not responsible for moving the signal along. However, many active architectures can also be described as a "bus", as they provide the same logical functions as a passive bus; for example, switched Ethernet can still be regarded as a logical bus network, if not a physical one. Indeed, the hardware may be abstracted away completely in the case of a software bus.
With the dominance of switched Ethernet over passive Ethernet, passive bus networks are uncommon in wired networks. However, almost all current wireless networks can be viewed as examples of passive bus networks, with radio propagation serving as the shared passive medium.
Bus
Nodes/Computers
Fig 2.1: Bus Network
Advantages
Easy to implement and extend
Well suited for temporary networks (quick setup) Initially less expensive than other topologies
Disadvantages
Difficult to administer / troubleshoot.
Limited cable length and number of stations.
If there is a problem with the cable, the entire network goes down. Maintenance costs may be higher in the long run.
Performance degrades as additional computers are added or on heavy traffic. Low security (all computers on the bus can see all data transmissions). One virus in the network will affect all of them (but not as badly as a star or ring
network).
Proper termination is required.(loop must be in closed path). Entire network shuts down if there is a break in the main cable
If many computers are attached, the amount of data flowing causes the network to slow down.
Star network
Node
Central
Star networks are one of the most common computer network topologies. In its simplest form, a star network consists of one central switch, hub or computer which acts as a router to transmit messages. If the central node is passive, the originating node must be able to tolerate the
reception of an echo of its own transmission, delayed by the two-way transmission time (i.e. to and from the central node) plus any delay generated in the central node. An active star network has an active central node that usually has the means to prevent echo-related problems. The star
topology reduces the chance of network failure by connecting all of the systems to a central node. When applied to a bus-based network, this central hub rebroadcasts all transmissions received from any peripheral node to all peripheral nodes on the network, sometimes including the
originating node. All peripheral nodes may thus communicate with all others by transmitting to, and receiving from, the central node only. The failure of a transmission line linking any peripheral node to the central node will result in the isolation of that peripheral node from all others, but the rest of the systems will be unaffected. Strictly speaking only networks that use switches have a true star topology. If the network uses a hub, the network topology has the physical appearance of a star, but is actually a bus.
Advantages
Good performance
Easy to set up and to expand. Any non-centralized failure will have very little effect on the network, whereas on a ring network it would all fail with one fault
Disadvantages
Expensive to install Extra hardware required
Ring network
Fig 2.3: Ring network layout
A ring network is a topology of computer networks where each node is connected to two other nodes, so as to create a ring. Ring networks tend to be inefficient when compared to Star networks because data must travel through less no. of points before reaching its destination. For example, if a given ring network has eight computers on it, to get from computer one to computer four, data must travel from computer one, through computers two and three, and to its destination at
computer four. It could also go from computer one through eight, seven, six, and five until reaching four, but this method is slower because it travels through more computers. Ring networks also