-Поиск по дневнику

Поиск сообщений в Ольга__Александровна

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 13.01.2016
Записей: 43
Комментариев: 1
Написано: 43


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

Среда, 13 Января 2016 г. 05:25 + в цитатник

. Организация файла. Организация файлов относится к методу организации записей файла во вто- ричном хранилище. Вот популярные методы: • последовательный – записи размещаются в физическом порядке. «следую- щая» запись та, которая физически следует за текущей записью. Такая орга- низация естественна для любого носителя с последовательным доступом, например, магнитной ленты. Файлы на дисках также могут быть последова- тельными, но по различным причинам их записи не обязательно будут раз- мещены последовательно на поверхности диска. • прямой – записи доступны напрямую (т.е. случайным образом) по их физи- ческому местоположению на носителе. Приложения размещают данные в том порядке, как им удобно. Однако прямой доступ требует детально знать устройство, на котором будут размещены данные. Для нахождения данных в таком методе часто используется метод хэширования. • последовательный индекс – записи упорядочиваются в логическом порядке согласно особому ключу, хранящемуся в каждой записи. Система поддер- живает индекс, содержащий физический адрес на устройстве некоторых важных записей. Записи при таком методе доступа могут быть доступны либо в последовательном порядке по ключу, либо с помощью поиска по си- стемному индексу. • разделяемый – в общем-то это метод, при котором файл разбивается на по- следовательные подфайлы. Каждый такой подфайл называется членом. Начальный адрес каждого члена хранится в директории файла. Этот прием ча- сто используется для хранения библиотек функций. Термин «том» используется для обозначения носителя для каждого конкрет- ного внешнего устройства хранения. Том для стриммера – это кассета с лентой; том для дискового накопителя – это диск (неважно, съемный или несъемный).

 

Методы доступа: очереди и базовый. Большие ОС обычно используют несколько методов доступа. Их разделяют на две группы – очереди и базовые методы доступа. Первый тип доступа предо- ставляет больше возможностей, чем второй. Очереди используются в ситуациях, когда порядком следования записей можно пренебречь, например, для последовательных и индексных методов досту- па. При таком методе доступа выполняется упреждающая выборка и планирова- ние операций ввода-вывода. При этом производится попытка обработать следую- щую запись сразу же после завершения обработки предыдущей. В основном хра- нилище содержится более чем одна запись. Это позволяет одновременно выпол- нять процесс и операции ввода-вывода. Такой метод доступа также автоматически объединяет логические записи в блоки, поэтому пользователю не нужно заботить- ся об этом. В противоположность этому базовый метод доступа обычно используется в ситуациях, когда порядок следования записей отбросить нельзя, например при прямом доступе. Также такой метод доступа полезен в случае, когда приложениям нужно контролировать размещение записей без вмешательства (и соответственно накладных расходов) очередей. В основных методах механизмы доступа читают и записывают физические блоки; объединение записей в блоки выполняется поль- зователем. 

 

 

Выделение и высвобождение места. Задача выделения и высвобождения места на дисках во многом похожа на аналогичную задачу для первичного хранилища с изеняемыми размерами разде- лов. Если требуется хранить файл в непрерывной области, то эту область следует подготовить путем слияния пустых мест. По мере создания, изменения и удаления файлов обычно растет фрагментация пустого пространства на диске. Поэтому при создании файла его блоки могут быть распределены по всей поверхности диска, что может привести к снижению производительности. Одним из методов решения этой проблемы является периодическое выполне- ние операции по сборке мусора. Файлы при этом реорганизуются так, чтобы рас- полагаться в соседних областях диска, а свободное пространство располагается сзади занятоой области диска. Некоторые системы выполняют эту операцию ди- намически при операциях с файлами. Некоторы, с учетом того, что она длительна – в нерабочее время. Также можно реорганизовывать файлы пользователей, кото- рые в данный момент не вошли в систему, или те файлы, которые давно не ис- пользовались. Однако на многих системах выполнять такую операцию нецелесообразно. В частности, для систем, у которых много параллельно исполняемых процессов. Каждый раз, когда процесс запрашивает операцию ввода-вывода, он, как вам из- вестно, блокируется до окончания этой операции, и управление передается друго- му процессу. Этот процесс, в свою очередь, также может запросить операцию ввода-вывода, и так несколько раз. В результате, даже если все записи файлов, к которым были сгенерированы операции ввода-вывода, располагаются в соседних областях, сами файлы могут быть на разных треках. Это означает, что в любом случае будут выполняться длительные операции поиска. Более того, если записи этих файлов разбросаны по поверхности диска, есть шансы на то, что часть из них окажется рядом, что в итоге уменьшит общее время на обслуживание всех запросов. Таким образом, разработка файловой системы, как и ОС, требует знания об- ласти применения системы – количества пользователей в системе, среднего коли- чества запросов на операции ввода-вывода, типичные задачи системы и т.п. Эти факторы должны приниматься во внимание при планировании файловой системы для эффективной организации файлов и структуры директорий. Принцип локальности, который мы рассматривали ранее в виртуальных хра- нилищах, приводит нас к попытке хранить данные непрерывно. Пользователи ча- сто выполняют операцию просмотра файла, при которой они последовательно просматривают файл в попытке найти нужную запись. Такая операция должна выполняться с минимальным количеством операций поиска. В системах со страничной организацией наименьший объем информации, перемещаемой между первичным и вторичным хранилищами равен размеру стра- ницы. Поэтому имеет смысл организовать размещение данных во вторичном хра- нилище в блоках с размером, равным или кратным размеру страницы. Локаль- ность позволяет нам считать, что если процесс затребовал данные из страницы,то велика вероятность того, что ему понадобятся и другие данные с этой страни- цы. Также вероятно, что этому процессу могут понадобиться данные и с соседних страниц (в виртуальном адресном пространстве). Поэтому желательно хранить соседние в виртуальном адресном пространстве страницы соседними и на вто- ричном хранилище, особенно в случае, если в блок помещается несколько стра- ниц. Непрерывное размещение. При таком размещении файлы располагаются в непрерывных областях вторичного хранилища. Пользователь указывает макси- малдьный размер, который может потребоваться для файла, который будет сейчас создан. Если такой объем недоступен, файл не создается. Достоинством такого подхода является то, что записи файла физически располагаются друг за другом. Это ускоряет скорость доступа по сравнению с теми системами, в которых после- довательный файл размазан по всей поверхности диска. При таком подходе реализация директорий очевидна. Для каждого файла просто необходимо знать адрес его начала и его длину. Однако есть несколько крупных недостатков. При удалении файлов занимае- мое ими пространство во вторичном хранилище освобождается. Это про- странство доступно для новых файлов, но они должны уместиться в дыры. Таким образом, мы приходим к проблеме размещения, аналогичной рассмотренной ра- нее для первичных хранилищ – дыры следует собрать в одну, и эту операцию сле- дует выполнять регулярно. Также возникают проблемы, если файлы должны менять свой размер дина- мически. Как только мы превысили запрошенный при создании файла объем, мы должны дополнительно выделить пространство. Во избежание этого пользовате- ли часто запрашивают заведомо больший объем пространства, чем им нужно. Это ведет к перерасходу ресурсов вторичного хранилища. Разрывное размещение. Из-за указанных выше недостатков схема непре- рывного размещения редко используется на практике. Вместо нее используется подход с разрывным размещением файлов. Рассмотрим несколько методик. Секторно-ориентированное цепное размещение. Диск рассматривается как совокупность секторов. Файлы состоят из секторов, которые могут быть раз- бросаны по всей поверхности диска. Сектора одного файла организуют цепь, в которой текущий сектор файла указывает на следующий сектор. Список свобод- ного пространства содержит записи обо всех секторах, не занятых файлом. Если файл нужно увеличить в размере, к нему просто добавляется столько свободныхсекоров, сколько ему нужно. Если файл уменьшается в размере, то высвобождае- мые сектора просто вносятся в список свободных. Хотя этот метод устраняет недостатки непрерывного размещения, у него есть свои собственные проблемы. Поскольку сектора разбросаны по диску, извлечение данных файла может занять длительное время. Также присутствуют накладные расходы на поддержание списков и цепей. Кроме того, указатели на следующий сектор могут занимать существенный объем. Блочное размещение. Другой схемой, используемой для управления вторич- ными хранилищами более эффективно и уменьшающей накладные расходы, яв- ляется блочное размещение. Эта схема является смесью из методов непрерывного и разрывного размещения. В этой схеме вместо отслеживания отдельных секторов используются блоки секторов. Система при увеличении файла пытается выделить новый блок, распо- ложенный как можно ближе к уже существующим блокам файла. Каждый доступ к файлу требует сначала определить нужный блок, а затем – адрес внутри блока (напоминает виртуальное хранилище, не так ли?). Существует несколько вариан- тов реализации. Это цепи блоков, индексные цепи блоков и блочно-ориентирован- ное отображение файла. В случае цепи блоков запи- си в пользовательской директо- рии указывают на первый блок каждого файла. Каждый блок при этом содержит указатель на следующий блок, и данные файла. Как правило, блок дела- ют размером с трек. Для доступа к нужным данным требуется перебрать все блоки последова- тельно с начала цепи, пока не бу- дет найден содержащий искомые данные. Затем нужно будет найти конкретную запись внутри блока. Если файл распределен по поверхности диска, может потребоваться много продолжитель- ных операций поиска. Однако реализация операций вставки и замены очевидна. Некоторые системы добавляют указатель на предыдущий блок цепи. В этом слу- чае поиск может вестись в обоих направлениях одновременно.В схеме с индекси- рованной цепочкой блоков указатели раз- мещаются в отдельных индексных блоках. Каждый индексный блок содержит фикси- рованное количество элементов. Каждый элемент содержит ин- дентификатор записи и указатель на эту за- пись. Если для описа- ния файла требуется больше одного индек- соного блока, они обра- зуют цепь аналогично предыдущему случаю. Преимуществом такого подхода яв- ляется тот факт, что поиск должен происходить непосредственно в индексных блоках. Эти блоки можно хранить во вторичном хранилище рядом друг с другом, что уменьшит время поиска. Также можно резервировать непрерывную область специально для хранения индексных блоков. Однако и у этого подхода есть недо- статок – операция вставки в файл требует полной перестройки индекса файла, что является достаточно длительной операцией. Некоторые системы специально оставляют промежутки в индексах для того, чтобы в дальнейшем заполнить их при вставке данных в файл. В блочно-ориентированном отобра- жении файла вместо использования указа- телей система использует нумерацию бло- ков. Обычно этот номер легко превратить в физический адрес блока из геометриче- ских соображений – диск представляет со- бой двумерный массив известной ширины и длины, поэтому задача о нахождении блока по его номеру эквивалентна задаче о нахождении отстатка от деления на число. Карта отображения содержит по одному элементу на каждый блок диска. Эле- менты в директории указывают на первый блок файла в карте отображения. Каж- дый элемент в карте содержит номер следующего блока файла. Таким образом можно получить все номера блоков файла, зная номер первого блока. Последние блоки в цепочках должны содержать какой-то признак того, что они ни на что не указывают. Для поиска свободных блоков система может либо линейно просмотреть список всех блоков диска и выяснить, кто из них занят, или также вести список свободных блоков. Достоинство такой схемы организации за- ключается в том, что физическое расположение блоков легко выясняется по карте отображения. Кроме того, просто реализуются все операции по работе с файлами.


файлы и файловые системы. их функции

Среда, 13 Января 2016 г. 05:21 + в цитатник

Файл – это именованый набор данных. Обычно он располагается во вторич- ных хранилищах, таких как дисковые накопители или накопители на магнитных лентах. Он может управляться как единое целое такими действиями: • открытие – подготовить файл использованию данных в нем; • закрытие – предотвратить данные файла от дальнейшего использования; • создание – создание нового файла; • уничтожение – удаление файла; • копирование – создание файла с этими же данными, но другим именем; • переименование – изменение имени файла без изменения его содержимого; • вывод – получение содержимого файла (на экране или на принтере). Над конкретным набором данных внутри файла можно выполнить следующие операции: • чтение – ввести данные из файла в процесс; • запись – сбросить данные из процесса в файл; • обновление – изменить существующий в файле набор данных; • вставка – добавить к файлу новый набор данных; • удаление – удалить из файла набор данных. Файлы характеризуются: • изменчивостью – частотой, с которой пользователи меняют содержимое файла; • активностью – частотой, с которой пользователи требуют доступа к данным файла; • размером – количеством информации, хранящемся в файле.

 

Файловые системы. Важным компонентом ОС является файловая система (ФС). Файловая систе- ма обычно состоит из следующих компонент: • методы доступа – метод, которым извлекают данные из файла; • управление файлами – механизмы, с помощью которых файлы хранятся, разделяются, защищаются; • управление внешними устройствами хранения – выделение пространства под файлы на вторичных хранилищах; • Механизмы обеспечения целостности файлов – механизмы, гарантирую- щие, что данные в файлах будут неповреждены. Когда обеспечивается це- лостность файлов, то в файле будут находиться именно те данные, которые относяться к файлу, а посторонние данные в файле не окажутся (обратите внимание, что про потерю данных здесь ничего не сказано). ФС обычно сосредотачиваются на управлении пространством вторичных устройств хранения данных, в частности дисковых накопителей.Далее рассмот- рим пример системы с разделением времени, поддерживающей одновременно ак- тивность примерно 100 терминалов и общим числом пользователей более 10 000. Каждый из этих пользователей имеет несколько учетных записей в системе, с по- мощью которых они организуют свою работу в различных проектах, ведущихся в системе. У каждой из этих учетных записей есть свои файлы, причем их много. Некоторые из этих файлоы маленькие (например, письма электронной почты). Другие файлы – большие (например, тестовые куски базы данных). Будем счи- тать, что у каждой учетной записи в среднем 100 файлов. Таким образом, в нашей системе в общем храниться примерно 1 000 000 файлов. Причем для нормальной работы доступ к этим файлам должен осуществляться как можно быстрее. Для целей ускорения досту- па пользователей к своим файлам в ФС нашей системы применяется двухуровневая структура, показанная на схеме. Корень директории – это место на диске, где хранится начало нашего дерева. Внутри корневой директории хранятся различные пользовательские директории. Внутри пользовательских директорий, в свою очередь, хранятся пользовательские файлы в виде неких записей. Каждая запись ука- зывает на пользовательский файл. Внутри каждой директории имена файлов должны быть уникальны. Однако системные имена файлов (то имя, по которому система может обратиться к файлу) должно быть уникально по всей ФС. В иерархически структурированных файловых системах (частным случаем которой является наша система) системное имя файла обычно состоит из полного пути доступа к нему, начиная с корневой директории, и имени файла. Например, в двухуровневой системе с пользователя- ми SMITH и JONES и файлами PAYROLL и PAYBILL у этих пользователей, си- стемные имена файлов будут иметь вид SMITH:PAYROLL, SMITH:PAYBILL, JONES:PAYROLL и JONES:PAYBILL (еслли : является признаком разделения име- ни директории и имени файла).

 

 

 

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


кэширование диска

Среда, 13 Января 2016 г. 05:16 + в цитатник

При записи данных на диск принято думать, что они мгновенно оказываются там. На самом деле это так в некоторых системах, но в большинстве данные ока- зываются в специальном системном буфере, расположенном в основном хранили- ще, откуда они постепенно будут вытесняться на накопитель. И только в случае исчерпания буфера они начнут активно записываться на диск. Такой метод орга- низации записи используется по двум причинам – во-первых, в случае записи не- большой порции данных (что происходит довольно часто) программа имеет дело не с медленным накопителем, а с быстрым первичным хранилищем. Во-вторых, если затем потребуется прочитать только-что записанные данные, они будут взя- ты из первичного хранилища, а не из вторичного (это также происходит достаточ- но часто). Однако в результате запись на диск не обязательно происходит в тот момент, как это сделала программа. То есть реальное содержимое диска может отличаться от того, что ожидает получить на нем программа. До тех пор, пока все работает нормально, проблем не возникает. Однако в случае системного сбоя или нештат- ного выключения системы может произойти потеря данных. Для минимизации шансов на рассинхронизацию содержимого диска и того, что на нем должно хра- ниться, UNIX-системы регулярно выполняют команду sync для сброса буфера за- писи на диск. Основная идея организации буфера для дисковых накопителей – хранить в памяти данные, к которым происходит частое обращение. Однако для этого требу- ется уметь определять такие данные. Часто используются эвристика локальности: если некие данные потребовались сейчас, то вероятно, что они потребуются и в недалеком будущем. Другим вариантом этой эвристики может служить идея о том, что могут потребоваться также и соседние данные – это пример про- странственной локализации.


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

Среда, 13 Января 2016 г. 05:14 + в цитатник

В многозадачных вычислительных системах запросы на чтение и запись дан- ных на диски могут генерироваться многими процессами. В определенных ситуа- циях такие запросы могут возникать быстрее, чем они будут обрабатываться устройством. Поэтому требуется использовать очереди ожидания для запросов к каждому устройству. Некоторые системы обслуживают такие очереди по уже из- вестному вам принципу «первым пришел – первым ушел» (FIFO, или, в данном случае «first come – first serve», FCFS). Какой бы запрос не пришел позднее, поря- док обслуживания предыдущих запросов от этого не изменится. Таким образом, FCFS является честной политикой обслуживания запросов, однако с ростом числа запросов (то есть с увеличением нагрузки на систему) FCFS может привести к очень длительному времени ожидания, например в ситуации, показанной на ри- сунке. FCFS проявляет признаки случайной последовательно- сти поиска, при которой успешные запросы могут вызвать длительные поиски от внутренних к внешним цилиндрам. Для минимизации времени поиска разумно провести пере- упорядочивание запросов на операции в порядке, отличном от порядка поступления запросов. Это называется планиро- ванием дисковых операций. Кстати, обратите внимание, что FCFS также является простейшей политикой планирования дисковых операций. Планирование дисковых операций требует тщательного изучения поступающих запросов для определения наиболее эффективного варианта их выполнения. Планировщик должен учитывать положе- ние на пластинах для всех запросов, находящихся в очереди. Запросы должны переупорядочиваться таким образом, чтобы минимизировать время механических движений. Причем каждый новый поступивший запрос может заставить провести полное переупорядочивание всей очереди. Признание получили два подхода к планированию – минимизация времени поиска и минимизация времени подготовки. С учетом того, что время поиска на порядок превосходит время подгтовки, большинство алгоритмов концентрируют- ся только на времени поиска. Минимизация времени подготовки обычно имеет смысл только при очень большой нагрузке на устройство. Под легкой нагрузкой (малым числом запросов в среднем) FCFS оказалась достаточно удачной политикой. Однако с ростом нагрузки начинает проявляться ее недостаток. Обратите внимание, что, хотя мы рассматриваем, как увеличить производи- тельность работы с устройством (например, винчестером), нам также может пона- добиться замедлить его. Этот кажущийся парадокс возникает из-за того, что часто поток данных с устройства превосходит пропускную способность системы, и приходится вводить буфер чтения. Для замедления работы устройства в таком случае может подойти методика чередования – данные делятся на блоки, которые читаются из разных мест диска. Это дает шанс системе в целом «отдышаться». Однако этот вариант не влияет на важность оптимизации запросов.

 

При очень большом количестве запросов на операции с дисковыми накопителями вероятность того, что возникнет несколько запросов к одному цилиндр, становится настолько высокой, что ее следует начать принимать во внимание как один из факторов переупорядочивания запросов. То есть следует минимизировать не только время поиска цилиндра, но и время подготовки к опе- рации, то есть время вращения диска до требуемой позиции. Аналогом стратегии SSTF для случая оптимизации по времени подготовки является стратегия SLTF (Shortest Latency Time First) – короткое время подготовки вперед. После позицио- нирования на требуемом цилиндре определяется операция с данными из этого ци- линдра с минимальным временем подготовки. Эта стратегия оказалась близка к теоретическому оптимуму. Дело в том, что эту стратегию можно рассматривать как очередь секторов – следующей операцией выбирается та, которая работает с сектором, наиболее близким в данный момент к текущему сектору. Эту политику достаточно просто реализовать. 

 

 

 

 

 

 

Иные методы оптимизации. Мы рассмотрели методики оптимизации накопителей на вращающихся дис- ках через аппаратные методы и с помощью ОС. Теперь рассмотрим иные методы оптимизации. По мере добавления и удаления файлов диски начинают фргментироваться. Даже последовательный файл, в котором не должно быть операций поиска, после продолжительной работы становится фрагментированным – распределенным по поверхности диска. В результате при работе с ним также возникают операции по- иска трека. Некоторые ОС содержат специальные программы-дефрагментаторы, которые проводят переупорядочивание файлов на поверхности диска таким об- разом, что файлы становятся последовательными на поверхности диска. Это мо- жет занять продолжительное время, поэтому такие программы обычно запускают в нерабочее время. Некоторые ОС борются с фрагментацией файлов тем, что пользователь может разбить диск на логические разделы. в результате фрагмента- ция файла будет ограничена разделом. Если системе требуется быстрый доступ к данным, можно размещать несколько копий данных в разных местах накопителя. Это позволит сократить время поиска, однако вводит дополнительные затраты на синхронизацию копий между собой. Поэтому такой метод более полезен при ра- боте с редко изменяемыми данными. В системах, в которых только один запрос к накопителю может выполняться одновременно, имеет смысл часто используемые данные вынести на отдельный дополнительный накопитель. Если применяется дискриминирующая политика планирования (например, SCAN, которая отдает предпочтение средним цилиндрам), то имеет смысл часто используемые данные размещать там, а не на крайних цилиндрах. Объединение записей в блоки также повышает производительность системы. Для чтения одной записи или нескольких последовательных на поверхности дис- ка записей требуется выполнить одну операцию поиска. Однако если эти записи считывать по одной, пришлось бы выполнить несколько операций поиска. Системы, отслеживающие операции доступа, могут пытаться хранить часто используемые данные в подходящем месте в иерархии хранилищ системы, за счет размещения редко используемых данных в медленном хранилище. С одной сторо- ны, такая методика позволяет значительно увеличить общую производительность системы. Однако, с другой стороны, это чревато неприемлемо низким временем отклика для операций с редко используемыми данными, даже если такие данные нужны немедленно (это проявляется в случае приложений реального времени). Некоторые системы исходят из принципа пространственной локальности и считывают целиком весь трек в системный буфер в случае любой операции с дан- ными, находящимися на этом треке. Однако в случае работы приложений, генери- рующих запросы с равномерным распределением по поверхности диска это мо- жет существенно понизить производительность системы. Еще одним подходом к увеличению производительности накопителей на жестких дисках может служить увеличение скорости вращения диска. Однако на практике не видно никаких существенных подвижек в этом направлении – за по- следние 30 лет скорость вращения дисков в накопителях выросла примерно в 5-6 раз (сравните это с прогрессом в остальных областях компьютерной техники). Де- ло в том, что при таком подходе следует решать серьезные технические пробле- мы. Увеличение скорости вращения диска требует увеличения потребляемойэнергии и как следствие рост выделяемого тепла и шума (как механического, так и электронного). Это означает необходимость более дорогой механики и электор- ники. Конечно, можно пытаться уменьшить потребление энергии уменьшением размеров (то есть веса) самого диска, но мы опять сталкиваемся с необходимо- стью удорожания механики. Также по мере увеличения скорости вращения диска мы сталкиваемся с проблемами физического рода (необходимость различать участки данных, намагниченных на диске – т.н. домены, аналог бита на диске, размер которых определяется материалом самого диска). Некоторые системы используют методику сжатия данных на диске. Это поз- воляет уменьшать размер диска, занимаемый данными. То есть это снижает коли- чество операций поиска и подготовки равно как и время передачи данных, а зна- чит, и общее время доступа к данным. Однако для реализации такой методики требуется выделять процессорное время на сжатие данных при записи и распа- ковку при чтении. Аппаратная же реализация этого приведет к удорожанию си- стемы.


накопители с подвижной головкой

Среда, 13 Января 2016 г. 05:10 + в цитатник

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


общие семафоры.примеры применения

Среда, 13 Января 2016 г. 05:08 + в цитатник

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

Реализация операций P и V с помощью алгоритма Деккера или инструкции testandset очевидна. Однако необходимо отметить, что в их реализациях использо- ван цикл ожидания. На практике это приводит к существенной потере производи- тельности. На прошлой лекции мы рассмотрели состояния процессов, реализуемые ядром ОС. Как вы помните, процесс, выполняющий операцию ввода-вывода, бло- кируется до завершения этой операции. Однако блокированный процесс не вы- полняет никаких действий, в том числе и цикла ожидания. Вместо этого ядро ОС перемещает PCB процесса в список блокированных процессов. Там процесс пре- бывает в состоянии сна до тех пор, пока ядро не разбудит его в связи с наступле- нием ожидаемого события путем перемещения PCB процесса в список ожидаю- щих исполнения процессов. Поэтому операции с семафорами можно реализовать в ядре ОС, что позволит избежать циклов ожидания. Семафор реализуется как защищенная переменная с очередью процессов, запросивших операцию V (в виде стека FIFO). Когда про- цесс пытается выполнить операцию P над семафором, чье значение равно 0, он тем самым блокирует себя и перемещается в очередь блокированных процессов в ожидании выполнения операции V над семафором. При каждом выполнении операции V над семафором процесс движется по списку вперед до тех пор, пока не оказывается первым в очереди. После очеред- ного выполнения операции V над семафором процесс перемещается ядром в список готовых к исполнению процессов. Очевидно, что в случае одновременного вызова операций P и V ядро должно корректно обработать эту ситуацию. В случае однопроцессорной системы неделимость выполнения операций P и V обеспечивается выключением прерываний во время действий с семафором. Это предотвратит прерывание этих процедур и возможную порчу значения семафора со всем отсюда вытекающим. Случай однопроцессорных систем и миграции про- цессов будет рассмотрен позднее.  


задача производитель-потребитель

Среда, 13 Января 2016 г. 05:06 + в цитатник

Если в обычной последовательной программе одна процедура вызывает другую и передает ей какие-то данные, никаких проблем не возникает. Эти процеду- ры являются частью одной программы и выполняются последовательно. Однако задача существенно усложняется в случае передачи данным одним процессом другому. Это один из вариантов межпроцессной коммуникации. Рассмотрим задачу о производителе-потребителе. Предположим, что некий процесс-производитель производит некую информацию, которую потребляет дру- гой процесс – потребитель. Для простоты будем считать, что информация – это натуральные числа, а обмен между ними происходит с помощью буфера, храня- щего одно значение. Производитель что-то вычисляет и помещает результат вы- числений в буфер. Потребитель берет числа из буфера и что-то с ними делает, например, печатает на экране. В случае, если скорость работы производителя и потребителя совпадают, то эта пара будет работать превосходно, и на экране будет формироваться поток дан- ных от производителя. Однако в случае существенной разницы скоростей между производителем и потребителем все становится хуже. Если потребитель работает гораздо быстрее производителя, то потребитель может распечатать одни и те же данные несколько раз. Если производитель рабо- тает быстрее, это может привести к потере данных – число в буфере перепишется несколько раз, и потребитель возьмет только последнее из серии. Этот пример демонстрирует использование семафоров для синхронизации двух процессов, что позволяет избежать описанных выше проблем. (%)В этом примере мы использовали два семафора: number_deposited и number_retrieved. Первый семафор устанавливается (V) производителем и проверяет- ся (P) потребителем; потребитель не может продолжать свою работу, пока не раз- мещено число в буфере. Второй семафор устанавливается потребителем, и прове- ряется производителем; производитель не может продолжать свою работу, пока потребитель не считал число из буфера. Начальное значение семафоров позволяет производителю разместить результат работы в буфере, а потребитель ожидает этого. Обратите внимание, что этот алгоритм реализует пошагово-блокирующую синхронизацию. Это допустимо, поскольку у нас только одна разделяемая пере- менная. Однако на практике емкость буфера стараются сделать побольше. В этом случае нам не надо осуществлять блокировку производителя и потребителя на каждом шаге, что позволит им работать действительно с разной скоростью.  


синхронизация процессов семафорами

Среда, 13 Января 2016 г. 05:03 + в цитатник

при выполнении процессом операции ввода-выво- да он блокирует себя до завершения этой операции. В результате какой-то другой процесс должен разбудить его. Это взаимодействие является примером примером протокола блокировки/пробуждения процесса. Предположим, что один процесс ожидает наступления какого-то события, и заблокирован. И есть другой процесс, который способен обнаружить наступление этого события и должен суметь разбудить первый процесс. Следующий пример демонстрирует использование механизма семафоров для решения этой задачи в случае двух процессов:(***)Идея алгоритма в следующем. Первый процесс выполняет какие-то дей- ствия, затем выполняет операцию P над семафором. Поскольку семафор был ини- циализирован в 0, первый процесс входит в состояние ожидания – блокируется. Второй процесс, выполняет какие-то свои действия, а затем выполняет операцию V над семафором, сигнализируя тем самым, что произошло ожидаемое событие. Это позволяет первому процессу продолжить свое исполнение, причем значение семафора будет 0. Обратите внимание, что данный алгоритм работает и в случае, если второй процесс обнаружил событие до запроса от первого процесса – просто в этом слу- чае первый процесс продолжит свою работу без остановки.


семафоры

Среда, 13 Января 2016 г. 05:02 + в цитатник

Семафор – это защищенная переменная, значение которой может быть изме- нено только с помощью операций P и V и операции инициализации семафора. Би- нарные семафоры способны принимать значение 0 или 1. Общие семафоры (или семафоры-счетчики) могут принимать натуральные значения.

Операция P выполняет следующие действия: if S>0 then S:=S-1; else (wait S)

Операция V действует так: if (есть процессы, ждущие S) then (выполняется один из этих процессов) else S:=S+1; Очевидно, что эти операции предполагают наличие стека FIFO для процес- сов, ожидающих выполнения своей операции P(S).

Как и инструкция testandset, операции P и V неделимы. Также внутри кода этих операций должно выполняться взаимное исключение на семафоре S. Если несколько процессов выполнят операцию P(S) одновременно, только один из них продолжит свое выполнение. Остальные процессы будут поставлены на ожида- ние, однако использование P и V гарантирует отсутствие неопределенной задерж- ки. Семафоры и операции над ними могут быть реализованы как программно, так и аппаратно. Они реализуются в ядре ОС.

Далее приведен пример взаимного исключения с применением этих операций.(!!!)


аппаратное решение проблемы взаимного исключения процессов

Среда, 13 Января 2016 г. 04:58 + в цитатник

Алгоритмы Деккера и Петерсона являются программным решением задачи о взаимном исключении процессов. Теперь рассмотрим аппаратный способ реше- ния этой задачи. Для этого нам потребуется единственная аппаратная инструкция, которая чи- тает переменную, сохраняет ее значение в какой-то другой переменной, и уста- навливает переменную в новое значение. Особенностью такой инструкции, часто называемой testandset, является выполнение всех этих действий в рамках одной непрерываемой и неделимой аппаратно реализованной функции. Инструкция testandset (a, b) считывает значение булевой переменной b, сохраняет его в a, и за- тем устанавливает b в значение true. Алгоритм взаимного исключения двух про- цессов с использованием этой инструкции принимает вид (*).Рассмотрим, как работает этот алгоритм. Булева переменная active истинна, если один из двух процессов находится в критической секции. Первый процесс основывает свое решение войти в критическую секцию на основании значения своей локальной переменной. Он устанавливает ее в значение «истина» и непре- рывно выполняет инструкцию testandset с глобальной переменной active. Если второй процесс не находится в критической секции, то значение пере- менной active будет равно false. Инструкция testandset сохранит это значение в ло- кальной переменной первого процесса и установит значение active в истину. Ис- ходя из значения своей локальной переменной, первый процесс пройдет в крити- ческую секцию, причем значение переменной active уже установлено в «истину». Это не даст попасть в критическую секцию второму процессу. Теперь предположим, что второй процесс уже был в критической секции. В этом случае после выполнения инструкции значение локальной переменной будет равно «истине», что не даст попасть в свою критическую секцию первому про- цессу, и при этом значение переменной active останется равно «истине». Таким образом, процесс останется в цикле ожидания до тех пор, пока второй процесс не завершит свою критическую секцию и при выходе не установит значение пере- менной active в значение «ложь». В этот момент произойдет вход первого процес- са в критическую секцию, как это было рассмотрено в предыдущем случае. Эта реализация, тем не менее, может страдать от проблемы неопределенной задержки. Однако на практике это маловероятно, особенно в случае многопроцес- сорных или многоядерных систем. Дело в том, что как только процесс выходит из своей критической секции и выставляет значение active в «ложь», почти наверня- ка другой процесс с помощью инструкции testandset захватит эту переменну 


алгоритм петерсона

Среда, 13 Января 2016 г. 04:56 + в цитатник

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

 


алгоритм Деккера

Среда, 13 Января 2016 г. 04:53 + в цитатник

Рассмотрим развитие алгоритма Деккера Дейкстрой. Сначала рассмотрим эту программу:

program version_one;

var process_number: integer;

procedure process_one;

begin

  while true do

  begin

     while process_number = 2 do;

     critical_section_one;

     process_number := 2;

     other_stuff_one

  end

end;

procedure process_two;

begin

     while true do

     begin

          while process_number = 1 do;

          critical_section_two;

          process_number := 1;

          other_stuff_two;

    end

end;

begin

          process_number := 1;

          parbegin

                        process_one;

                        process_two;  

           parend

end.

В этой программе процессы process_one и process_two выполняются од- новременно, постоянно входя и выходя из свих критических секций. Обратите внимание на бесконечные циклы с переменной process_number. Эти конструкции как раз и являются реализацией функции enter_mutual_exclusion. Причем она ра- ботает только при наличии двух процессов. Дело в том, что эти циклы предотвра- щают попадание процесса внутрь критической секции, если другой процесс уже находится в ней. По завершении своей критической секции процесс предостав- ляет другому процессу право попасть внутрь критической секции (путем измене- ния переменной). Обратите внимание, что переменная меняется при выходу из критической секции – то есть это фактически и есть реализация exit_mutual_exclusion. Обратите внимание на то, что в этой программе во время ожидания процес- сом своей очереди попасть внутрь критической секции процессор системы все равно занят (хотя фактически процесс ничего не выполняет). Такая методика на- зывается загруженное или активное ожидание. Использование активного ожида- ния приемлимо в случае малых задержек. В противном случае производительность системы резко снижается. Эта программа гарантированно обеспечивает выполнение взимных исключе- ний, однако высокой ценой. Во-первых, мы явно выбираем, какой процесс попа- дет в критическую секцию первым. Во-вторых, мы требуем, чтобы процессы че- редовались – даже если тот процесс, который мы приостановили, опять готов по- пасть в критическую секцию, а тот, который мы назначили на попадание в крити- ческую секцию, еще не готов к этому. Таким образом, если одному из процессов требуется попадать в критическую секцию чаще, чем другому, производитель- ность нашей системы существенно снизится.

Рассмотрим следующий вариант программы.

program version_two;

var p1_inside, p2_inside: boolean;

procedure process_one;

begin

while true do

begin

while p2_inside do;

p1_inside := true;

critical_section_one;

p1_inside := false;

other_stuff_one end end;

 

procedure process_two;

begin

while true do

begin

while p1_inside do;

p2_inside := true;

critical_section_two;

p2_inside := false;

other_stuff_two

end

end; 

begin

p1_inside := false;

p2_inside := false;

parbegin process_one;

process_two;

parend

end.

 

В этом варианте есть две переменные, каждая из которых позволяет опреде- лить, находится ли соответствующий процесс в критической секции, или нет. Благодаря этому каждый процесс ожидает входа в критическую секцию ровно столько времени, сколько другой процесс там находится; а также нет жестко за- данной последовательности входов процессов в критические секции. Однако воз- никает новая проблема: если оба процесс одновременно окажутся на входе в свои критические секции, то им ничего не помешает беспрепятственно попасть внутрь критических секций – поскольку во время проверки состояния переменных в цик- ле они будут иметь значения false, а смена значения происходит уже вне цикла. Корень проблемы в том, что между проверкой состояния и сменой значения пере- менной проходит небольшой промежуток времени – он очень мал, но его может хватить, чтобы другой процесс проскочил внутрь критической секции. Для устранения этой проблемы следует при выполнении одним процессом проверки сделать так, чтобы другой процесс не смог выполнить свою собствен- ную проверку. Далее приведен вариант программы, лишенный этого недостатка: (-)

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

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

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


взаимоисклюючающие примитивы.

Среда, 13 Января 2016 г. 04:39 + в цитатник

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

program mutual_exclusion;

var lines_entered: integer;

procedure process_one;

      while true do

       begin

                    get_next_line_from_terminal;

                    enter_mutual_exclusion;

                     lines_entered := lines_entered + 1 ; 

                     exit_mutual_exclusion;

                     process_the_line;

         end; 

         procedure process_two;

                      while true do

                       begin 

                               get_next_line_from_terminal;

                                enter_mutual_exclusion; 

                                          lines_entered := lines_entered + 1;

                               exit_mutual_exclusion; process_the_line 

                      end;

            begin

                   lines_entered := 0;

                   parbegin

                              process_one;

                              process_two;

                    parend

end.

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


обработка прерываний. ядро ос

Среда, 13 Января 2016 г. 04:28 + в цитатник

прерывание – это событие, которое изменяет поря- док выполнения процессором инструкций. При возникновении прерывания происходит следующее: • контроль передается ОС (т.е. оборудование передает управление ОС); • ОС сохраняет состояние прерванного процесса. Как правило, в PCB самого пре- рванного процесса; • ОС анализирует прерывание и передает контроль подходящей для обработки пре- рывания функции. В современных системах это может производиться оборудова- нием • функция-обработчик прерывания обрабатывает прерывание; • восстанавливается состояние прерванного процесса (или какого-то иного процес- са, выбранного в результате обработке прерывания); • назначенный процесс продолжает выполняться. Прерывание может быть специально вызвано-ловушка. Прерывание,вызванное каким-либо событием-ассинхроным по отношению к процессу.

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

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

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

В целом в ядрах обычно размещают код, отвечающий за следующие действия: • обработка прерываний; • создание и уничтожение процессов; • изменение состояния процессов; • посылки процессов; • приостановка и возобновление процессов; • синхронизация процессов; • межпроцессные коммуникации; • действия с PCB; • поддержка операций ввода-вывода; • поддержка выделения и высвобождения памяти в хранилищах; • поддержка файловой системы; • поддержка механизма входа и возврата из процедур; • поддержка некоторых функций учета системы.

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

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

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


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

Среда, 13 Января 2016 г. 04:16 + в цитатник

Контрольный блок процесса. Воплощением процесса в ОС является контрольный блок процесса (Process Control Block, или PCB), или дескриптор процесса. PCB представляет собой струк- туру, которая хранит все данные о процессоре, например: • текущее состояние процесса; • уникальный идентификатор процесса; • указатель на родителя процесса (процесс, породивший этот процесс); • указатели на потомков процесса (процессы, порожденные этим процессом); • приоритет процесса; • указатели на занимаемую процессом память; • указатели на используемые процессом ресурсы; • область значений регистров процесса; • процессор, на котором исполняется процесс (в многопроцессорных системах). Возможны и другие сведения о процесс

PCB является главным хранилищем данных, позволяющих ОС получать всю основную информацию о процессе. Область значений регистров процесса использу- ется ОС при переключении процессов из/в состояние готовности. При переходе из состояния исполнения в нее записываются значения регистров процессора. При переходе в состояние готовности из нее считываются требуемые значения регистров. Эта техника позволяет скрыть от процессов тот факт, что они исполняются дискрет- но. Таким образом, PCB является ключевым фактором для обеспечения многоза- дачности. Из-за необходимости постоянной работой с PCB, причем по возможности быстрой, многие системы аппаратно поддерживают работу с PCB, например, содер- жат служебные регистры, указывающие на PCB исполняемого процесса, или для ускорения записи и считывания данных из PCB. 3.6. Действия над процессами. Подсистемы управления процессами в ОС должны иметь возможность выпол- нять некоторые операции с и над процессами. Эти действия включают в себя: • создание процесса; • уничтожение процесса; • приостановку процесса; • возобновление процесса; • изменение приоритета процесса; • блокировку процесса; • пробуждение процесса; • посылку процесса; • поддержку обмена данными между процессами (иначе называемую межпроцесс- ной коммуникацией). Операция создания нового процесса состоит из множества действий, в частно- сти: • именование процесса; • его вставка в системную таблицу процессов; • определение начального приоритета процесса; • создание соответствующего PCB; • выделение начальных ресурсов процесса.

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

 

 

. Приостановка и возобновление процессов.

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

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


состояние процессов. переходы между состояниями

Среда, 13 Января 2016 г. 04:10 + в цитатник

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

 

Переходы между состояниями процессов. Когда задача поступает на выполнение системы, возникает соответствующей ей процесс. Этот процесс помещается в соответствующее место списка готовности (как правило, в низ). По мере того, как процессы с верха списка используют свою пор- цию времени процессора и уходят с первого места, наш процесс движется вверх. По достижении первого места в списке готовности процесс ожидает наступления своей очереди на использование процессора. Все это время он находился в состоянии го- товности. При высвобождении процессора ему передается на исполнение наш про- цесс. Процесс переходит в состояние исполнения. Говорят, что произошла смена со- стояния процесса (с готовности на исполнение). Процесс передачи процесса на про- цессор называется посылкой, а управляет этим процессом специальная подсистема ОС – диспетчер процессов. Этот переход мы будем обозначать так: посылка(имя_процесса):готовность → исполнение. Для предотвращения захвата процессом всего процессорного времени системы, случайно- го или намеренного, операционная система уста- навливает являющийся частью оборудования си- стемы таймер прерывания, который позволяет ре- ализовать концепцию квантов. Если процесс добро- вольно не освободил процессор по истечении от- веденных ему квантов, таймер генерирует прерывание, побуждающее ОС перехва- тить контроль. ОС снимает процесс с исполнения и перемещает его в подходящее место в списке готовности (обычно в низ списка), а процесс, стоящий в вверху списка готовности, посылается на процессор. Этому соответствует малый круг на рисунке смены состояний. Эти переходы мы обозначим как таймер(имя_процесса):исполнение → готовность и посылка(имя_процесса):го- товность → исполнение. Если до перехода процесса в состояние готовности он начинает какую-либо операцию ввода-вывода, то процесс тем самым добровольно высвобождает процес- сор, поскольку до завершения этой операции никаких действий процесс не предпри- мет (то есть он блокирует себя от выполнения). Такой процесс перемещается в спи- сок блокировки до наступления ожидаемого им события. Соответствующий переход обозначим как блокировка(имя_процесса):исполнение → заблокированность. После завершения операции ввода-вывода процесс перейдет из блокировки в состояние готовности. Такой переход мы обозначим как пробуждение(имя_процес- са):заблокированность → готовность.

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


понятие процесса и нити. основные задачи управления процессами

Среда, 13 Января 2016 г. 04:02 + в цитатник

Процесс-программа в момент выполнения со всеми загруженными в данный момент в главное хранилище данными.

Нити-возможность создания нескольких потоков управления в одном процессе.

Задачи управления процессами:

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

основные понятия оборудования, программного беспечения и микрокода

Среда, 13 Января 2016 г. 03:56 + в цитатник

А)Оборудование-совокупность устройств,составляющих компьютер-процессоры, устройства хранения давнных,устройства ввода-вывода, устройства коммуникаций.

Б)Программное обеспечение-программы на машинном коде-инструкции и данные,которые управляют оборудованием компьютера.

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

Нижний уровень-физ устройства (микросхемы,резисторы,конденсаторы). Затем следует слой микроархитектуры,но не на всех машинах. Примитивная прогр.прослойка,работающая с оборудованием. Фактически-интерпритатор (ADD). На уровне машинного языка происходит управление устройствами, для этого данные и параметры команды загружаются в устройство. Затем устройству дается команда на исполнение того, что определяется этими параметрами.      Для скрытия этих тонкостей существует ос. Они пердоставляет удобный интерфейс для работы с устройствами. Над ос находится сис программы. Они не всегда поставляются с ос и не являются ее частью. Смый верхний уровень-прикладные программы.

А)

Чередование. Методика чередования используется для ускорения доступа к данным в основном хранилище. Как правило, во время доступа к отдельной части основного хранилища (называемой банком) прочие запросы к этому банку блокиру- ются. Методика чередования заключается в том, что единый набор данных размеща- ется в различных банках основного хранилища. Это приводит к тому, что может од- новременно выполняться несколько запросов к одному набору данных.

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

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

Буферизация. Буфер – это область хранилища данных, предназначенная для хранения данных в ходе операций ввода-вывода

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

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

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

Автономные и  управляемые устройства.  Автономные устройства могут выполнять свои  функции без постоянного контроля со стороны компьютера. Пример автономного устройства-фотопринтеры, печатающие напрямую с накопителя. Деление условно. Существуют и полуавтономные устройства.

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

Потеря циклов. Использование каналов вв-выв влечет проблемы. Конфликт (процессор и канал вв-выв работают одновременно) – запрос процессора и канала к одному банку одновременно. Запрос канала имеет более высокий приоритет,это влечет простой процессора. Такая ситуация-потеря цикла.

Адресация по базе и смещению.  Каждый адрес представляется в виде набора двух величин – основания или базы и смещения от этого адреса. Такой подход имеет дополнительное преимущество – программа становится независимой от места ее расположения в памяти. Однако каждый раз при ее загрузке потребуется изменять базовый регистр системы.

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

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

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

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

Конвейеризация. Методика, реализуемая в оборудовании для введения определенной параллелизации в систему. Это позволяет одновременно вы- полнять несколько различных инструкций, но на разных стадиях. Возниктоновение двух проблем:1)проблема загрузки конвейера, 2)не все инстукции могут успешно соседствовать. Может происходить сбой с его последующим перезапуском. Гибель архитектуры intelPentium4.

Хранилища. Несколько уровней хранилища:1)кеш-память. она энергозависима,дорогая,поэт малый в малом объеме, 2)основное хранилище-опер память, 3)различные варианты вторич хранилищ-диски,опт устройства. Совокупность всех байт,кот можно адресовать в хранилище-адресное пространство.

Сокращенный набор инструкций. Risc. в процессоры с традиционными наборами команд постоянно добавляют новые инструкции, все более сложные. Это влечет за собой за- медление общей скорости работы процессора (которое мы не видим из-за общего ро- ста производительности процессоров). Такой подход (Complex Instruction Set Computing, CISC) ведет к гигантскому набору инструкций и большим потерям времени на декодирование таких команд.

 

Б)

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

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

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

Программа вместо работы с медленным принтером сбрасывает файл на диск, и на этом завершает операцию по выводу на принтер. Как только принтер освобождается, сброшенный на диск файл выводится на печать. Однако для этого нужна специальная программа – в данном случае спулер принтера, или диспетчер пе- чати. Оптимизирующие и не оптимизирующие компиляторы. При разработке про- грамм процесс компиляции выполняется очень часто, и его требуется выполнять быстро,причем единственная задача-отсутствие ошибок. В большинстве случаев основная часть про- грамм, в том числе и системных, пишется на языках высокого уровня, и затем компи- лируется оптимизирующими компиляторами. Исключением является ситуации, тре- бующие использования расширенных наборов CISC-команд, таких как MMX, SSE и 3DNOW!

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

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

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

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

В)

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

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

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

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

Микрокод и ОС. Некоторые части ОС выполняются тысячи раз в секунду. Для ускорения работы эти функции можно вынести в микрокод, что позволит существен- но увеличить производительность системы. Вот пример частей ОС, которые имеет смысл выносить в микрокод: • обработчик прерываний; • поддержка различных типов данных; • переключение окружения процессов; • вызов процедур


понятие об ос.история их развития

Среда, 13 Января 2016 г. 02:18 + в цитатник

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

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

Современные компьютерные системы – достаточно сложные комплексы. Они включают такие устройства как:

-процессор (один и более) -оперативная память (внутренняя память, память)

-устройства внешней памяти (диски, флэш-карты и т.д.) -клавиатура

-монитор -принтеры, сканеры

-сетевой интерфейс -прочие устройства

Всем этим надо:

1) управлять

2) избавить пользователя от подробной работы аппаратуры

ОС выполняют две основные функции:

-расширение возможностей машины (расширенная или виртуальная машина)

-управление ресурсами

 

Этапы развития компьютеров и ОС.

1.     Первое поколение – ламповые машины  (1940 – 55гг).

-строила, разрабатывала и эксплуатировала машину одна команда.

-программирование выполнялось на абсолютном машинном языке.

-управление машиной проводилось путем соединения коммутационных   панелей проводами.

-компьютеры были огромными – занимали целую комнату.

-после появления перфокарт стало возможным записывать на них программы и считывать.

-результат работы распечатывался в виде массива цифр.

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

-машинное время стоило очень дорого, но использовалось не эффективно – 90% времени оборудование простаивало (анализ результатов, работа по вводу-выводу данных).

-машины часто ломались.

      2. Второе поколение – транзисторы (1955 – 65гг).

-повысилась надежность компьютеров, стали значительно реже выходить из строя.

-сложилось разделение между проектировщиками, программистами и обслуживающим персоналом.

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

-программист писал программу на бумаге (ассемблер, фортран), затем переносил ее на перфокарту, перфокарты относил в машинный за и отдавал оператору. Ждал результат.

Оператор: брал стопу перфокарт, считывал, загружал компилятор, открывал лист с результатами работы и относил программисту, брал новую стопу.

Очень много времени терялось впустую!

Решением стали системы пакетной обработки.

·        Весь пакет заданий собирался на магнитную ленту

·        Лента загружалась в компьютер (в специальное устройство)

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

·        Результат выполнения заданий записывался на другую ленту

·        После обработки всего пакета ставилась следующая лента

·        Результат с ленты распечатывался

 

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

Пакетные системы – прообраз современных ОС.

      3.Третье поколение – интегральные схемы (1965-80гг).

-многозадачность (во время операций ввода-вывода процессор простаивал, для научных расчетов – не важно, т.к. ввод-вывод – малый по времени, но обработка данных занимало до 80%).

Решение:разбиение памяти на несколько частей (разделов), каждому разделу давалось отдельное задание.        

Разделы памяти:

Зад№1

 Зад№2

Зад№3

ОС

        

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

 

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

      4.Четвертое поколение – ПК (1980 – по наши дни)

         -компьютеры стали широкодоступны

         -рост программного обеспечения

         -две основные ОС: MS-DOSи UNIXдоминировали

         -развиваются сетевые и распределенные системы.


Дневник Ольга__Александровна

Среда, 13 Января 2016 г. 02:11 + в цитатник
Учусь на программиста. Просто нужно сдать экзамен


Поиск сообщений в Ольга__Александровна
Страницы: 2 [1] Календарь