- •2. Массивы данных в языке программирования Паскаль.
- •3 Операции и выражения в языке программирования Паскаль.
- •4.Условный оператор в языку поскаль
- •6. Операторы цикла паскаль
- •7 Процедуры ввода-вывода в Паскаль.
- •8 Процедуры и функции в Паскаль.
- •9 Примитивные типы данных в Си.
- •10 Массивы данных в Си.
- •12 Операции и выражения в си
- •13 Условный оператор и операция в Си.
- •15 Организация циклов в программе.Си
- •18 Объекты и классы с
- •19 Управление доступом к классу.
- •20 Конструкторы классов
- •21 Наследование классов
- •22 Перегрузка и переопределение членов класса
- •23 Абстрактные классы
- •24 Массивы объектов
- •25 Иерархическая,сетевая,реляционная модели представления данных.
- •26 Нормализация базы данных, основные принципы и цель нормализации.
- •27 Проектирование баз данных
- •28 Язык sql и его возможности, выборка данных средствами sql
- •29 Язык sql и его возможности редактирование данных sql
- •30 Создание, редактирование и удаление таблиц средствами sql
- •Представление – view
- •31 Шинная архитектура персональных компьютеров
- •32 Микропроцессоры, контроллеры и микроконтроллеры
- •33 Современные виды устройств памяти в вс
- •34 Структура и свойства системы видеовывода.
- •35 Современные системы печати.
- •36 (6) Виды мультимедийного оборудования в составе компьютера.
- •37 Понятие формфактора корпуса и его влияние на конструкцию компьютеров.
- •38 Базовая система ввода-вывода (bios) и способы ее настройки.
- •39 Post-диагностика и внешняя диагностика современных вычислительных систем
- •41 (11) Возможные неисправности системных плат персональных компьютеров.
- •42 Диагностика неисправностей hdd и способы восст. Данных
- •43 Определения ос
- •44 Схема взаимодействия ядра персонального компьютера с пользователем
- •45 Классификация операционных систем.
- •46 Особенности методов построения операционных систем
- •47 Атрибуты и права доступа к файлу
- •48 Методы распределения памяти
- •49 Файловая система в структуре операционной системы
- •50 Понятие виртуального ресурса и машины.
- •51 Понятие и основные виды интерфейсов.
- •52 Состояния процессов в системах с абсолютными и относительными приоритетами.
- •53 Вытесняющие и невытесн. Алгоритмы планирования процессов
- •54 Понятие критической секции при синхронизации процессов.
- •55 Классификация современных сетей.
- •56 Модели представления сетевых объектов и устройств
- •Физический и канальный уровни модели osi
- •Сетевой и транспортный уровни модели osi
- •Сеансовый, представительский и прикладной уровни osi
- •57 Назначение и виды методов доступа к среде
- •Метод доступа к среде с использованием маркера
- •Структурированные кабельные системы
- •59 Сетевое оборудование
- •60 Среды передачи данных
- •61 Примеры сетевых технологий построения локальных вычислительных сетей
- •62 Виды адресации в компьютерных сетях
- •63 Виды сетевого программного обеспечения и их основные характеристики
- •64 Способы объединения и управления участников сети
- •65 Простейшие схемы соединения компьютеров в сеть
53 Вытесняющие и невытесн. Алгоритмы планирования процессов
Существует два основных типа процедур планирования процессов - вытесняющие (preemptive) и невытесняющие (non-preemptive).
Невытесняющая многозадачность - это способ планирования процессов, при котором активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление планировщику операционной системы для того, чтобы тот выбрал из очереди другой, готовый к выполнению процесс.
Вытесняющая многозадачность - это такой способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимается планировщиком операционной системы, а не самой активной задачей. Основным различием между preemptive и non-preemptive вариантами многозадачности является степень централизации механизма планирования задач. При вытесняющей многозадачности механизм планирования задач целиком сосредоточен в операционной системе, и программист пишет свое приложение, не заботясь о том, что оно будет выполняться параллельно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения активной задачи, запоминает ее контекст, выбирает из очереди готовых задач следующую и запускает ее на выполнение, загружая ее контекст.
При невытесняющей многозадачности механизм планирования распределен между системой и прикладными программами. Прикладная программа, получив управление от операционной системы, сама определяет момент завершения своей очередной итерации и передает управление ОС с помощью какого-либо системного вызова, а ОС формирует очереди задач и выбирает в соответствии с некоторым алгоритмом (например, с учетом приоритетов) следующую задачу на выполнение. Такой механизм создает проблемы как для пользователей, так и для разработчиков.
Для пользователей это означает, что управление системой теряется на произвольный период времени, который определяется приложением (а не пользователем). Если приложение тратит слишком много времени на выполнение какой-либо работы, например, на форматирование диска, пользователь не может переключиться с этой задачи на другую задачу. Эта ситуация нежелательна, так как пользователи обычно не хотят долго ждать, когда машина завершит свою задачу.
Поэтому разработчики приложений для non-preemptive операционной среды, возлагая на себя функции планировщика, должны создавать приложения так, чтобы они выполняли свои задачи небольшими частями. Программист должен обеспечить "
54 Понятие критической секции при синхронизации процессов.
Важным понятием синхронизации процессов является понятие критическая секция" программы. Критическая секция - это часть программы, которой осуществляется доступ к разделяемым данным. Чтобы исключить эффект гонок по отношению к некоторому ресурсу, необходимо обеспечить, чтобы в каждый момент в критической секции, связанной с этим ресурсом, находился максимум один процесс. Этот прием называют взаимным исключением.
Простейший способ обеспечить взаимное исключение – позволить процессу, находящемуся в критической секции, запрещать все прерывания. Однако этот способ непригоден, так как опасно доверять управление системой пользовательскому процессу; он может надолго занять процессор, а при крахе процесса в критической области крах потерпит вся система, потому что прерывания никогда не будут разрешены.
Другим способом является использование блокирующих переменных. С каждым разделяемым ресурсом связывается двоичная переменная, которая принимает значение 1, если ресурс свободен (то есть ни один процесс не находится в данный момент в критической секции, связанной с данным процессом), и значение 0, если ресурс занят.
Если все процессы написаны с использованием вышеописанных соглашений, то взаимное исключение гарантируется. Следует заметить, что операция проверки и установки блокирующей переменной должна быть неделимой. Поясним это.
Пусть в результате проверки переменной процесс определил, что ресурс свободен, но сразу после этого, не успев установить переменную в 0, был прерван. За время его приостановки другой процесс занял ресурс, вошел в свою критическую секцию, но также был прерван, не завершив работы с разделяемым ресурсом. Когда управление было возвращено первому процессу, он, считая ресурс свободным, установил признак занятости и начал выполнять свою критическую секцию. Таким образом был нарушен принцип взаимного исключения, что потенциально может привести к нежелаемым последствиям. Во избежание таких ситуаций в системе команд машины желательно иметь единую команду "проверка-установка", или же реализовывать системными средствами соответствующие программные примитивы, которые бы запрещали прерывания на протяжении всей операции проверки и установки.
Реализация критических секций с использованием блокирующих переменных имеет существенный недостаток: в течение времени, когда один процесс находится в критической секции, другой процесс, которому требуется тот же ресурс, будет выполнять рутинные действия по опросу блокирующей переменной, бесполезно тратя процессорное время. Для устранения таких ситуаций может быть использован так называемый аппарат событий. С помощью этого средства могут решаться не только проблемы взаимного исключения, но и более общие задачи синхронизации процессов.