Pages

Sunday 11 December 2011

Story of a penguin - The Birth


Year 1991, beginning of final decade of 20th century. In the field of computing a great future prevailed on horizon as powerful hardware emerged pushed the limits of the computers beyond what anyone expected. But in the field of software something was missing.
It was none other than heart of all software system of computers – operating system. Yeah, DOS was ruling the world of personal computers, but it was barely an operating system with very limited capabilities. It was just success of Bill Gates’ cleaver marketing strategies. Mac was giving good performance and feel but at the prices stated by Apple, common man couldn’t afford it.
Another camp was the world of UNIX, dedicated to computing with high performance and reliability, the source code of which was taught in universities. But in quest of money, vendors closed the publicity of source code and also priced it high enough so that small users stayed away. Similar went for other UNIX like systems e.g. BSD (Bell labs held them down with lawsuit for using unix code).
The MINIX operating system developed by Prof. Andrew Tanenbaum was good, source code was also available, but it still lacked in some basic capabilities like effective multithreading, efficient use of hardware specific features etc. because of which user wasn’t able to draw full functionality out of purchased hardware.
And on 5th October 1991 a post struck the MINIX newsgroup
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Free minix-like kernel sources for 386-AT
Message-ID: <1991Oct5.054106.4647@klaava.Helsinki.FI>
Date: 5 Oct 91 05:41:06 GMT
Organization: University of Helsinki
Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs? Are you finding it frustrating when everything works on minix? No more all-nighters to get a nifty program working? Then this post might be just for you :-)
As I mentioned a month (?) ago, I'm working on a free version of a minix-lookalike for AT-386 computers. It has finally reached the stage where it's even usable (though may not be depending on what you want), and I am willing to put out the sources for wider distribution. It is just version 0.02 (+1 (very small) patch already), but I've successfully run bash/gcc/gnu-make/gnu-sed/compress etc under it. Sources for this pet project of mine can be found at nic.funet.fi (128.214.6.100) in the directory pub/OS/Linux. The directory also contains some README-file and a couple of binaries to work under linux (bash, update and gcc, what more can you ask for :-). Full kernel source is provided, as no minix code has been used. Library sources are only partially free, so that cannot be distributed currently. The system is able to compile "as-is" and has been known to work. Heh. Sources to the binaries (bash and gcc) can be found at the same place in /pub/gnu.
Yes, it was the birth of baby Linux, world’s first free operating system kernel.

Flashback watched

Early computer systems didn’t have a communicator between their Hardware and User programs. i.e a program/application was written as hardware instructions specific for that hardware. As a result applications were costly and rigid. From these problems the concept of operating systems emerged into the world of computers - An intermediate r between user applications and underlying hardware of computer. Operating systems used to take instructions from user programs, and convey them appropriately to the hardware and convey back the results from hardware to user programs. Because of this writing programs became simpler as it decoupled the logic from machine instructions.
Through the time operating systems having varying characteristics were developed according to application need e.g. Multi-User / Single User OS, Multitasking/Single Tasking OS etc. Different OS had their own benefits and drawbacks and they were used in their specific area of application.

Evolution – UNIX

Ritchie And Thompson working at Bell labs
In need of doing batch processing jobs, Bell Labs created MULTICS (Multiplexed Information and Computing Service) in joined forces with General Electric and MIT. Though it was having many innovations over previous operating systems, it had many problems.
Frustrated with size and complexity of Multics, Bell Labs slowly pulled out of the project. In spite of it few last researchers including Dennis Ritchie and Ken Thompson decided to continue their work on a smaller scale. As a result first version of UNICS (UNiplexed Information and Computing Service) came out in summer of 1969 (Later in same year our hero of story Linus Torvalds was born).
Later with newly developed programming language C was developed by Ritchie and Thompson. Now the UNICS was rewritten in this new language and was released in 1973. The features like muti-tasking and multi-user support were added. Shortly UNICS was renamed as its current popular name UNIX.
As UNIX was not written in assembly language but higher level C language it was forbidden to enter into computer business (under 1958 consent decree), hence AT & T decided to make the UNIX source codes available to universities and commercial firms.
As a result many different variants of UNIX OS were developed by different organizations prominent of which are BSD by CSRG, Xinix OS by Microsoft. This also promoted study of practical operating systems in university students.
Later in early 1980’s AT & T was relieved from 1958 consent decree, they decided to commercialize UNIX immediately.
UNIX sources were no more available for academic use.

Apple & Microsoft

Steve Jobs and Bill Gates
While UNIX of Bell Labs gained its popularity in commercial and university world, two other major organizations just came into world of operating system as major players for personal computer operating systems. The two were none other but the Great Microsoft and Apple.
The Microsoft corp. was founded by Bill Gates and Paul Allen in 1975. Though initial development by the organization were mainly related to BASIC programming language and its implementation for various hardware platforms (including Apple II and IBM PC) later it came in market as major player in area of operating systems. Though First OS publically released by Microsoft was a variant of UNIX named as Xinix in 1980 (as mentioned earlier), DOS was the operating system that brought real success to Microsoft.  In 1981 IBM asked Microsoft to provide an OS similar to CP/M (one of the popular microcompurter OS). Instead of building it from level 0, Microsoft bought a CP/M clone called Q-DOS from Tim Paterson of Seattle Computer Products for less than 100,000 USD. IBM renamed the OS as PC-DOS. The OS became highly popular due to its simplicity and low cost. While IBM had their PC-DOS, Microsoft continued to develop their own DOS version – MS-DOS and ported it for various hardware platforms like Eagle and Compaq. Soon Microsoft grew from small player to major software vendor in home computers industry with help of aggressive marketing of MS-DOS to different PC manufacturers.


While Microsoft targeted market with simple and cost effective operating systems, Apple strived for high capability hardware and innovative user interface. They used latest design ideas to discover beautiful user interface, better display mechanisms and created a product as combination of both hardware and software. As the Operating system written here was targeting for a specific hardware, it was very effective in using the underlying hardware with minimal memory requirement. The computers of Apple series (Apple I, II, III) shown a great deal of design in all computational fields. Steve Wozniak who created these designs quickly gained reputation as a master designer. On the other hand Steve Jobs mainly worked on finance, marketing and user interface part of Apple Inc. and with great ideas of Jobs Apple soon became a multimillion-dollar company.
Later Developed ‘Lisa‘ Series & ‘Macintosh’ Series by Apple, ‘Windows’ Series by Microsoft and ‘OS/2‘ Series by IBM brought the computer user to world of GUI.

The GNU project

Stallman
Richard Stallman – a physics graduate student at MIT ended his pursuit of a doctorate in physics to focus on his programming work at MIT AI Laboratory. He worked here on projects like TECO, Emacs, and the Lisp machine Operating System.
In late 1970s and early 1980s most manufacturers stopped distributing source code of their software to prevent their competitors from using it. They began to use copyright and restrictive software licenses to limit copy and redistribution. This was a great inconvenience to the software users because they cannot modify the product they have purchased to meet their needs. Stallman especially felt this while he was working at MIT. His argument was like this,
The modern copyright and licensing agreements that user has to sign while purchasing software are mostly non-disclosure agreements. In short this means that the first step in using computers was a promise not to help your neighbor. A cooperating community was forbidden. The rule made by the owners of proprietary software was,”if you share with your neighbor, you are a pirate. If you want any changes, beg us to make them.” The idea that the proprietary software social system - the system that says you are not allowed to share or change software is -  antisocial, that it is unethical, that it is simply wrong, what else could we say about a system based on dividing the public and keeping users helpless?
He started his fight with the corporate licensing system by announcing GNU project in 1983. In February 1984 he left MIT to work full-time on GNU project. His aim was to create a free operating system ‘GNU’, which would be compatible with UNIX.
He started his journey by writing GNU C compiler (GCC), an amazing feat for an individual programmer. With his legendary technical wizardry, he alone outclassed entire groups of programmers from commercial software vendors while creating GCC, considered as one of the most efficient and robust compilers ever created. After that he and the GNU group written many necessary tools like Emacs (text editor), gdb (debugger), gmake (build automaker) that form basic environment. Though most of the basic components of an operating system were ready by 1990 the core of all, the kernel of operating was not still ready. GNU was still working on the kernel of their new operating system Hurd.

Professor Andrew S. Tanenbaum and MINIX

Prof. Andrew Tanenbaum

Professor Andrew S. Tanenbaum is a professor of computer science at Vrije Universiteit, Amsterdam. He is the author of famous books Computer Networks, Operating Systems: Design and principles etc.
While Stallman was working on his GNU project, Professor Tanenbaum created a UNIX-like operating system called MINIX. It was primarily developed for educational purpose and first released in 1987, with its complete source code available to universities for study in courses and research.
In 1988 Linus Torvalds enrolled in University of Helsinki for graduation in computer science. His educational career was interrupted after his first year of study as he joined the Finnish Army. In the army he holds the rank of second lieutenant, with role of ballistic calculation officer.
In 1990 he resumed his studies. He started to learn core computer science including programming languages and operating systems. During this period he came in contact with C programming and MINIX operating system.
In early 1991 he got his hands on his new IBM compatible personal computer with 33MHz Intel 386 processor and huge 4 MB of Memory. This processor greatly appealed to him because it represented a tremendous improvement over earlier Intel chips. As intrigued as he was with the hardware, however, Torvalds was disappointed with the MS-DOS operating system that came with it. That operating system had not advanced sufficiently to even begin to take advantage of the vastly improved capabilities of his computer, and he thus strongly preferred the much more powerful and stable UNIX operating system that he had become accustomed to using on the university's computers, but even a basic UNIX system was not available below 5,000 USD. As a result he started using MINIX on this new beast he got.
But as he started using MINIX he started to learn about its disadvantages also. Although much more powerful than MS-DOS and designed to run on Intel x86 processors, all of its source code was not available. It also lacked some features and performance of UNIX and had serious problems related to multithreaded processing. And not to mention it had a significant amount of license fee (very less as compared to other operating systems).

The Birth

Linus Torvalds
Torvalds decided to create a new operating system from scratch that was based on both MINIX and UNIX. It is unlikely that he was fully aware of the tremendous amount of work that would be necessary, and it is even far less likely that he could have envisioned the effects that his decision would have both on his life and on the rest of the world. Because university education in Finland is free and there was little pressure to graduate within four years, Torvalds decided to take a break and devote his full attention to his project.
On August 25, 1991, he announced his initial creation on the MINIX newsgroup comp.os.minix as follows:
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready.I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system(due to practical reasons) among other things). I've currently ported bash(1.08) and gcc(1.40),and
things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(

On September 17 of the same year, after a period of self-imposed isolation and intense concentration, he completed a crude version (0.01) of his new operating system. Shortly thereafter, on October 5, he announced version 0.02, the first official version.
The baby penguin came to the world!


2 comments: