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

Уважаемый менеджер: @altaiface
Download Telegram
Вычислительные процессы

Когда мы начинаем изучать computer science, самое первое, с чем мы сталкиваемся — это понятие вычислительного процесса — абстрактное существо, которое находится в компьютерах.

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

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

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

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

Переход в этот режим возможен только аппаратно. Когда процессор находится в режиме SMM (System Management Mode), он выставляет сигнал SMIACT#.

Этот сигнал может служить для включения выделенной области физической памяти (System Management RAM), так что память SMRAM можно сделать доступной только для этого режима.

Следует отметить, что в режиме SMM не предусмотрена работа с прерываниями и особыми случаями.

При возврате из SMM процессор восстанавливает свой контекст из SMRAM. Обработчик может программно внести изменения в образ контекста процессора, тогда процессор перейдет не в то состояние, в котором произошел переход в SMM.
Древнейший язык программирования
Лисп, или LISP
(LISt Processing language — «язык обработки списков»)— семейство языков программирования, программы и данные в которых представляются в виде списков.

Существует альтернативная расшифровка названия LISP: Lots of Irritating Superfluous Parentheses«Много раздражающих лишних скобок» (намёк на особенности синтаксиса языка).

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

Широкую известность Лисп получил в 70-80-е годы ХХ века. В то время он использовался в качестве базового языка для научной деятельности в сфере искусственного интеллекта.

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

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

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

Для адресации виртуального адресного пространства используется сегментированная модель, в которой адрес состоит из двух элементов:
⁃ селектора сегмента
⁃ смещения внутри сегмента.

С каждым сегментом связана особая структура, хранящая информацию о нем, - дескриптор.

Работа механизма формирования линейного адреса основана на двух специальных таблицах, размещаемых в памяти: глобальная таблица дескрипторов (GDT) и локальная таблица дескрипторов (LDT)
Уровни привилегий̆. (Уровни защиты)

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

Процессоры x86 поддерживают четыре уровня привилегий:
0 - ядро операционной системы;
1 - операционная система;
2 - системы программирования и базы данных;
3 - прикладные (пользовательские) программы.

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

Такая ситуация возникает при необходимости вызова стандартной подпрограммы операционной системы из прикладной программы.

Поскольку защита по привилегиям не разрешает такие действия напрямую, это осуществляется двумя косвенными методами: с использованием сегментов подчиненного кода и шлюзов вызова.
Плюсы и минусы языка R

R — целая инфраструктура и специализированная среда для работы с данными.

Его плюсы:
⁃ Неограниченный набор функций для анализа данных — благодаря подключению библиотек.
⁃ Возможность работы с огромными таблицами и базами данных, которые не потянут программы.
⁃ Полностью бесплатная экосистема — компоненты распространяются бесплатно под лицензией GNU.
⁃ Доступен для большинства операционных систем.
⁃ Богатые возможности визуализации.

Минусы R — относительные:
⁃ Документация и большинство источников — только на английском языке.
⁃ Человеку без опыта программирования и знания основ статистики будет сложно.
⁃ Не подходит для разработки программ. Но в этом и его сила, тк он идеален для анализа данных.
Компоненты, из которых состоит система с интерфейсом SAS
Инициатор
Устройство, которое порождает запросы на обслуживание для целевых устройств и получает подтверждения по мере исполнения запросов

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

Подсистема доставки данных
Является частью системы ввода-вывода, которая осуществляет передачу данных между инициаторами и целевыми устройствами.

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

Есть 3 основных типа хранения данных:

DAS — Direct-attached storage
Под DAS принято понимать непосредственно подключенные к вычислительной системе диски. Обычно как DAS квалифицируются варианты только непосредственного прямого подключения.

NAS — Network-attached storage
Это устройство, подключенное в локальную сеть и предоставляющее доступ к своим дискам по одному из протоколов «сетевых файловых систем», например CIFS для Windows-систем или NFS для UNIX/Linux-систем.

SAN — Storage area network
SAN-устройство, с точки зрения пользователя, является просто локальным диском. Обычные варианты протокола доступа к SAN-диску это протокол FibreChannel и iSCSI. Для использования SAN в компьютере должна быть установлена плата адаптера SAN, которая обычно называется HBA — Host Bus Adapter.
Блоковая виртуализация
Ограниченная масштабируемость и управляемость среды DAS заставляют компании переходить на сетевые архитектуры хранения. При этом увеличивается сложность систем хранения.

В среде DAS серверы приложений могут размещать только тома, а при размещении томов возникают следующие ограничения:
тома не могут покрывать несколько подсистем хранения
каждое устройство хранения предназначено для работы со своим сервером, и другие серверы не могут пользоваться "излишками" чужой подсистемы хранения

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

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

Различают 2 типа:
Виртуализация in-band
Управляется специальным устройством, виртуализатором, через который также проходит поток данных.
1. У нас сервер приложение, которое хочет обратиться к системе хранения данных и запрасить данные у виртуализатора
2. Виртуализатор интерпретирует этот запрос и физически находит необходимые данные.
3. Далее происходит обмен сообщениями

Виртуализация out-of-band
Виртуализатор стоит в стороне от потока данных. Обрабатывает и передаёт информацию только, где находятся необходимые для сервера файлы.
1. Сервер делает запрос
2. Виртуализатор подготавливает информацию и отправляет системе хранения данных.
3. Система хранения определяет физическое положение, отдаёт их Виртуализатору
4. Виртуализатор отвечает серверу, где и как достать данные
Компоненты, из которых состоит система с интерфейсом SAS

Инициатор

Устройство, которое порождает запросы на обслуживание для целевых устройств и получает подтверждения по мере исполнения запросов

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

Подсистема доставки данных
Является частью системы ввода-вывода, которая осуществляет передачу данных между инициаторами и целевыми устройствами.

Расширители
Устройства, входящие в состав подсистемы доставки данных и позволяют облегчить передачи данных между устройствами SAS. Подключение через расширитель является абсолютно прозрачным для целевых устройств
Виртуализация на базе специализированного устройства
Данные, связанные с виртуализацией, размещаются в специальном устройстве (иногда его называют виртуализатором), которое включается между хостами и подсистемами хранения.

Различают 2 типа:
Виртуализация in-band
Управляется специальным устройством, виртуализатором, через который также проходит поток данных.
1. У нас сервер приложение, которое хочет обратиться к системе хранения данных и запрасить данные у виртуализатора
2. Виртуализатор интерпретирует этот запрос и физически находит необходимые данные.
3. Далее происходит обмен сообщениями

Виртуализация out-of-band
Виртуализатор стоит в стороне от потока данных. Обрабатывает и передаёт информацию только, где находятся необходимые для сервера файлы.
1. Сервер делает запрос
2. Виртуализатор подготавливает информацию и отправляет системе хранения данных.
3. Система хранения определяет физическое положение, отдаёт их Виртуализатору
4. Виртуализатор отвечает серверу, где и как достать данные
Уровни кэша
Кэш центрального процессора разделён на несколько уровней. В универсальном процессоре в настоящее время число уровней может достигать трёх:

Первый уровень (L1) – самый быстрый, самый маленький по объему, входит в состав функциональных блоков ЦП. Обычно L1 разделён на два кэша — кэш команд и кэш данных. У каждого ядра процессора свой участок памяти

Второй уровень (L2) – больше, чем L1, раньше реализовывался в виде отдельной микросхемы. Сегодня же L2 также является частью ядра ЦП. Как и L1, L2 является памятью раздельного пользования

Третий уровень (L3) – самый большой, но самый медленный из-за того, приходится проходить все шины. Реализован в виде отдельной микросхемы. Также память L3 – общая для всех ядер. Используется для того, чтобы мы могли синхронизировать данные которые находятся на втором уровне между различными ядрами
Интерфейсы доступа к кэшу

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

Mesh (сетка)
Сетчатая шина. В ней сохранены достоинства и устранены недостатки кольцевой шины. Сегодня она применяется в серверных решениях Intel

Infinity Fabric
Система передачи и контроля данных. Состоит из двух конвейеров, один для управляющих сигналов, другой для транспортировки данных. С помощью данной шины связываются несколько чиплетов (чиплет/чипсет – маленький комплекс ядер и кэшей L1, L2 и L3), ОЗУ и интерфейсы ввода/вывода
NOR Flash Memory

Память NOR, названная так в честь особой разметки данных Not OR – логическое Не-ИЛИ, является высокоскоростной памятью Flash.

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

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

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

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

Многие предприятия используют для этого распределенные файловые системы, работающие на нескольких NAS-устройствах. Существуют две реализации схемы:

Пространство глобальных имен: в данном случае глобальная, или распределенная, файловая система устанавливается "поверх" нативных файловых систем NAS-устройств и предоставляет возможность монтировать их как единое устройство.

Замещающая файловая система: вместо агрегирования файловых систем отдельных NAS-устройств в единое устройство, глобальная файловая система подменяет нативные файловые системы.
NAND Flash Memory

NAND память была изобретена после NOR, и также названа в честь особой разметки данных Not AND – логическое Не-И.

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

Память NAND может считывать и записывать информацию постранично, однако не может обращаться к конкретному байту, как NOR.

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

1. Условные конструкции
If/then/else впервые появились именно в языке Lisp.

2. Функции
В этом языке функции находятся на том же уровне, что и строки или числа.

3. Рекурсия
Несмотря на то, что она была известна гораздо раньше появления Lisp, впервые она была реализована именно в нём.

4. Переосмысление переменных
Все переменные представляют собой указатели.

5. Сборка мусора
Механизм эффективного автоматического контроля памяти, который стирает из неё ненужные объекты, впервые появился именно в Lisp-е.

6. Вся программа построена на основе выражений
Стандартная Lisp-программа представляет собой деревья выражений, которые могут возвращать конкретные значения.
Кодирование

Представление данных в каком-то виде, с которым удобно работать человеку или компьютеру.

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

Для примера возьмём букву «б». Её можно произнести как звук — это значит, что мы закодировали эту букву в виде звуковой волны. Также эту букву можно написать прописью или в печатном виде. Всё это примеры кодирования буквы «б», удобные для человека.

В компьютере буква «б» кодируется по-разному, в зависимости от выбранной кодировки внутри ОС.

Кодирование — это то, как удобнее воспринимать информацию тем, кто ей пользуется.
Разница между шифрованием и кодированием

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

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

Шифрование используют:
⁃ госорганы, чтобы защитить персональные данные граждан;
⁃ банки, чтобы хранить информацию о клиентах и о переводах денег;
⁃ мессенджеры, чтобы защитить переписку;
⁃ сайты;
⁃ мобильные приложения;
⁃ и всё остальное, что связано с безопасностью или тайнами.
Что такое low-code?

Лоу-код — это почти такая же зерокодовая платформа для программирования, но где можно в любой момент зайти в код и дописать что-то своё.

При этом лоу-код необязательно будет таким же лёгким, как и конструктор. Слово low означает, что его нужно будет написать не очень много, но сам код может быть на любом языке.

Кратко:
⁃ Это приложения на базе zero-code, в которых можно что-то дописать вручную.
⁃ Это нужно, чтобы расширить возможности конструкторов zero-code.
⁃ Дописанный код при этом необязательно будет простым. Он бывает вполне взрослым и сложным.
⁃ Если вы можете написать low-code, вероятно, вы сможете написать всё приложение с нуля.