Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SOFTWARE (text15)

.doc
Скачиваний:
25
Добавлен:
01.05.2014
Размер:
33.28 Кб
Скачать

SOFTWARE

Although the hardware of a computer ultimately determines its capacity for storing and processing information, the user seldom has occasion to deal with the hardware directly. A hierarchy of programs, which together constitute the software of the computer, intervenes between the user and the hardware.

The part of the software that is most closely associated with the hardware is the operating system. To understand the kind of tasks done by the operating system, consider the sequence of steps that must be taken to transfer a file of data from the primary memory to disk storage. It is first necessary to make certain there is enough space available on the disk to hold the entire file. Other files might have to be deleted in order to assemble enough contiguous blank sectors. For the transfer itself sequential portions of the file must be called up from the primary memory and combined with "housekeeping" information to form a block of data that will exactly fill a sector. Each block must be assigned a sector address and transmitted to the disk. Numbers called checksums that allow errors in storage or transmission to be detected and sometimes corrected must be calculated. Finally, some record must be kept of where the file of information has been stored.

If all these tasks had to be done under the direct supervision of the user, the storage of information in a computer would not be worth the trouble. Actually, the entire procedure can be handled by the operating system; the user merely issues a single command, such as "Save file". When the information in the file is needed again, an analogous command (perhaps "Load file") begins a sequence of events in which the operating system recovers the file from the disk and restores it to the primary memory.

In most instances an application program is written to be executed in conjunction with a particular operating system. On the other hand, there may be versions of an operating system for several different computers. Ideally, then, the same application program could be run on various computers, provided they all had the same operating system; in practice some modification is often necessary. The microprocessor recognizes a limited repertory of instructions, each of which must be presented as a pattern of binary digits. For example, one pattern might tell the processor to load a value from the primary memory into the internal register called an accumulator and another pattern might tell the machine to add two numbers already present in the accumulator. It is possible to write a program in this "machine language", but the process is tedious and likely to result in many errors.

The next-higher level of abstraction is an "assembly" language, in which symbols and words that are more easily remembered replace the patterns of binary digits. The instruction to load the accumulator might be represented LOADA and the instruction to add the contents of the accumulator might be simply ADD. A program called an assembler recognizes each such mnemonic instruction and translates it into the corresponding binary pattern. In some assembly languages an entire sequence of instructions can be defined and called up by name. A program written in assembly language, however, must still specify individually each operation to be carried out by the processor; furthermore, the programmer may also have to keep track of where in the machine each instruction and each item of data is stored.

A high-level language relieves the programmer of having to adapt a procedure to the instruction set of the processor and to take into account the detailed configuration of the hardware. Two quantities to be added can simply be given names, such as X and Y. Instead of telling the processor where in primary memory to find the values to be added, the programmer specifies the operation itself, perhaps in the form X+Y. The program, having kept a record of the location of the two named variables, generates a sequence of instructions in machine language that causes the values to be loaded into the accumulator and added.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Хотя аппаратные средства компьютера в конечном счете определяют его способность{вместимость} для того, чтобы сохранить и обрабатывать информацию, пользователь редко имеет случай, чтобы иметь дело с аппаратными средствами непосредственно. Иерархия программ, которые вместе составляют программное обеспечение компьютера, вмешивается между пользователем и аппаратными средствами.

Часть программного обеспечения, которое наиболее близко связано с аппаратными средствами - операционная система. Чтобы понимать вид задач, сделанных операционной системой, рассмотрите{сочтите} последовательность шагов, которые должны быть взяты{предприняты}, чтобы передать{переместить} файл данных с первичной памяти на память на диске. Это первое необходимо делать некоторым есть достаточно пространства{пробела}, доступного на диске, чтобы держать полный файл. Другие файлы, возможно, придется удалить, чтобы транслировать достаточно многие непрерывные пустые сектора. Для передачи{перемещения} непосредственно последовательным частям файла нужно звонить от первичной памяти и объединяться со "вспомогательной" информацией, чтобы формировать блок данных, которые точно заполнят сектор. Каждый блок должен быть назначен адрес сектора и передан на диск. Числа{номера} назвали{вызвали} контрольные суммы, которые позволяют ошибки в памяти{хранении}, или передача, которая будет обнаружена и иногда исправился должна быть рассчитана. Наконец, некоторый отчет{рекорд} должен сохраниться из того, где файл информации был сохранен.

Если все эти задачи должны были быть сделаны при прямом диспетчерском управлении пользователя, память{хранение} информации в компьютере не будет стоить неприятность. Фактически, полная процедура может быть обработана операционной системой; пользователь просто выпускает единственную{отдельную} команду, типа "Сохраняют{Экономят} файл". Когда информация в файле необходима снова, аналогичная команда (возможно "файл Загрузки") начинает последовательность событий, в которых операционная система возвращает файл от диска и восстанавливает это к первичной памяти.

В большинстве образцов прикладная программа записана в быть выполненной вместе со специфической операционной системой. С другой стороны, могут быть версии операционной системы для нескольких различных{wотличных} компьютеров. Идеально, тогда, та же самая прикладная программа могла быть выполнена на различных компьютерах, если они все имели ту же самую операционную систему; практически некоторая модификация часто необходима. Микропроцессор распознает ограниченный набор команд, каждая из которых должна быть представлена как образец двойных цифр. Например, один образец мог бы сказать процессору загружать значение от первичной памяти во внутренний регистр названный сумматором, и другой образец мог бы сказать машине добавлять, два числа{номера} уже представляют в сумматоре. Возможно записать программу в этом "машинном языке", но процесс утомителен и вероятен привести ко многим ошибкам.

Следующий более высокий уровень абстракции - язык "трансляции{блока}", в каких символах и словах который более легко помнятся замена образцы двойных цифр. Команда, чтобы загрузить сумматор могла бы быть представлена LOADA и команда, чтобы добавить, что содержание сумматора могло бы быть, просто ДОБАВЛЯЮТ. Программа звонила, ассемблер распознает каждую такую мнемоническую команду и транслирует это в соответствующий двойной образец. В некоторых ассемблерах полная последовательность команд может быть определена и звониться по имени. Программа, написанная в ассемблере, однако, должна все еще определять индивидуально каждую операцию, которая будет выполнена процессором; кроме того, программисту, вероятно, также придется следить, где в машине каждая команда и каждый элемент{пункт} данных сохранены.

Язык высокого уровня освобождает программиста от необходимости приспособить процедуру к системе команд процессора и принять во внимание детальную конфигурацию аппаратных средств. Двум количествам, которые будут добавлены можно просто дать названия{имена}, типа X и Y. Вместо того, чтобы говорить процессор, где в первичной памяти, чтобы найти значения, которые будут добавлены, программист определяет операцию непосредственно, возможно в форме X+Y. Программа, ведя учет местоположения двух названных переменных, генерирует последовательность команд в машинном языке, который заставляет значения быть загруженными в сумматор и добавлен.