Computer Science
7.92K subscribers
2 photos
17 links
По всем вопросам: @altmainf

Уважаемый менеджер: @altaiface
Download Telegram
Сортировка перемешиванием 

Сортировка перемешиванием — это алгоритм сортировки, который также имеет другие названия, такие как шейкерная сортировка или двунаправленная пузырьковая сортировка.

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

Сложность по времени:
Худшее время: O(n^2)
Среднее время: O(n^2)
Лучшее время: O(n)

Затраты на память: O(1)
Иерархическая модель Баз Данных.

Связи между данными можно описать с помощью упорядоченного графа (или дерева).

Достоинства: эффективное использование памяти, хорошие показатели по времени выполнения основных операций над данными.

Недостатки: громоздкость для обработки информации с достаточно сложными логическими связями, сложность понимания для обычного пользователя.
Сетевая модель Баз Данных.

Связи между элементами данных отображаются в виде произвольного графа.

Достоинства: эффективное использование памяти, хорошие показатели по времени выполнения основных операций над данными.

Недостатки: высокая сложность схемы данных, сложность понимания для обычного пользователя.
Пирамидальная сортировка

Пирамидальная сортировка (или сортировка кучей, HeapSort) — это метод сортировки сравнением, основанный на такой структуре данных как двоичная куча. Она похожа на сортировку выбором.

Алгоритм пирамидальной сортировки в порядке по возрастанию:
 1. Построить max-heap из входных данных
 2. На данном этапе самый большой элемент храниться в контре кучи. Заменить его на последний элемент кучи, а затем уменьшить ее размер на 1. Наконец, преобразовать полученное дерево в max-heap с новым корнем.
 3. Повторять вышеуказанные шаги, пока размер кучи больше 1.

Алгоритм пирамидальной сортировки имеет ограниченное применение, потому что Быстрая сортировка и Сортировка слиянием на практике лучше. Тем не менее, сама структура данных кучи используется довольно часто.

Сложность по времени:
Худшее время: O(n log n)
Среднее время: O(n log n)
Лучшее время: O(n log n) или O(n) при одинаковых ключах
​​Мультипрограммные ОС по типу и областям применения. 
Сборка загрузочного (исполнимого) модуля

Операционная система управляет выполнением программ. Для того, чтобы она могла это делать, необходимо представить программы в определенном формате — в виде загрузочных модулей. Эти модули хранятся в файлах специального вида (в Windows это exe файлы, а в MS DOS .exe или .com).

Для создания загрузочных модулей используются системы программирования с различных языков. 

В начале есть исходный код - файлы исходных модулей. Далее компилятор обрабатывает эти файлы. В результате образуются файлы объектных модулей и листинг. На следующем шаге выполняется программа компоновщик. Именно она и собирает загрузочный модуль из построенных объектных модулей.
Сетевой уровень модели OSI (5)

Пятый уровень оперирует чистыми данными.

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

Примером работы пятого уровня может служить видеозвонок по сети. Во время видеосвязи необходимо, чтобы два потока данных (аудио и видео) шли синхронно. Когда к разговору двоих человек прибавится третий — получится уже конференция. Задача пятого уровня — сделать так, чтобы собеседники могли понять, кто сейчас говорит.
Загрузочный модуль простой структуры 

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

Загрузочный модуль простой структуры создается из совокупности объектных модулей, полученных в результате компиляции, и библиотечных модулей. Этот процесс называется связыванием объектных модулей, а при его выполнении происходит разрешение внешних ссылок.
Уровень представления 

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

Например, когда одно устройство умеет отображать текст только в кодировке ASCII, а другое только в UTF-8, перевод текста из одной кодировки в другую происходит на шестом уровне.
Наборно ассоциативный кэш

Его суть в том, что весь кэш делится на несколько сегментов, называемые каналами, каждый из которых является обычным кэшем прямого отображения. 

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

Его достоинство в том, что обеспечивает гибкость и простоту реализации.
Отличие сортировок выбором от сортировок вставками

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

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

Это делает оба класса алгоритмов совершенно отличными друг от друга по своей сути и применяемым методам.
Прямое слияние Боуза-Нельсона

Алгоритм Боуза-Нельсона — это сортировочная сеть, а не сортировка. В процессе массив и все его подмассивы делятся пополам и ничто не препятствует тому, чтобы все эти половинки на всех этапах обрабатывались параллельно. Однако можно представить и в виде именно сортировки. 

Алгоритм:

 1. Массив делится пополам 

 2. Элементы разбиваются на группы.

 3. На первой итерации это двойки элементов (1-й элемент левой половины + 1-й элемент правой половины, 2-й элемент левой половины + 2-й элемент правой половины и т.д.), на второй итерации — четвёрки элементов (1-й и 2-й элементы левой половины + 1-й и 2-й элементы правой половины, 3-й и 4-й элементы левой половины + 3-й и 4-й элементы правой половины и т.д.), на третьей — восьмёрки и т.д.
 
4. Элементы каждой группы из левой половины являются отсортированным подмассивом, элементы каждой группы из правой половины также являются отсортированным подмассивом.
 
5. Производим слияние отсортированных подмассивов из предыдущего пункта.
 
6. Возвращаемся в пункт 1. Цикл продолжается до тех пор, пока размеры групп меньше размера массива.
Загрузочный модуль оверлейной структуры 

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

Среди этих сегментов выделяется корневой сегмент, который постоянно находится в основной памяти и содержит начальную точку входа. Остальные сегменты загружаются по мере передачи управления их коду. Причем при загрузке они могут перекрывать адресные пространства других сегментов в памяти, которые в этот момент не активны, то есть в эти сегменты не будет передачи управления. Для организации такого исполнения необходима та- блица, которая отражает возможности взаимного перекрытия сегментов.
Прикладной уровень модели OSI

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

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

Форматирование – это процесс, во время которого происходит разметка носителя информации, а точнее области хранения данных носителя.

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

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

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

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

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

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

Понимание того, что может делать набор инструкций и как компилятор использует эти инструкции, может помочь разработчикам писать более эффективный код. Это также может помочь им понять вывод компилятора, который может быть полезен для отладки
Floating-point unit или FPU

FPU (Floating Point Unit) — блок, производящий операции с плавающей точкой или математический сопроцессор.

FPU помогает основному процессору выполнять математические операции над вещественными числами.

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

Режим супервизора, привилегированный режим, режим ядра, kernel mode — режим работы процессора, как правило, используемый для выполнения ядра операционной системы.

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

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

Для работы со стеком нам нужны указатели.

 1. SP (stack pointer) - указатель вершины стека. Указывает на адрес самого последнего добавленного элемента. Именно благодаря ему мы можем вносить и извлекать с вершины стека какие-то данные

 2. BP (base pointer) - представляет из себя адрес начала фрейма, начиная с которого в стек вносятся или извлекаются значения. Используется для получения параметров.

Команды для работы со стеком:
push - поместить данные на вершину стека
pop - извлечь данные с вершины стека
big.LITTLE — это гетерогенная архитектура для смартфонов или планшетов, сочетающая в себе относительно небольшие и энергосберегающие ядра (LITTLE) с другими, гораздо более крупными и мощными, но с более высоким потреблением (big).

Зачем это нужно?
Идея состоит в том, чтобы создать многоядерный процессор, который сможет лучше удовлетворить современные потребности в динамических вычислениях и потреблять при этом меньше энергии.

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