ch
Feedback
Computer Science

Computer Science

前往频道在 Telegram

По всем вопросам: @altmainf Уважаемый менеджер: @altaiface

显示更多
7 918
订阅者
-424 小时
-67
-3230
帖子存档
Системные вызовы Основным предназначением ядра всякой операционной системы является обслуживание системных вызовов из выполняющихся в системе процессов. Системный вызов выполняется некоторой процессорной инструкцией прерывающей последовательное выполнение команд, и передающий управление коду режима супервизора.  Это обычно некоторая команда программного прерывания, в зависимости от архитектуры процессора. Если для конкретики рассмотреть архитектуру Intel x86, то это традиционно команда программного прерывания с различным вектором. Сравним, как это делают самые разнородные системы: В MS-DOS дескриптор прерывания для системного вызова — 21h Windows — 2Eh  Linux — 80h  QNX — 21h MINIX 3 — 21h

Режим супервизора Режим супервизора, привилегированный режим, режим ядра, kernel mode — режим работы процессора, как правило, используемый для выполнения ядра операционной системы. В режиме супервизора или вообще не действуют ограничения защиты памяти, или же они могут быть произвольным образом изменены, поэтому код, работающий в данном режиме, как правило, имеет полный доступ ко всем системным ресурсам (адресное пространство, регистры конфигурации процессора и так далее).  У некоторых современных процессоров может присутствовать ещё более привилегированный режим гипервизора — используется с целью виртуализации, то есть обеспечения параллельной работы сразу нескольких операционных систем на одном процессоре.

Floating-point unit или FPU FPU (Floating Point Unit) — блок, производящий операции с плавающей точкой или математический сопроцессор. FPU помогает основному процессору выполнять математические операции над вещественными числами. Типичными операциями являются сложение, вычитание, умножение, деление и извлечение квадратного корня. Некоторые FPU также могут выполнять различные трансцендентные функции, такие как экспоненциальные или тригонометрические вычисления, но точность может быть очень низкой, поэтому некоторые системы предпочитают вычислять эти функции в программном обеспечении.

Что такое ядро операционной системы? Как известно, компьютер – не только железо, но и набор работающих на нем программ. Чтобы второе могло эффективно работать на первом, нужно что-то, что скроет сложности работы с железом и предоставит обычным программам и пользователям удобный для них интерфейс. Ядро операционной системы – это та же программа. Однако, в отличии от других, она всегда загружается первой и потом постоянно "сидит" в определенной области оперативной памяти. То есть она всегда находится в запущенном состоянии и взаимодействует, с одной стороны, с железом, а с другой – с системными и пользовательскими программами. Если мы представим себе, что ядра нет, то каждая запущенная программа будет сама обращается к железу и обрабатывать сигналы от него. Вроде бы ничего страшного, кроме дублирования кода.

Что такое ISA и почему она важна? ISA (Instruction Set Architecture) - Архитектура набора команд — это часть абстрактной модели компьютера, которая определяет, как программное обеспечение управляет процессором. ISA действует как интерфейс между компьютерной программой и оборудованием ISA определяет поддерживаемые типы данных, регистры, то, как аппаратное обеспечение управляет основной памятью, ключевые функции (такие как виртуальная память), какие инструкции может выполнять микропроцессор. ISA можно расширить, добавив инструкции или другие возможности. Понимание того, что может делать набор инструкций и как компилятор использует эти инструкции, может помочь разработчикам писать более эффективный код. Это также может помочь им понять вывод компилятора, который может быть полезен для отладки

О-большое (Big O) Нотация О-большое описывает скорость работы алгоритма в худшем случае. Предположим вы используете простой поиск для поиска фамилии телефоном справочнике. Вы знаете, что простой поиск выполняется за время O(n) - то есть в худшем случае вам придется пересмотреть все фамилии в справочнике, но представим, что наша искомая фамилия начинается с «А» и находится в самом начале справочника. Следовательно, мы нашли нужную фамилию с первой попытки. Отработал ли алгоритм за время O(n)? А может, он занял время O(1)? Простой поиск все равно выполняется за время O(n). Просто в данном случае вы нашли нужное значение моментально — это лучший возможный случай.

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

Что такое сектор и кластер? Для хранения данных все носители информации имеют специальную разметку.  Жесткий диск имеет несколько дисков, на магнитную поверхность которых и записываются данные. Каждый диск разбит на треки (дорожки), а каждая дорожка поделена на сектора. Это конечно, очень упрощенная схема, но она дает представление о том, что такое сектор. Сектор – это минимальная пронумерованная область диска. Для нормальной работы операционной системы на жестком диске создается файловая система. Файловая система использует сектора для хранения файлов, но из-за некоторых ограничений и особенностей различных файловых систем, сектора носителя информации обычно объединяются файловой системой в кластеры. Это означает, что кластер является минимальной областью файловой системы, предназначенной для хранения информации и он может состоять как из одного, так и из нескольких секторов.

Таблица разделов Таблица разделов — часть главной загрузочной записи (MBR), состоящая из четырёх записей по 16 байт. Каждая запись описывает один из разделов жёсткого диска. Первая запись находится по смещению 1BEh от начала сектора, содержащего MBR, каждая последующая запись вплотную примыкает к предыдущей. Для создания на диске более 4 разделов используются расширеные разделы, позволяющие создать неограниченое количество логических дисков внутри себя. Адреса начала и конца раздела задаются в формате CHS, используемом традиционными функциями дискового сервиса BIOS, из-за чего номер цилиндра разорван на две части: старшие два бита хранятся в двух старших битах слова, отведённого под номера цилиндра и сектора; за ними следуют шесть бит номера сектора, а младшие восемь бит номера цилиндра занимают весь младший байт слова. Если задать корректный адрес с помощью формата CHS невозможно, все три байта полей начала и конца раздела должны содержать FFh.

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

«Битый сектор» или «бэд сектор» Сталкиваясь с понятиями «битый сектор» или начинающие пользователи обычно понимают, что речь идет о какой-то серьезной проблеме, но не понимают как эту проблему решать. Допустим, что жесткий диск вашего компьютера подвергся низкоуровневому форматированию на заводе-изготовителе. В результате этого процесса на магнитном носителе были созданы дорожки и сектора, которые в процессе работы компьютера используются для хранения данных. Сектора – это физически размеченные области на поверхности магнитного носителя, предназначенные для хранения данных. Если такой сектор будет поврежден механически, то вся информация, которая в нем хранилась, будет безвозвратно утеряна. Такие поврежденные механически сектора и называются битыми секторами. В них уже невозможно хранить данные и те данные, которые были в них записаны ранее, с большей долей вероятности восстановить не получится.

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

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

Протокол NTP Не все протоколы передачи нужны для обмена классического вида информацией. NTP — протокол для синхронизации локальных часов устройства со временем в сети.  Он использует алгоритм Марзулло (алгоритм согласования данных, использующийся для выбора более точных источников для оценки точного времени из ряда источников времени, разной степени точности и усреднения времени). Благодаря нему протокол выбирает более точный источник времени.  NTP работает поверх UDP — поэтому ему удаётся достигать большой скорости передачи данных. Протокол достаточно устойчив к изменениям задержек в сети. Последняя версия NTPv4 способна достигать точности 10мс в интернете и до 0,2мс в локальных сетях.

SSH Протокол для удалённого управления операционной системой с использованием TCP. В SSH шифруется весь трафик, причём с возможностью выбора алгоритма шифрования. В основном это нужно для передачи паролей и другой важной информации. Также SSH позволяет обрабатывать любые другие протоколы передачи. Это значит, что кроме удалённого управления компьютером, через протокол можно пропускать любые файлы или даже аудио/видео поток. SSH часто применяется при работе с хостингами, когда клиент может удалённо подключиться к серверу и работать уже оттуда. Он безопасен, поскольку оба компьютера могут шифровать и дешифровать сообщения с использованием симметричных ключей.

Обзор протокола HTTP Изначально протокол передачи HTML-документов. Сейчас же он используется для передачи произвольных данных в интернете. Он является протоколом клиент-серверного взаимодействия без сохранения промежуточного состояния. В роли клиента чаще всего выступает веб-браузер, хотя может быть и, например, поисковый робот. Для обмена информацией протокол HTTP в большинстве случаев использует TCP/IP. HTTP имеет расширение HTTPS, которое поддерживает шифрование. Данные в нём передаются поверх криптографического протокола TLS. HTTP, как правило, прост и удобен для восприятия человеком. HTTP-сообщения могут читаться и пониматься людьми, обеспечивая более лёгкое тестирование разработчиков и уменьшенную сложность для новых пользователей.

Контроллеры жестких дисков Контроллер жестких дисков представляет собой сложнейшее устройство - микрокомпьютер, со своим процессором, ОЗУ и ПЗУ, схемами и системой ввода/вывода и т.п.. Однако, в большинстве случаев, производители размещают их в одном или двух микро-чипах. Он занимается множеством операций преобразования потока данных. Так как длинна дорожек неравна, данные на различные дорожки необходимо записывать неравномерно. Это становится проблемой, по сравнению с гибкими дисками, для носителей с высокой плотностью записи. Простые контроллеры, как правило, записывают одно и тоже количество информации на каждую дорожку, независимо от ее длинны. Для этого контроллер упаковывает данные более плотно, начиная с определенной по счету дорожки. Многие производители создают устройства, которые записывают различный объем информации на внутренние и внешние дорожки за счет размещения на них разного числа секторов. Это возможно, благодаря аппаратному скрытию от программ и пользователя физических характеристик устройства на уровне его контроллера и/или интерфейса

BIOS и UEFI: в чём различие BIOS является микропрограммой, которая хранится на чипе материнской платы компьютера. При включении компьютера, прежде чем он начнёт загружать операционную систему из жесткого диска, загружается BIOS который выполняет тестирование оборудования компьютера. UEFI, который пришел на замену традиционного BIOS. Данный интерфейс прошивки поддерживает загрузочные разделы размером более 2 ТБ, более четырёх разделов на одном жестком диске, загружается быстрее и имеет более современные функции и возможности. При обычном использовании компьютера для пользователя не имеет значения BIOS на компьютере или UEFI. Оба интерфейса управляют низкоуровневыми функциями оборудования и запускаются во время старта компьютера, предназначены для корректной инициализации аппаратного обеспечения при включении системы. Обе имеют интерфейсы, с помощью которых можно изменить большое количество системных настроек.

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