Discovery Zone: Keeping Knowledge Free!
Search:
Keywords:
In Association with Amazon.com
Another great reference
cover
Assembly Language Programs and Organizations of the IBM PC

ASSEMBLY PROGRAMMING AND OS DESIGN


1. Useful Trivia
1.1 The Compiler
1.2 History

<HOME>

 

CH1.2 History

<HOME><TOC><PREV><UP><NEXT>

Once upon a time, long, long ago, there were computers the size of small buildings.  These powerful machines could only run one program at a time and all of the programs were submitted on funny looking things called punch cards.  The Operating System for these cutting edge computational engines was the standard issue, underpaid, overworked lab tech.  As these machines gradually began to shrink to the size of small rooms, their complexity also grew.

In the 1950's a new concept of computing came along called the Batch System.  This system was a monitor program that knew how to respond to certain commands such as load and run.  Much to the overworked lab tech's relief, now all he had to do was place the jobs (alternate name for program) in order and feed them to the computer using a set of instructions that told the monitor what to do with them.  The monitor system really didn't control any resources and it was possible for jobs to damage the monitor or other pending jobs.

In the 1960's computers continued to shrink and a few new concepts came along.  By using a smaller and cheaper computer to do nothing but read cards, the main computer could be freed of that task and dedicated to actual processing.  Also, a protection scheme was introduced to prevent user programs from writing to the area in memory where the monitor exists.  This basic concept of protection is still in use today.

The first version of the UNIX system was developed at Bell Laboratories in 1969 by Ken Thompson and Dennis Ritchie as a private research project.  It was originally developed on a DEC PDP-7 computer and later moved to a DEC PSP-11.  UNIX was originally written in assembly language and contained a basic file system, process scheduler, and memory management.  Most early Research UNIX developers had previously worked on the MULTICS project which had a strong influence on the development of UNIX.  UNIX was the first timesharing system to gain large recognition and soon began spreading around the academic world like wildfire.  In 1971, the two guys who brought us UNIX, invented the language C and then rewrote the entire operating system in it.  AT&T was now using UNIX internally and Berkeley University began making it's own improvements as well.  The fork operation to create new processes comes from Berkeley's GENIE Operating System.  Today almost all flavors of UNIX in use are either AT&T System V based, or Berkeley Standard Distribution (BSD) based. 

Most of UNIX is written in C rather than assembly language.  However, the prevailing belief at the time was that an operating system had to be written in assembly language to provide reasonable efficiency and to get access to the hardware.  While that is no longer true today, assembly language still has some advantages in OS design.  Anytime you use a high level language (HLL), you are depending on the resulting compiled code to be efficient and correct.  But a poorly designed compiler, or library file can result in slow and even buggy code.  HLL's also provide a level of abstraction that allows you to write code without truly understanding what it does.  This is fine for end user applications because the operating system should protect the environment from bad code.  But if the OS is bad, then there is nothing stopping your entire system grinding to a halt.  In order to ensure that our OS will never need anything like the blue screen of death, we will use assembly and get it right the first time.

<HOME><TOC><PREV><UP><NEXT>
 

www.cynergysoft.com

Email any questions to the author, Nathan Daniels.

Copyright © 2001 - 2004