I have been chasing the concept of the ideal operating system for a long time now. All I am getting done is growing older.
I will start over. I should resist every temptation to start over more often than once a year. So let me call this the 2010 version - OS 2010, for short.
First - what is an operating system?
I assume a computer and a user. The user is an alleged human being sending instructions to the computer about what it should do. I say "alleged" because it is easy to visualize other sources for the instructions. From the computer's point of view what is characteristic of a human being is complete unpredictability. A human user might to anything at any point in time (except that the human is very slow by machine standards).
The computer is an electronic machine controlled by software. Software is a collection of instructions that the machine can understand. The software the machine has access to was created by the machine itself or another computer based on input provided by a very special user called a programmer.
Things are set up so that changing the software is not easy. Only a programmer is supposed to be able to do it. To the general user the software is an unchangeable quantity. However software is divided into pieces which I will call programs. The user may not be able to change a program - but she can, in general, decide whether or not to use it. The parts of the software that cannot be unused (although possibly inactive) are the kernel.
The operating system is the software that is always assumed to be present. It is divided between the kernel and utilities. It is possible to load still more software onto the computer. This additional software is called applications. The border line between utilities and applications is fuzzy. The general usage to call big obvious software programs like editors and web browsers applications and less obvious things like a shell utilities. Utilities often exist only to support other software - which is, of course, why they are called utilities.
A computer accepts input from the user and other sources (for example, the internet) and is capable of a variety of output. However the dominant output is currently one or more screens.
Audio output must be taken into consideration but fortunately it is in most ways simpler than visual output (to a screen) so I need only to discuss screens.
A screen is a rectangular (not required - but always convenient) array of pixels. A pixels is capable of displaying a dot of color. Pixel technology seems to be limited to about a hundred pixels per inch and is less sharp than human vision which can differentiate around a thousand dots per inch. Nevertheless screens have been proven to be satisfactory for almost all known uses. The color the pixel displays can be defined adequately by 32 bits of information. (This is actually more differentiation then is needed for the human eye which can distinguish around a million colors. But more than 16 bits are needed and computer architecture strongly favors using only a power of two.).
Audio input is a long time dream and will doubtless someday be implemented routinely but it is currently still an undeveloped technology. At the moment it appears that all that can be done is to reduce speech to writing (and not in a wholly satisfying way) and then treat it like written input. So I will ignore audio input hereafter.
There seem to be two ways a human can input to a computer - hit a key or point a pointer. A key has two states - up or down. A pointer is an integrating device. A position must be maintained somewhere and movement messages change its value. In one dimension there are two movements - up or down one quantum. An example of a one dimensional pointer is a scroll wheel. Two-dimensional pointers can be decomposed into two one-dimensional pointers.
Thus I can reduce the human input to a stream of one bit messages.
This is more than is needed for keys where the message can have 0 bits (because up and down must alternate). But the redundancy is harmless.
Even better I can view the human input as a stream of numbers. Every number is the index of one of the two alternatives on one or another input device. On existing machine a single byte would suffice.
So the situation is asymmetrical. On the input side I have the relatively simple model of a stream of bytes (or whatever larger size is convenient). On the output side I have millions of pixels. A primary task for the operating system is to provide utilities that make it possible for applications to manipulate these interfaces with a minimum of difficulty.
Source: http://kleinecke.blogspot.com/2010/08/os-2010.html
0 nhận xét: on "OS 2010"
Post a Comment