Главная · Карта сайта · Поиск · Статьи · Компьютерные курсы · Обучающие программы · Открытые проекты · Веб-программирование · Создание интернет-сайта · Полезные ссылки · Глоссарий · Контакты · Декабрь 06 2016 22:48:06
Последнее опубликованное

Что такое Model-View-Controller
Pattern Model-View-Controller

Как создать свой веб-сайт
Как создать свой сайт в интернете

Разное
Статистика

Что такое компьютер и как он устроен


Персональный компьютер

Часть 1.
Особенности представления информации в компьютере
Что такое бит
Что такое система счисления. Двоичная и шестнадцатеричная системы.
Что такое байт

Часть 2.
Из чего состоит и как работает современный компьютер
Общее устройство
Из чего состоит системный блок
Принцип работы

Что такое компьютер. Компьютер, как следует из его названия (на английском слово computer произошло от слова compute – считать, вычислять) – это вычислительное устройство. На самом деле, кроме как считать, считать много и быстро компьютер ничего более и не умеет. Различные периферийный устройства вывода, такие как монитор, принтер, аудио аппаратура, веб-камера и т.п. просто способны по-разному результаты этих вычислений преобразовывать в понятные нам сигналы. Различные устройства ввода (клавиатура, манипуляторы, планшеты и т.д.) занимаются обратной задачей: преобразованием внешних воздействий в понятные компьютеру наборы команд и данных. То, без чего компьютер просто не может существовать – это центральный процессор и запоминающее устройство (память компьютера). Первое умеет считать, а второе – хранить исходные данные и результаты вычислений. Компьютер производит вычисления по заранее заложенной в него программе. Программы пишут люди, а дело компьютера – их выполнять. Об этом чуть более подробно в конце материала, а сейчас вкратце о том, в каком виде компьютер воспринимает информацию.

Часть 1. Особенности представления информации в компьютере

Минимальной единицей информации для компьютера является один бит, который может принимать два значения. Одно из значений считают равным 1, а другое 0. На уровне “железа” (аппаратной части компьютера) единица информации представлена триггерами – классом электронных устройств, которые обладают возможностью длительно оставаться в одном из двух состояний. Значение выходного напряжения таких электронных устройств может иметь два значения, одно из которых ассоциируют с нулем, а другое с единицей. Если бы на базе полупроводников можно было легко и эффективно создавать электронные устройства, способные подолгу находиться, например, в трех или четырех состояниях, то и битом тогда считали бы единицу информации, принимающую три и более разных значений. Поскольку все же современные компьютеры построены на базе триггеров, то и система счисления в них используется двоичная.

Что такое система счисления. Система счисления – это способ представления числовой информации, определяемый набором символов. Для нас привычной является десятичная система счисления, представленная набором цифр от 0 до 9. Компьютеру для представления информации достаточно двух символов: 0 и 1. Почему это так - я попытался ответить чуть выше, когда описывал природу триггеров – аппаратной основы современных компьютеров. Как представляются числа в различных системах счисления, я покажу на примере десятичной, двоичной и шестнадцатеричной систем. Последняя широко используется в низкоуровневом программировании, поскольку более компактна, чем двоичная, а числа, представленные в 16-ричной легко перевести в 2-ю и наоборот.

Десятичная система счисления “СИ10”:
{0,1,2,3,4,5,6,7,8,9}.
Двоичная система счисления   “СИ2”:
{0,1}
Шестнадцатеричная система счисления “СИ16”:
{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
(для обозначения чисел 10, 11, 12, 13, 14 и 15 используются символы A, B, C, D, E и F)

Итак, пример: рассмотрим, как представляется число 100 с использованием этих систем.

“СИ10”: 100=1*100+0*10+0*1
“СИ2” : 01100100=0*128+1*64+1*32+0*16+0*8+1*4+0*2+0*1
“СИ16”: 64=6*16+4*1

Все это различные позиционные системы счисления с разным основанием. Позиционными системами счисления называют те системы, в которых вклад в общую сумму от каждого разряда определяется не только значением этого разряда, но и его позицией. Примером непозиционной системы счисления является римская система с ее L,X,V,I. Получаем, что значение числа, которое обозначается в позиционной системе счисления с определенным основанием, вычисляется следующим образом:

N=D0*B0+D1*B1+…+Dn-1*Bn-1+Dn*Bn
, где Di – величина разряда на i-м месте, начиная с 0, а B – основание системы счисления. Не забываем, что B0=1.

Как перевести число из шестнадцатеричной системы в двоичную и наоборот. Все просто, каждый разряд в 16-ричной системы переводите в 4 разряда двоичной системы и записывайте результат последовательно хоть слева направо, хоть справа налево. Наоборот: разбиваете двоичное число на тетрады (по 4 разряда строго справа налево) и каждую тетраду отдельно заменяете на один из символов 16-ричной системы счисления. Если последняя тетрада оказалась неполной, до дополняете ее нулями слева. Пример:

1010111100110 -> 0001(1).0101(5).1110(14).0110(6) -> 15E6

Для того, чтобы быстро умножить или разделить число на основание системы счисления, достаточно просто сдвинуть все разряды влево (умножение) и вправо (деление). Умножение на 2 в двоичной системе счисления называют сдвигом влево (в конце добавляется 0), а целочисленное деление на 2 – сдвигом вправо (последний символ убирается). Пример:

11011(27) << 110110(54); 11011(27) >> 1101(13)

Единицы информации компьютера. С минимальной единицей информации в вычислительной технике разобрались – это бит. Но минимальным адресуемым набором информации является не бит, а байт – набор информации, представленный 8-ю битами и, как следствие, способный хранить 256 (28) различных значений. Что значит минимальный адресуемый набор информации? Это значит, что вся память компьютера поделена на участки, каждый из которых имеет свой адрес (порядковый номер). Минимальный размер такого участка – байт. Я, конечно, упрощаю картину, но на данный момент такого представления достаточно. Почему именно 8 бит? Так сложилось исторически, а впервые 8-ми битовая (байтовая) адресация была применена в вычислительных машинах компании IBM. Наверное, сочли удобным, что единицу информации легко представить ровно двумя символами шестнадцатеричной системы счисления. А теперь развеем мифы насчет объемов данных, обозначаемых практически всем знакомыми словами килобайт, мегабайт, гигабайт, терабайт и т.д.

1 килобайт (кб) = 210 байт = 1024, а не 1000 байт.
1 мегабайт (мб) = 220 байт = 1048576 байт = 1024 килобайт, а не 1000.000 байт.
1 гигабайт (гб) = 230 байт, 1 терабайт (тб) = 240 байт и т.д.

Часть 2. Устройство компьютера

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

Уровень 1. Общее устройство компьютера

Системный блок компьютера

Системный блок

Системный блок компьютера – это тот самый ящик, из которого торчит шнур питания, к которому подключены монитор, клавиатура, мышь и принтер, и в который вставляют компакт диски, флешки и прочие внешние устройства. Можно сказать, что все устройства, которые подключены к системному блоку извне являются периферийными устройствами – выполняющими второстепенные задачи компьютера. Ну а в самом системном блоке находится все самое ценное и необходимое: блок питания, системная материнская плата и центральное процессорное устройство (центральный процессор) - “мозги” компьютера. А также, модули управления периферийными устройствами (контроллеры), видео и звуковая карты, сетевая карта и модем, транспортные магистрали для передачи информации (шины) и много еще чего полезного. Тем не менее, все это в первую очередь справедливо для домашних и офисных компьютеров. Например, глядя на ноутбук, сложно сказать, где у него заканчивается системный блок, и начинаются периферийные устройства. Все это деление условно, тем более что есть еще и коммуникаторы, планшетные компьютеры и прочие портативные вычислительные устройства.

Устройства ввода

Устройства ввода

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

Устройства вывода

Устройства вывода

Это устройства, которые предназначены для вывода результатов вычислений компьютера. Монитор выводит информацию в графическом электронном виде, принтер делает практически то же самое, но на бумаге, а аудио система воспроизводит информацию в виде звуков. Все это средства обратной связи с человеком в ответ на ввод им информации через устройства ввода.

Прочие устройства

К этой категории можно отнести любые подключаемые к компьютеру устройства от флеш карт и портативных жестких дисков, до модемов (в том числе wi-fi), роутеров и т.п. Классифицировать устройства – дело неблагодарное, поскольку делать это можно абсолютно по-разному, и всегда можешь оказаться прав. Например, встроенный модем сложно отнести к периферийным устройствам, хотя внешний модем выполняет абсолютно те же функции. Модем – это устройство для организации связи между компьютерами, и абсолютно не важно, где он находится. То же самое можно сказать про сетевую карту. Жесткий диск – это, прежде всего, энергонезависимое запоминающее устройство, которое может быть как внутренним, так и внешним. Приведенная выше классификация оборудования компьютера опирается в первую очередь на физическое месторасположения того или иного устройства в классическом персональном компьютере и только потом на его назначение. Это всего лишь один из способов классификации и не более того.

Материнская плата компьютера

Уровень 2. Начинка системного блока современного компьютера

Для начала пару слов о быстродействии компьютера. Это свойство характеризуется тактовой частотой и производительностью системы. Чем они выше – тем быстрее работает компьютер, но это не синонимы. Производительность любого компонента системы – это количество выполняемых им элементарных операций в секунду. Тактовая частота – это частота синхронизирующих импульсов, подаваемых на вход системы генератором тактовых импульсов, что, в свою очередь, и определяет количество выполняемых последовательно операций за единицу времени. Но производительность можно увеличить, обеспечив возможность выполнять элементарные операции параллельно при той же тактовой частоте, примером чего является многоядерная архитектура центрального процессора. Таким образом, нужно оценивать не только тактовую частоту, с которой работает процессор, но и его архитектуру.

Теперь о компонентах компьютера. С корпусом и блоком питания, я думаю, все понятно и без комментариев. Системная материнская плата и центральный процессор – это сердце компьютера и именно они занимаются управлением процессами вычислений. О них более подробный рассказ чуть ниже. Шины – это средство передачи информации между различными устройствами компьютера. Шины делятся на шины управления, которые передают коды команд; адресные шины, которые, как следует из их названия, служат для передачи адреса определенного контекстом команды набора аргументов или адреса, куда следует поместить результат; и шины данных, которые передают, непосредственно, сами данные - аргументы и результаты выполнения команд. Контроллеры – это микропроцессорные устройства, предназначенные для управления жесткими дисками, приводами внешних носителей информации и прочими видами устройств. Контроллеры – это посредники между инфраструктурой центрального процессора и конкретным устройством, подключенным к компьютеру. Жесткий диск – это энергонезависимое устройство хранения информации. Энергонезависимость запоминающего устройства – это его способность не утрачивать информацию после отключения питания. Помимо пользовательских данных, жесткий диск содержит программный код операционной системы, включая драйверы различных устройств. Драйвер устройства – это программа, управляющая его контроллером. Операционная система, например, Microsoft Windows, управляет всеми устройствами посредством драйверов, которые имеют понятный ей программный интерфейс. Драйверы, как правило, разрабатываются поставщиками комплектующих компьютера отдельно для каждого вида операционной системы. Также, системный блок не может обойтись без системы охлаждения и панели управления, позволяющей включать и выключать компьютер.

Уровень 3. Как работает компьютер

Как в компьютере представлены данные. Все данные для компьютера – это набор чисел. Как хранятся положительные целые числа, я рассказал в самом начале. Данные, которые могут быть как положительными, так и отрицательными, в первом разряде (в 1-м бите) хранят знак (0-плюс, 1-минус). Про особенности хранения вещественных чисел рассказывать подробно не буду, но следует знать, что вещественные числа в компьютере представляются с помощью мантиссы и экспоненты. Мантисса - это правильная дробь (числитель меньше знаменателя), у которой первый знак после запятой больше нуля (в двоичной системе это означает, что после запятой первый разряд - 1). Значение вещественных чисел вычисляется по формуле D=m*2q, где m – мантисса, а q -экспонента, равная log2(D/m). В памяти компьютер хранит не саму мантиссу, а ее значащую часть - знаки после запятой. Чем больше разрядов (битов) выделено под мантиссу, тем выше точность представления вещественных данных. Пример:

Число ПИ в десятичной системе счисления выглядит примерно так:
ПИ=3,1415926535...
Приведем число к виду правильной дроби, умноженной на 10 в соответствующей степени:
ПИ=3,1415926535 = 0.31415926535*101=m*10q, где m=0.31415926535, q=1.

Таким образом, мы представили вещественное число в виде двух целых чисел, поскольку для хранения мантиссы достаточно хранить только знаки после запятой (31415926535). Нужно учитывать, что и мантисса и экспонента могут быть как положительными, так и отрицательными числами. Если число отрицательное, то и мантисса отрицательная. Если число меньше одной десятой, то экспонента отрицательная (в десятичной системе счисления). В двоичной системе счисления экспонента отрицательная, если число меньше 0.5. Теперь попробуем проделать то же самое в двоичной системе счисления.

Немного округлим исходное число: 
ПИ10=3.1415=3+0.1415
Итак, 3 в двоичной системе это 11. Теперь разберемся с дробной частью.
0.1415=0*0.5+0*0.25+1*0.125+…= 0*2-1+0*2-2+1*2-3+…
В итоге получим примерно следующее:
ПИ2=11,001001000011=0.11001001000011*22=m*2q, где m=0.11001001000011, а q=2.

Теперь должно стать понятным, что я имел в виду под точностью представления вещественных чисел. На мантиссу потрачено 14 разрядов, а для числа ПИ удалось сохранить только лишь несколько знаков после запятой (в десятичной системе счисления). Также, работая на компьютере, можно столкнуться со следующей формой записи числа:

6,6725E-11
Это не что иное, как
6,6725*10-11
Текст – это последовательность символов, а каждый символ имеет свой числовой код. Кодировок текста существует несколько. Наиболее известные и широко применяемые кодировки текста – это ASCII и UNICODE. Графика – это последовательность точек, каждая из которых соответствует определенному цвету. Каждый цвет представлен 3-мя целыми числами: составляющей красного (red), зеленого (green) и синего (blue) цветов RGB палитры. Чем больше разрядов отводится под хранение цвета, тем большим спектром цветов вы можете оперировать. Видео – это просто последовательность статических кадров. Существуют технологии сжатия видео, которые, к примеру, отдельные участки видео хранят как один кадр и последовательность дельт – отличий последующих кадров от предыдущего. При условии, что соседние кадры отличаются не абсолютно всеми точками (например, мультипликация), такой подход позволяет сэкономить на общих объемах материала. Звук – это сигнал, который из аналогового представления можно перевести в цифровое путем дискретизации и квантования (оцифровки). Естественно, что оцифровка приведет к потере качества, но такова цена цифрового звучания.

Центральный процессор компьютера

Как организован процесс вычислений. Материнская плата – это печатная плата, на которой установлен центральный процессор (ЦП). Также, через специальные разъемы к материнской плате подключены модули оперативной памяти, видеокарта, звуковая карта и прочие устройства. Материнская плата – это агрегирующее звено в архитектуре современного компьютера. Материнская плата снабжена системным контроллером (северный мост), обеспечивающим связь центрального процессора с оперативной памятью и графическим контроллером, а также, периферийным контроллером (южный мост), отвечающим за связь с контроллерами периферийных устройств и постоянным запоминающим устройством. Северный и Южный мост вместе образуют чипсет материнской платы - ее базовый набор микросхем. Оперативная память или оперативное запоминающее устройство (ОЗУ) – это энергозависимая память компьютера, в которой хранятся исполняемый программный код и сами данные программы. Объем оперативной памяти влияет на производительность компьютера, поскольку именно ОЗУ определяет объем обрабатываемой в каждый момент времени информации. Постоянное запоминающее устройство (ПЗУ) – это энергонезависимая память компьютера, которая хранит самую важную для него информацию, в том числе программу первоначальной загрузки компьютера (до загрузки операционной системы) – BIOS (basic input/output system — базовая система ввода-вывода). Данные ПЗУ обычно записывает производитель материнской платы. Видеокарта – это самостоятельная плата со своим процессором и своей оперативной памятью (видеопамять), предназначенная для быстрого преобразования графической информации в тот вид, который можно напрямую вывести на экран. Процессор видеокарты оптимизирован для работы с графикой, в том числе, для обработки трехмерной графики. Тем самым, процессор видеокарты разгружает центральный процессор от такого вида работ. Чем выше объем видеопамяти, тем быстрее и чаще компьютер способен обновлять данные на экране, и тем шире может быть спектр используемых цветов. Центральное процессорное устройство (ЦПУ) может состоять из нескольких процессоров, каждый из которых способен параллельно остальным выполнять свою программу. Раньше процессор и ядро процессора были синонимами. Сейчас ЦПУ может состоять из нескольких процессоров, а каждый процессор из нескольких ядер. Ядро микропроцессора – это арифметико-логическое устройство (АЛУ), контроллер ядра и набор системных регистров. АЛУ, как следует из его названия, умеет выполнять арифметические и логические операции с числами, загруженными в регистры. Набор регистров служит для хранения адреса текущей команды (команды хранятся в оперативной памяти, а регистр IP (Instruction Pointer) указывает на текущую команду), адресов загружаемых для выполнения команды данных и самих данных, включая результат выполнения команды. Ядро, собственно, и управляет всем этим процессом, выполняя низкоуровневые команды процессора. К таким командам относятся загрузка данных в регистры, выполнение арифметических операций, сравнение значений двух регистров, переход к следующей команде и т.д. Сам микропроцессор обменивается данными с оперативной памятью посредством контроллера оперативной памяти. Хотя время доступа к оперативной памяти намного меньше, чем, к примеру, время доступа к информации на жестком диске, но при интенсивных вычислениях всех же это время становится заметным. Для организации хранения данных, время доступа к которым должно быть минимальным, служит сверхоперативная память (кэш память).

Обобщенная схема компонентов компьютера
Обобщенная схема компонентов компьютера.

Кто или что управляет процессом вычислений. Процессом вычислений, как я уже сказал в начале, управляет компьютерная программа. Программы пишутся на различных языках программирования и чаще всего на языках программирования высокого уровня. Основными конструкциями языка программирования высокого уровня являются: объявление переменных различных типов, выполнение арифметических и логических операций, условные операторы и циклы. Человеку, программирующему на языке высокого уровня не нужно задумываться, как обрабатываемая им информация представляется в компьютере. Все вычисления, в основном, описываются в привычной для него десятичной системе счисления. Программист определяет структуры данных в том виде, в котором ему удобно. В его распоряжении серьезный арсенал уже готовых программных компонентов, решений и технологий программирования: объектно-ориентированный подход, средства организации параллельных вычислений, сервисы работы с базами данных и т.д. и т.п. Далее, специальные программы, называемые компиляторами, переводят текст программы в машинный код – на язык команд, понятный центральному процессору компьютера. Как выглядит программа на языке программирования высокого уровня можно, к примеру, посмотреть на страницах курсов программирования этого сайта, а как выглядит программа на языке низкого уровня, приближенного к машинному коду (assembler), смотрите ниже (эта программа всего лишь выводит сообщение “Hello, world”).

.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
 
.data
        msg db "Hello, world", 13, 10
        len equ $-msg
 
.data?
        written dd ?
 
.code
start:
        push    -11
        call    GetStdHandle
 
        push    0
        push    OFFSET written
        push    len
        push    OFFSET msg
        push    eax
        call    WriteFile
 
        push    0
        call    ExitProcess
 
end start

Один оператор на языке высокого уровня трансформируется в десятки, а то и сотни строк машинного кода, но поскольку это происходит автоматически, то переживать по этому поводу не стоит. В момент запуска программы, операционная система выделяет ей отдельный процесс, загружает машинный код в оперативную память, инициализирует регистры (в регистр IP помещает адрес самой первой инструкции), и вычислительный процесс начинается.

Считаю, что в рамках этого материала рассказ о том, как устроен современный компьютер, можно закончить. Теперь вы знаете в общих чертах, из чего он состоит и как работает, а детали без труда найдете в интернете.



Теперь можно приступить к изучению следующих вопросов, связанных с компьютером:


Компьютерные курсы и курсы программирования
Основы программирования

Курс для начинающих программистов на C# и VB.NET.

SQL 25™

Построение SQL запросов и работа с базой данных.

C# Quick Guide™

Программирование на C#. Краткое руководство.

RegEx

Применение регулярных выражений.

Plug-in архитектура

Примеры программной Plug-in архитектуры.

XML и его расширения

Язык разметки XML и его расширения с примерами.

HTML и разметка гипертекста

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна

Основы веб-дизайна: решения типовых задач верстки.

Программирование на PHP

Руководство по программированию на PHP для начинающих.

Справочные материалы

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь
.
Coding Craft. Все права защищены © 2011. Проект Инициативного Народного Фронта Образования - ИНФО-проект.