§ 2.2. Персональный компьютер
Все устройства, входящие в состав ПК, можно разделить на две группы: 1) устройства, образующие системный блок; 2) внешние устройства.
- материнская плата — к ней подключены все остальные устройства системного блока; через материнскую плату происходит обмен информацией между устройствами, их питание электроэнергией;
- центральный процессор (CPU);
- оперативная память (RAM);
- жёсткий диск (HDD) — магнитный диск в герметичном корпусе, служащий для длительного хранения информации; на нём расположены программы, управляющие работой компьютера, и файлы пользователя;
- устройство для чтения/записи на CD, DVD (дисковод и накопитель);
- карты расширений 1 :
-
1 Устройства, соединяемые с материнской платой с целью добавления дополнительных функций.
- видеокарта (Video Card) — предназначена для связи системного блока и монитора; передаёт изображение на монитор и производит часть вычислений по подготовке изображения для монитора;
- звуковая карта (Sound Card) — предназначена для подготовки звуков, воспроизводимых колонками, в том числе для записи звука с микрофона;
- сетевая карта — служит для соединения компьютера с другими компьютерами по компьютерной сети;
Рис. 2.5.
Устройства системного блока
Разновидности
- Данных – предназначена для обмена информацией между центральным процессором и внутренними устройствами компьютера.
- Адреса – используется для пересылки обрабатываемых данных между узлами устройства, по ней информация передаётся в ЦП, считывается из него.
- Управления – магистраль для отправки управляющих сигналов, которые обеспечивают взаимодействие блоков компьютера между собой, с периферийными устройствами.
FSB различает четыре основных типа сигналов для управления работой устройств: запись, чтение, обмен с памятью, периферией.
Основная функция системной шины состоит в организации взаимодействия, информационного обмена между ЦП и внутренними компонентами ПК. Их архитектура зависит от модели материнской платы, используемого на ней набора логики, разрядности, типа процессора.
Северный мост определяет частоту системной шины, максимальный объём оперативной памяти, её стандарт. На материнских платах с интегрированным видеоядром к функциям FSB добавляется управление видеоадаптером.
Сетевые устройства
Коммутаторы и маршрутизаторы
Коммутаторы используются в основном в офисных зданиях, где установлено много компьютеров. Компьютеры подключаются к коммутатору через патч корд, и получают доступ к обмену данных.
Современные коммутаторы имеют от 12 Ethernet портов для подключения и 2 оптических для скоростного соединения с дополнительными устройствами.
Маршрутизаторы используются в корпоративной сети для разделения сети на сегменты и распределение доступа к ней.
WI-FI роутер
WI-FI роутер – это устройство, которое связывает компьютеры по беспроводной сети. При выборе роутера руководствуйтесь тем, что он должен иметь поддержку 5 Ghz и желательно более трех внешних антенн.
На заметку . При подключении используйте сеть 5 Ghz – это избавит от перегрузки канала, и даст хороший прирост к скорости до 1 Гб/с.
Модем
В былые времена интернет работал при помощи DIAL UP модема. Он мог быть встроенным, который подключается в разъём PCI, и внешним, который подключается через COM порт. Данный вид вышел с производства очень давно и на сегодняшний день используется новый вид – 4G модемы.
4G модемы подключаются в USB порт и соединяют компьютер с интернетом через сотового оператора. Это удобно, если вы часто перемещаетесь – интернет всегда с собой.
Более подробно о разделении на клиент-сервер
Разделение на клиент и сервер реализовано при помощи встроенной функциональности CPU, разделения памяти и программных проверок.
Производители оборудования сотрудничают с разработчиками ОС, поэтому в процессоре есть механизмы созданные с учётом потребностей создателей операционных систем. Во всех современных процессорах реализован механизм ролей пользователя, где под пользователем понимается исполняемый в данный момент код. В веб приложениях роль залогиненого пользователя хранится в какой-то переменной и помимо понятного названия Admin или User имеет Id этой роли который чаще и используется при авторизации, потому как сравнивать числа быстрее и проще чем строки. В процессоре роль текущего пользователя хранится в поле которое называется “кольцо безопасности” (Security Ring), а не “CurrentUser.Role.Id”. В большинстве процессоров это поле принимает четыре значения от 0 до 3. Windows использует 0 для роли которая называется “Режим Ядра”, потому как это самый привилегированный режим и самое большое значение для роли “Режим Пользователя”, потому как это самая ограниченная роль. Остальные роли не используются потому как различие между 0 и 1, 2 и 3 незначительное. Эти роли ограничивают страницы памяти которые могут быть адресованы, нельзя вызывать некоторые инструкции или же нельзя их вызывать с определёнными аргументами. Так же есть ограничения на использование технологии I/O Ports для обмена данными с устройствами такими как клавиатура, но она уже лет 10 не используется. Переключение в режим ядра происходит через команду syscall, которая по индексу находит в массиве указателей на APIs Windows функцию которую надо вызвать. Указатель на этот массив сохраняется в специальном регистре процессора во время загрузки ОС.
Я специально назвал регистр ЦПУ полем. Когда вы пишете программу на C#, то можете добавлять сколько угодно полей в свой класс и давать им понятные названия. У процессоров и микроконтроллеров поля называются регистрами. Когда вы проектируете железку то нужно уже на этом этапе понять сколько регистров (полей) надо, какого размера они должны быть и какой функционал на них возложить, чтобы этого хватало на все случаи жизни для всех мыслимых и немыслимых ситуаций. Представьте, что вам надо написать программу на C#-подобном языке программирования у которого в классе 16 предопределённых полей и вы не можете использовать локальные переменные. Т.е. одно и то же поле может использоваться для хранения залогиненного пользователя, отсортированного массива, временных данных или результата выполнения метода. Имена таких полей должны быть максимально общими, вместо tempData, funcResult будут странные имена EAX, AH, AL, DX и пр. Если бы вы писали на C# эмулятор процессора на архитектуре x86, то код мог бы выглядеть примерно так (DIV — divide, команда целочисленного деления):
Для иллюстрации я добавил проверку на режим ядра. Если происходит ошибка деления на ноль, то процессор уведомляет об этому ОС через прерывание (выбрасывает событие). Во время загрузки ОС предоставляет процессору одномерный массив указателей на функцию, который называется вектор прерываний, где каждому индексу соответствует какое-то событие к примеру деление на ноль. ОС знает архитектуру процессора на котором исполняется и может соответствующим образом упорядочить в массиве указатели на функции. CPU вызывает эту функцию и ОС свой код. К примеру Windows смотрит в реестре установлен ли отладчик и показывает сообщение о том что произошла ошибка и есть возможность запустить дебаггер чтобы посмотреть на место где она произошла. Прерывание называется прерыванием потому как оно вклинивается в нормальный ход выполнения программы и даёт возможность выполнится обработчику прерывания и только после его завершения процессор может вернуться к исполнению программы.
Прерывания могут генерироваться не только процессором но и внешними устройствами (клавиатура, мышь) или программным кодом. Планировщик потоков устанавливает таймер который с интервалами равными одному кванту (по умолчанию около 15мс, в Windows Server больше) генерирует прерывание чтобы по внутреннему алгоритму назначить другой поток на исполнение. Пошаговое исполнение программы в Visual Studio так же полагается на механизм прерываний — у процессора устанавливается флаг, который после каждой команды вызывает прерывание которое обрабатывает Windows Debugging Engine и уведомляет через API Visual Studio.
Разделение памятью реализовано благодаря виртуальной памяти. Ранее я говорил что ОС это менеджер ресурсов и виртуальная машина. Даже если у вас 1Гб RAM 32х битный Windows будет работать так как если бы у вас было 4Гб оперативки, т.е. реально у вас 1Гб, а виртуально 4Гб. Современные компьютеры основаны на теоретической модели машины Тьюринга или же архитектуре фон Неймана (с некоторыми изменениями). Согласно этим моделям память в компьютере это лента состоящая из ячеек размером один байт. Эти ячейки сгруппированы в страницы как правило по 4096 байт (4Кб), потому как:
- С т. зр. CPU нет разницы между кодом и данными, что приводит к трудновыявляемым ошибкам и возможностям для взлома. Если регионы памяти пометить атрибутами по которым можно сказать, что здесь находится код, а здесь данные только для чтения, а сюда можно писать, то это решит указанные проблемы. Так же можно пометить страницы доступные только в режиме ядра.
- Поддержка виртуальной памяти процессором, который умеет копировать страницу виртуальной памяти в физическую. Физическая память RAM так же представлена в виде страниц по 4Кб. Кэш процессора считывает память из RAM страницами, потому как часто программа читает расположенные рядом данные.
- Кажется что процесс владеет всей доступной ему памятью, хотя реально его запросы на выделение динамической памяти (оператор new в С++) ОС удовлетворяет только когда процесс попытается прочитать/записать её. Exe-файл полностью не загружается в память, а отображается с диска и когда нужно исполнить код или считать данные они загружаются в память c диска. Эти механизмы основаны на страницах.
- Имитация эксклюзивного пользования RAM каждым процессом. Когда планировщик потоков назначает поток на выполнение он загружает в регистры процессора информацию о мапинге виртуальных страниц процесса в физические страницы и когда код потока пытается прочитать/записать какой-то адрес процессор правильно его транслирует. Помимо процессов на эмуляцию эксклюзивности пользования RAM полагаются сессии, которые содержат код и данные специфичные для отдельного пользователя, к примеру глобальная очередь сообщений. В Windows 10 есть контекст потока, процесса и сессии.
64 битный адрес позволяет адресовать 16 экзабайт, это 18,446,744,073,709,551,616 ячеек памяти. Современные процессоры пока что не поддерживают так много RAM и поэтому используют только младшие 48 бит адреса, остальные 16 заполняются старшим разрядом. Поэтому Win x64 попросту не использует часть адресов, которые помечены на рисунке выше чёрным. Но это не значит, что 64х битный Windows “видит” 256 Tb оперативки. Максимум 8TB виртуальной памяти на архитектуре IA64 и 7TB на x64. Предел физической памяти поддерживаемой Windows 10 — 2TB, потому как с большим количеством Винда не тестировалась. Объём поддерживаемой RAM в Windows 10 определяется во многом редакцией ОС, чем дороже тем больше.
Почему ячейки памяти пронумерованы шестнадцатиричными (HEX) числами, а не десятичными или двоичными? Адрес ячейки это не просто порядковый номер, в нём закодировано три числа по которым эту ячейку можно отобразить на физическую память. Первые два это индексы по которым находится конкретная страница виртуальной памяти, а третье число — смещение от начала страницы. CPU и ОС здесь работают в связке — ОС предоставляет структуру данных по которой CPU находит страницу виртуальной памяти и копирует её в физическую. По HEX номеру можно сразу увидеть как выровнен в памяти адрес. Формат двоичного числа слишком громоздкий, 32 бита (или 64) трудны для восприятия. Десятичный формат — показывает слишком мало информации, тогда как HEX удобный компромисс между десятичной и двоичной системами, средами людей и машин.
Программный способ разделения на клиент-сервер (режим ядра-режим пользователя) гораздо скучнее перечисленных выше механизмов. Процессы и потоки могут быть помечены специальными аттрибутами или же мы можем хранить список указателей на потоки/процессы и проверять их в коде. Если вы хоть раз делали авторизацию в веб-приложении, то хорошо понимаете о чём я говорю.
Заключение
Основные компоненты сети: конечные устройства (end devices), промежуточные устройства (intermediary devices), среды передачи данных (media) и программные средства, такие как сервисы (services) и процессы (processes).
Промежуточные устройства: маршрутизаторы (routers), коммутаторы (switches), беспроводные точки доступа (Wireless Access Point), некоторые модемы (modems).
Все устройства и медиа (среды передачи данных) – это физические, аппаратные или как еще называют – железные (hardware) компоненты сети.
Сервисы (сетевые услуги) и процессы – это программные компоненты сети (software), работающие явно и не явно, то есть отвечающие на наши запросы (явно) и обрабатывающие переданные сетевые сообщения, такие как пакеты и фреймы.
Дополнительные устройства компьютера
Всё, о чём я выше рассказал необходимо для работы системного блока, а теперь давайте рассмотрим дополнительные устройства компьютера, которые расширяют его возможности и добавляют функционал.
Внешний жесткий диск
В отличие от HDD, внешний жесткий диск переносной. Если HDD и SSD нужно установить в корпус и закрепить его там, то внешний подключается всего одним USB проводом. Это очень удобно на все случаи жизни, которые не имеет смысла описывать. Внешний HDD это как флешка, только с большим количеством памяти.
Источник бесперебойного питания
Абсолютно каждый компьютер боится перепадов напряжения, я бы даже сказал больше чем какая-либо другая техника. Источник бесперебойного питания обеспечит стабильное напряжение и убережёт ваш БП от скачков.
Напряжение может прыгать по разным причинам, и не всегда это заметно. Например, если у вас слабая проводка, то во время включения другой техники в доме напряжение может прыгнуть. Или же у соседей что-то мощное… В общем, я настоятельно рекомендую всем использовать безперебойник.
ТВ тюнер
ТВ тюнер – это специальная микросхема, которая позволяет смотреть ТВ на компьютере. Тут скорее, как и в случае с дисководом – ещё работает, но уже не актуально. Чтоб смотреть ТВ на компьютере, не обязательно вставлять специальные платы, у нас теперь есть IPTV и в моем блоге есть целый раздел, посвященный этой теме.
Связь между RAM и CPU
- Выберите столбец (Адресация)
- Выберите строку (Адресация)
- Передача данных.
Для этого используется ряд специальных контактов, один из которых мы уже видели, и это запись Enable, а два других следующие:
- Строб доступа к колонке: Этот вывод активируется, когда мы указываем оперативной памяти, что указываем столбец, к которому хотим получить доступ.
- Строб доступа к строке :: Этот вывод активируется, когда мы указываем оперативной памяти, что указываем строку, к которой хотим получить доступ.
Обе операции можно резюмировать следующим образом:
- Операция чтения очень проста, для этого у вас должен быть неактивен вывод WE, чтобы указать, что данные идут из ОЗУ в процессор, указать строку, а затем столбец, чтобы информация поступала к процессору из ОЗУ памяти. .
- Операция записи несколько отличается, для этого вывод WE должен быть активен, но данные передаются не после выбора столбца данных, а после выбора строки и одновременно с выбором столбца, в котором находятся данные.
Благодаря этому вы уже можете получить приблизительное представление о том, как работает связь между процессором и его оперативной памятью.
Перенести данные через Bluetooth
Большинство настольных компьютеров не имеют встроенного Bluetooth, но ноутбуки и смартфоны оборудованы Bluetooth датчиками. Таким образом, вы можете использовать Bluetooth, чтобы перенести данные с ноутбука на ноутбук или мобильное устройство.
Надеемся, что наша статья помогла вам перенести данные с компьютера на компьютер. Поделитесь в комментариях ниже своими мыслями и опытом о том, как вы переносите различные данные между компьютерами.