- •3. Язык Си-средство разработки ос. Базовые конструкции. Массивы и указатели.
- •4. Язык Си-средство разработки ос. Структура программы. Препроцессор.
- •5. Язык Си-средство разработки ос. Организация ввода-вывода в Си, форматированный ввод-вывод.
- •7. Язык Си-средство разработки ос. Динамическое выделение памяти. Структуры и объединения.
- •Динамические структуры данных
- •Архитектура ос
- •Контекст процесса
- •Некоторые типы процессов.
- •Жизненный цикл процесса
- •Классификация алгоритмов:
- •Контекст процесса
- •17. Аппарат системных вызовов в ос unix. Порождение новых процессов.
- •21. Управление процессами. Жизненный цикл процесса в oс unix.
- •26. Взаимодействие процессов в ос unix. System V ipc.
7. Язык Си-средство разработки ос. Динамическое выделение памяти. Структуры и объединения.
Структура – это тип данных, позволяющий сгруппировать несколько переменных под одним именем. struct [<тег структуры>]{<список деклараций полей>};
Используя typedef при декларации структуры, задают ее новое имя:
typedef struct point {int x; int y;} sp;
Теперь тип sp – синоним типа struct point, и следующие определения эквивалентны:
struct point z; sp z;
Доступ к полям структуры осуществляется с помощью операции «точка»: z.x, z.y, если же определен указатель на структуру p, то используется операция «стрелка» ->. Например:
p=&z;
p->x=2; /* (*p).x – эквивалентно */
Структуры могут быть вложенными. Разрешается присваивать и копировать структуры, но структуры нельзя сравнивать.
Объединение (union) – это тип данных, позволяющий хранить разнородные данные в одной и той же области памяти.
Фактически, объединение – это структура, все поля которой имеют нулевое смещение относительно ее базового адреса, а размер выделяемой области памяти определяется самым большим полем.
Динамические структуры данных
Эл. однонаправленного списка |
Эл. двунаправленного списка |
Эл. бинарного дерева |
struct Node1 { double data; struct Node1 *next;}; |
struct Node2 { int num; struct Node2 *next; struct Node2 *prev;}; |
struct NodeTree {char name[10]; struct Node2 *llink; struct Node2 *rlink;}; |
Библиотечные функции для динамического выделения и освобождения памяти:
#include <stdlib.h>
void *malloc (size_t size); - Выделяет указанное аргументом size число байтов
void *calloc(size_t nelem, size_t elsize); - выделяет память для указанного аргументом nelem числа объектов, размер которых elsize.
void free(void *ptr); - освобождает ранее выделенную память, указатель на которую передается через аргумент ptr.
8. Принципы построения ОС. Архитектура ОС.
ОС – это комплекс программ, обеспечивающий контроль за существованием, распределением и использованием ресурсов ВС.
Основные принципы построения ОС:
1) модульность
2) особого режима работы
3) виртуализации
4) мобильности (переносимости)
5) совместимости
6) генерируемости
7) открытости (расширяемости)
8) обеспечения безопасности вычислений
Архитектура ос
Ядро – модули, выполняющие основные внутрисистемные функции ОС и постоянно находящиеся в ОП. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них прикладную программную среду (API).
Вспомогательные модули – модули, выполняющие вспомогательные функции ОС: утилиты, системные обрабатывающие программы, программы предоставления пользователю дополнительных услуг, библиотеки различного назначения.
см. Лекцию №7 «Основные структуры ОС»
9. Управление процессами. Понятие процесса. Типы процессов. Жизненный цикл процесса.
10. Управление процессами. Понятие процесса. Контекст процесса.
«Программа» - упорядоченная последовательность действий в виде машинных команд.
«Задание» - совокупность программы, набора команд языка управления заданиями, необходимых для ее выполнения, и входных данных.
Процесс (или по-другому, задача) – абстракция, описывающая выполняющуюся программу.
В общем случае процесс можно определить как совокупность данных и машинных команд, исполняющуюся в рамках ВС и обладающую правами на владение некоторым набором ресурсов.
Эти права могут носить эксклюзивный характер, когда ресурс принадлежит только одному процессу, либо ресурс может одновременно принадлежать нескольким процессам – в этом случае ресурс называется разделяемым.
Выводы:
1) все, что выполняется в ВС (даже определенные части ОС), организовано как набор процессов;
2) на однопроцессорной компьютерной системе в каждый момент времени может исполняться только один процесс;
3) во всех современных ВС поддерживается режим мультипрограммирования, при котором на одном процессоре попеременно выполняется сразу несколько программ ( пока один процесс выполняется, остальные ждут своей очереди на получение процессора);
4) в МВС псевдопараллельная обработка нескольких процессоров достигается с помощью переключения процессора с одного процесса на другой.
Для каждого процесса определена структура данных, фиксирующая текущее состояние процесса. Такую структуру называют контекстом процесса. Она существует с момента создания процесса и до момента завершения его работы.
