
- •Восьмеричная система счисления
- •Шестнадцатеричная система счисления
- •Двоичный код каждого символа
- •Основные принципы построения операционных систем
- •Принцип модульности
- •Принцип функциональной избирательности
- •9). Структура эвм с центральным процессором и магистральная схема эвм (на общей шине).
- •Устройства для вывода визуальной информации
- •Устройства для вывода звуковой информации
- •Устройства для вывода прочей информации
- •Операционные системы пакетной обработки.
- •Операционные системы разделения времени.
- •Операционные системы реального времени.
- •Функции
- •Классификация файловых систем
- •Задачи файловой системы
- •Искусственные среды
- •14. Интернет.
- •Безопасность информационных систем Основные понятия
- •Классификации угроз
Классификация файловых систем
По предназначению файловые системы можно классифицировать на нижеследующие категории.
Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS, ext2 и др. Поскольку доступ к дискам в разы медленнее, чем доступ к оперативной памяти, для прироста производительности во многих файловых системах применяется асинхронная запись изменений на диск. Для этого применяется либо журналирование, например в ext3, ReiserFS, JFS, NTFS, XFS, либо механизм soft updates и др. Журналирование широко распространено в Linux, применяется в NTFS. Soft updates — в BSD системах.
Для носителей с последовательным доступом (например, магнитные ленты): QIC и др.
Для оптических носителей — CD и DVD: ISO9660, HFS, UDF и др.
Виртуальные файловые системы: AEFS и др.
Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.
Для флэш-памяти: YAFFS, ExtremeFFS, exFAT.
Немного выпадают из общей классификации специализированные файловые системы: ZFS (собственно файловой системой является только часть ZFS), VMFS (т. н. кластерная файловая система, которая предназначена для хранения других файловых систем) и др.
Задачи файловой системы
Основные функции любой файловой системы нацелены на решение следующих задач:
именование файлов;
программный интерфейс работы с файлами для приложений;
отображения логической модели файловой системы на физическую организацию хранилища данных;
организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств;
содержание параметров файла, необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.).
В многопользовательских системах появляется ещё одна задача: защита файлов одного пользователя от несанкционированного доступа другого пользователя, а также обеспечение совместной работы с файлами, к примеру, при открытии файла одним из пользователей, для других этот же файл временно будет доступен в режиме «только чтение».
17) - Этапы разработки программ для ЭВМ. Данные и алгоритмы, как модельное отражение реальных объектов. Языки программирования.
В процессе создания любой программы можно выделить несколько этапов.
1. Постановка задачи — выполняется специалистом в предметной области на естественном языке (русском, английском и т. д.). Необходимо определить цель задачи, ее содержание и общий подход к решению. Возможно, что задача решается точно (аналитически), и без компьютера можно обойтись. Уже на этапе постановки надо учитывать эффективность алгоритма решения задачи на ЭВМ, ограничения, накладываемые аппаратным и программным обеспечением (АО и ПО).
2. Анализ задачи и моделирование — определяются исходные данные и результат, выявляются ограничения на их значения, выполняется формализованное описание задачи и построение (выбор) математической модели, пригодной для решения на компьютере.
3. Разработка или выбор алгоритма решения задачи — выполняется на основе ее математического описания. Многие задачи можно решить различными способами. Программист должен выбрать оптимальное решение. Неточности в постановке, анализе задачи или разработке алгоритма могут привести к скрытой ошибке — программист получит неверный результат, считая его правильным.
4. Проектирование общей структуры программы — формируется модель решения с последующей детализацией и разбивкой на подпрограммы, определяется "архитектура" программы, способ хранения информации (набор переменных, массивов и т. п.).
5. Кодирование — запись алгоритма на языке программирования. Современные системы программирования позволяют ускорить процесс разработки программы, автоматически создавая часть ее текста, однако творческая работа по-прежнему лежит на программисте. Для успешной реализации целей проекта программисту необходимо использовать методы структурного программирования.
6. Отладка и тестирование программы. Под отладкой понимается устранение ошибок в программе. Тестирование позволяет вести их поиск и, в конечном счете, убедиться в том, что полностью отлаженная программа дает правильный результат. Для этого разрабатывается система тестов — специально подобранных контрольных примеров с такими наборами параметров, для которых решение задачи известно. Тестирование должно охватывать все возможные ветвления в программе, т. е. проверять все ее инструкции, и включать такие исходные данные, для которых решение невозможно. Проверка особых, исключительных ситуаций, необходима для анализа корректности. Например, программа должна отказать клиенту банка в просьбе выдать сумму, отсутствующую на его счете. В ответственных проектах большое внимание уделяется так называемой "защите от дурака" подразумевающей устойчивость программы к неумелому обращению пользователя. Использование специальных программ — отладчиков, которые позволяют выполнять программу по отдельным шагам, просматривая при этом значения переменных, значительно упрощает этот этап.
7. Анализ результатов — если программа выполняет моделирование какого-либо известного процесса, следует сопоставить результаты вычислений с результатами наблюдений. В случае существенного расхождения необходимо изменить модель.
8. Публикация результатов работы, передача заказчику для эксплуатации.
9. Сопровождение программы — включает консультации представителей заказчика по работе с программой и обучение персонала. Недостатки и ошибки, замеченные в процессе эксплуатации, должны устраняться.
Язык программирования- искусственный язык, являющийся промежуточным при переходе от естественного человеческого языка к машинным двоичным кодам. языки программирования
бывают высокого и низкого уровней. языки программирования высокого уровня (как видно из схемы) являются более близкими к естественному человеческому языку по сравнению с языками программирования низкого уровня. создание текста программы на языке программирования выполняется человеком вручную, а перевод текста программы в машинные двоичные коды - трансляция (англ.translation - перевод) выполняется специальными программами- трансляторами.
программирование на языках высокого уровня, очевидно, проще, чем на языках низкого
уровня. оно не требует глубоких знаний устройства компьютера и поэтому вполне
доступно людям, не являющимися специалистами в вычислительной технике. однако,
программы, написанные на языках низкого уровня, как правило, отличаются более
высокой скоростью работы, меньшим объемом и более полным использованием ресурсов вычислительной техники. к языкам высокого уровня относятся: фортран, бейсик, паскаль, си, алгол, алмир, ада, си++, delphi, java и сотни других. старейшим языком программирования высокого уровня является фортран (англ. formula translation, перевод формул). он был создан группой программистов
американской фирмы ibm под руководством джона бекуса в 1957 году. несколько позже в европе был разработан язык алгол (англ.algorythmic language, алгоритмический язык). эти языки послужили основой для других новых языков программирования. так, язык бейсик (англ. basic, базовый, или beginner's all-purpose symbolic instruction code, многоцелевой язык символических команд для начинающих) был создан джоном кемени в сша в 1965 году. он представляет собой упрощенную версию фортрана, который оказался сложным для большинства пользователей из-за своей избыточности. Язык алгол послужил основой для не менее популярного языка паскаля, созданного в 1969 году швейцарским математиком никласом виртом. паскаль не сложнее бейсика, но в него изначально были заложены более широкие возможности. дальнейшее развитие язык паскаль получил в виде системы программирования delphi. на украине в 1965 году на базе алгола был создан язык алмир, отличавшийся использованием символики на основе русского, а не английского языка. этот язык считается первым в мире языком программирования на основе национального языка (native language). язык си, в котором использованы элементы паскаля, был создан в 1972 году в американской фирме bell laboratories под руководством дениса ритчи. название языка си связано с тем, что наиболее удачной оказалась его третья версия ( си- третья буква английского алфавита). си считается наиболее эффективным среди языков программирования высокого уровня. с одной стороны он не намного сложнее паскаляи или фортрана, но с другой обладает возможностями, присущими языкам программирования низкого уровня. поэтому си иногда называют языком программирования среднего уровня и используют как при написании прикладных программ, так и при разработке системных. дальнейшим развитием языка си стали языки си++ и java. к языкам низкого уровня отноятся ассемблер и автокод. ассемблер, как язык низкого уровня, фактически состоит из набора команд данной машины, записанных в виде сокращений на английском языке. автокод- вариант ассемблера на основе русского языка.
17) - Базовые и структурные типы данных, используемые для описания свойств объектов.
Общее понятие структуры данных.
Понятие структуры данных является настолько фундаментальным, что для него сложно подобрать простое определение. Задача упрощается, если попробовать сформулировать это понятие по отношению к типам данным и переменным. Как известно, программа представляет собой единство алгоритма (процедур, функций) и обрабатываемых ими данных. Данные, в свою очередь, определяются базовыми и производными типами данных -"идеальными" представлениями переменных фиксированной размерности с наборами известных операций над ними и их компонентами. Переменные -это именованные области памяти, в которые "отображаются" сконструированные типы данных. В программе всегда можно выделить группы косвенно связанных (по использованию данных в одних и тех же процедурах и функциях) и непосредственно связанных (по наличию взаимосвязей через указатели) переменных. Их в первом приближении и можно считать структурами данных.
Различаются ПРОСТЫЕ (базовые, примитивные) структуры (типы) данных и ИНТЕГРИРОВАННЫЕ (структурированные, композитные, сложные). Простыми называются такие структуры данных, которые не могут быть расчленены на составные части, большие, чем биты. С точки зрения физической структуры важным является то обстоятельство, что в данной машинной архитектуре, в данной системе программирования мы всегда можем заранее сказать, каков будет размер данного простого типа и какова структура его размещения в памяти. С логической точки зрения простые данные являются неделимыми единицами. Интегрированными называются такие структуры данных, составными частями которых являются другие структуры данных - простые или в свою очередь интегрированные. Интегрированные структуры данных конструируются программистом с использованием средств интеграции данных, предоставляемых языками программирования.
В зависимости от отсутствия или наличия явно заданных связей между элементами данных следует различать НЕСВЯЗНЫЕ структуры (векторы, массивы, строки, стеки, очереди) и СВЯЗНЫЕ структуры (связные списки).
Весьма важный признак структуры данных - ее изменчивость - изменение числа элементов и (или) связей между элементами структуры. В определении изменчивости структуры не отражен факт изменения значений элементов данных, поскольку в этом случае все структуры данных имели бы свойство изменчивости. По признаку изменчивости различают структуры СТАТИЧЕСКИЕ, ПОЛУСТАТИЧЕСКИЕ, ДИНАМИЧЕСКИЕ. Классификация структур данных по признаку изменчивости приведена на рис. 1.1. Базовые структуры данных, статические, полустатические и динамические характерны для оперативной памяти и часто называются оперативными структурами. Файловые структуры соответствуют структурам данных для внешней памяти.
18) Алгоритмические языки. Простые и составные типы операторов (на примере языка Паскаль).
Алгоритмические языки программирования – см. Языки программирования
Простые операторы
Простыми являются те операторы, которые не содержат в себе других операторов. К ним
относятся:
- оператор присваивания;
- обращение к процедуре;
- оператор безусловного перехода GOTO;
- пустой оператор.
Структурированные операторы
Структурированными являются такие операторы, которые включают в себя другие операторы.
К структурированным операторам относятся:
- составной оператор;
- условный оператор IF;
- условный оператор CASE;
- оператор цикла REPEAT;
- оператор цикла WHILE;
- оператор цикла FOR;
- оператор над записями WITH.
19) - Этапы создания программ для ЭВМ. Трансляция с языка программирования.
Этапы создания программ для ЭВМ – см Этапы разработки программ для ЭВМ
Структура транслятора
|
|
||
|
|
Компиляторы переводят текст программы с языка высокого уровня на язык низкого уровня – машинный код.
Интерпретаторы переводят текст программы с языка высокого уровня на язык команд некоторой абстрактной машины, программная реализация которой, как правило, входит в интерпретатор. Этот язык команд может быть довольно высокого уровня.
На рис. 1 представлена общая схема компилятора. Он состоит из двух частей – анализирующей и генерирующей. Интерпретатор может содержать ещё интерпретирующую часть – абстрактную машину. Кроме того, если входом этой машины является непосредственно семантическая структура, построенная анализирующей частью, то он не нуждается в генераторе кода.
Анализирующая часть синтаксически управляемого транслятора состоит из лексического, синтаксического и контекстного анализаторов.
Лексический анализатор преобразует входной символьный поток в последовательность более крупных единиц – лексем. Например, текст из 14 символов (включая пробелы)
"x1-3.5+x2 <> y"
преобразуется в последовательность из 7 лексем
[id(x1),`-,n(3.5),`+,id(x2),'<>',id(y)].
Синтаксический анализатор входного языка проверяет синтаксическую правильность входной цепочки (уже разбитой на лексемы) и строит её семантическое дерево. Так, для предыдущей последовательности лексем может быть построено семантическое дерево
Контекстный
анализатор
проверяет выполнение контекстных
условий
(соответствия типов данных, числа
параметров процедур, отсутствия передачи
управления внутрь тела цикла и многих
других), а также расширяет семантическое
дерево программы до её полной семантической
структуры.
На практике его обычно соединяют с
синтаксическим анализатором.
Семантическая структура программы является наиболее важной компонентой процесса трансляции. Одна и та же семантическая структура может использоваться для генерации объектного машинного кода, а так же интерпретации программы на разных программно-аппаратных платформах. Семантическая структура содержит все объекты программы, их свойства и отношения, существенные с точки зрения компиляции и/или интерпретации. Семантическое дерево программы представляет лишь часть этой структуры.
И компиляция, и интерпретация языка основаны на некотором определении его семантики определении того, как каждая программа языка преобразует свои входные данные в выходные. Часто за определение семантики берут определение абстрактной машины, используемой в интерпретаторе. Однако, желательно иметь более общее (более абстрактное) определение семантики тогда оно сможет быть основой для создания самых разных трансляторов, работающих в различных программно-аппаратных системах. Семантика обычно определяется на семантической структуре программ, от которой также требуется достаточная абстрактность.
Современные методы построения трансляторов требуют применения изощрённых и эффективных методов, основанных на теории языков, грамматик и автоматов, в свою очередь базирующихся на более общих математических теориях теории множеств, алгебре, математической логике и других.
Очень большую роль играет здесь выбор формальных средств определения тех или иных аспектов языка. Если для лексики и синтаксиса общепринято использовать автоматные и контекстно-свободные грамматики, соответственно, то для остальных свойств этих грамматик недостаточно и предлагаются самые разнообразные и очень сложные формализмы. На практике же чаще обходятся неформальными описаниями, что низводит создание трансляторов с уровня науки и индустрии к уровню ремесла, причём весьма трудоемкого и плохо контролируемого.
В данной книге для определения всех "постсинтаксических" аспектов языка используются предикативные грамматики. Благодаря своей твёрдой математической основе (математическая логика) и универсальности, эти грамматики позволяют дать достаточно абстрактные определения и строго обосновывать многие проектные решения, например, семантическую правильность трансляции. С другой стороны, благодаря реализации предикативных грамматик в системах логического программирования на базе языка Пролог, эти определения могут быть отлажены ещё на этапе проектирования транслятора или даже языка.
Основное отличие данной книги от многих других, посвящённых этой теме, состоит в том, что в ней излагается не только теория формализмов, используемых для определения языков и трансляторов (грамматик, автоматов и т.п.), но и теория самих языков программирования, их семантики и трансляции. Несмотря на огромное разнообразие языковых конструкций и методов их реализации, есть некоторые общепризнанные концепции построения языков программирования и трансляторов, которые мы здесь попытались осветить. К таким концепциям относятся, например, концепции типа, блочной видимости, принципы адресации, реализации рекурсивных процедур и т.д. К счастью, есть довольно простой язык программирования Паскаль, из которого нетрудно выделить небольшое подмножество, содержащее все затронутые понятия. Это позволило проиллюстрировать все рассмотренные методы трансляции в виде полной реализации этого языка и тем самым рассмотреть их не изолированно, а во взаимосвязи. Благодаря встроенности предикативных грамматик в Пролог-системы, студенты получают не только теоретические знания, но и могут проверить их на практике.
20) - Принципы передачи данных по каналам связи. Среда передачи данных: Коаксиальный кабель, оптоволокно, спутниковые каналы; мультиплексирование.
ПРОЦЕСС ПЕРЕДАЧИ ДАННЫХ
Передача данных – вид электросвязи, обеспечивающий обмен сообщениями между прикладными процессами пользователей, удалённых ЭВМ с целью обработки вычислит. средствами.
Сеть передачи данных – организационно-техническая структура, состоящая из узлов коммутации и каналов связи, соединяющих узлы связи между собой и с оконечным оборудованием, предназначенная для передачи данных между удалёнными точками.
Канал передачи – комплекс технических средств и среды распространения, обеспечивающий передачу сигналов электросвязи в определённой полосе частот и с определённой скоростью передачи между сетевыми станциями и узлам, а также между ними и оконечным устройством.
СИНХРОННАЯ И АСИНХРОННАЯ ПЕРЕДАЧА ДАННЫХ
При обмене данными по каналам связи используются три метода передачи данных:
1) Симплексная (однонаправленная) — TV, радио;
2) Полудуплексная передача — (приём и передача данных осуществляются поочерёдно);
3) Дуплексная (двунаправленная) – каждая станция одновременно передаёт и принимает данные.
Для передачи данных в информационных системах наиболее часто применяется последовательная (полудуплексная) передача. Она разделяется на два метода:
а) Асинхронная передача;
б) Синхронная передача.
А)
Cреда передачи — физическая субстанция, по которой происходит передача электрических, электромеханических, оптических, радиосигналов, использующихся для переноса той или иной информации. Среда передачи может быть естественной или искусственной.