Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену Операционные Системы 2012.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
455.64 Кб
Скачать

Ответы к экзамену Операционные Системы 2012

1. Операционные системы, основные понятия и определения. История развития операционных систем.

2. Операционные системы, определение и функции. Классификация операционных систем.

Операционная система (ОС) – комплекс программ, основной функцией которых является контроль за использованием и разделением ресурсов.

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

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

Оболочка – часть ОС, обеспечивающая интерфейс пользователя;

Ядро – часть ОС, обеспечивающая аппаратный и программно-аппаратный интерфейсы.

В современных ОС интерфейс пользователя – графический.

Операционная система как виртуальная машина

  • Интерфейс между пользователем и компьютером.

  • Скрывает особенности устройств внешней памяти

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

  • Создается иллюзия неограниченного размера оперативной памяти и числа процессоров

Операционная система как менеджер ресурсов

  • Буферизация на диске данных, предназначенных для печати, и организации очереди на печать.

  • Управление ресурсами и их защита для многопользовательских компьютеров

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

Операционная система как защитник пользователей и программ

Проблема обеспечения безопасной совместной работы нескольких пользователей

  • Никто не должен удалять или повреждать чужие файлы

  • Программы одних пользователей не должны произвольно вмешиваться в работу программ других пользователей

  • Должны пересекаться попытки несанкционированного использования вычислительной системы

Операционная система как постоянно функционирующее ядро

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

  • Во многих операционных системах постоянно работает на компьютере лишь ее часть – ядро ОС

3. Язык Си-средство разработки ос. Базовые конструкции. Массивы и указатели.

Основная программа всегда называется именем main (Си различает большие и маленькие буквы).

Целочисленные переменные int x = 0; С десятичной точкой float x = 0.0; символ char x = ‘c;

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

Описание одномерного массива: <тип> <имя> [<кол-во>] [инициализатор]

Примеры: char a[15] /*15 символов*/ int MAS[3][2]={{1,2},{3,4},{5,6}};

Строка символов в Си – массив символов, заканчивающийся нулевым байтом «\0».

Указателем является переменная, значение которой есть адрес некоторой области памяти. Объявление указателя: <тип>*<имя>

Например: char *q, c, *p; - где с – переменная символьного типа, а q и p – указатели на символ.

Унарная операция & - это операция взятия адреса, а унарная операция * - это операция косвенной адресации (раскрытие ссылки).

В языке Си можно также определить указатель на неопределенный тип: void *vp;

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

Указатели используются чаще всего при работе с массивами. Имя массива есть константный указатель, содержащий адрес нулевого элемента: double m[10], *dp;

Присвоить указателю dp адрес начала массива m, можно следующим образом: dp=m; или dp=&m[0];

4. Язык Си-средство разработки ос. Структура программы. Препроцессор.

Программа состоит из функций, описаний и директив препроцессора.

Пример структуры программного файла:

Директивы препроцессора

Описания

Функция main

{ операторы }

Функция1

{ операторы }

ФункцияN

{операторы}

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

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

Включение файлов: На место директивы #include файл препроцессор подставляет содержимое указанного в ней файла.

Макроподстановка: #define имя подставляемый_текст . От места появляения #define и до конца файла, вместо имени подставляется заданный текст.

Примеры: #include <stdio.h> /*подключение файла*/ #define n 100 /*макроподстановка */

5. Язык Си-средство разработки ос. Организация ввода-вывода в Си, форматированный ввод-вывод.

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

Функции ввода-вывода делятся на два класса:

  • Функции системного ввода-вывода,

  • Функции стандартного (файлового) ввода-вывода.

Функции системного ввода-вывода: fopen, fclose, fread, fwrite.

Функции стандартного ввода-вывода:

Посимвольный (getchar, putchar, getc, putc, ungetc, fgetc, fputc);

Построчный ( gets, puts, fgets, fputs);

Форматированный (printf, scanf, frpintf, fscanf, sscanf).

Функции ввода-вывода объявлены в файле stdio.h

Ввод-вывод из стандартных файлов: При запуске Си-программы ОС всегда открывает 3 стандартных файла:

  • Входной (stdin) – связан с клавиатурой

  • Выходной (stdout) – связан с монитором

  • Файл ошибок (stderr) – связан с монитором

EOF – End Of File (конец файла).

Спецификации функций ввода-вывода:

1) Чтение символа: а) из stdin int getchar(void) б) из потока f: int getc (FILE *f); int fgetc (FILE *f) – возращают прочитанный символ в форме int. Если невозможно – знач. EOF.

2) Чтение строки: а) из stdin char *gets(char *s); - читает символы из stdin до \n (не включается)

Б) из потока f char *fgets(char *s, int n, FILE *f) – читает не более n-1 из f в строку s. Чтение прекращается при появлении \n или EOF.

3) Вывод символа: а) на stdout int putchar (int ch); б) в поток f int putc(int ch, FILE *f); int fputc (int ch, FILE *f); - выводят символ ch, возвращают выеденный символ, при ошибке – EOF.

4) Вывод строки: а) на stdout: int puts(char *s); б) в поток f: int fputs (char *s, FILE *f).

Форматированный ввод-вывод:

1) Чтение: a) из stdin: int scanf(const char *format, p1,p2,…); б) из потока f: int fscanf(FILE *f, const char *format, p1,p2,….); - функции читают текстовые данные из потока, преобразуют их в соответствии со спецификациями, содержащимися в строке format, и присваивают по порядку аргументам, каждый из которых должен быть указателем.

2) Вывод: а) в stdout: int printf(const char *format, p1,p2,…); б) в поток f: int fprintf(FILE *f, const char *format, p1,p2,…) – Функции преобразуют аргументы p1,p2,… в текстовый вид в соответствии с форматом и выводят в поток.

Основные преобразования printf:

Литера

Тип аргумента; вид печати

d,i

int; десятичное целое

o

int; беззнаковое восьмеричное целое

X,x

int; беззнаковое шестнадцатиричное целое

u

int; беззнаковое десятичное целое

c

int; символ

s

char *; печатает строку символов

f

double; число в форме с фикс. Точкой

E,e

double; число в форме с плавающей точкой

G,g

double; использует %e (%E) или %f.

p

void *; указатель (представление зависит от реализации)

%

аргумент не преобразуется; печатается знак %

Основные преобразования scanf аналогичны преобразованиям printf

3) ввод-вывод из внешних файлов

Любой файл предварительно нужно открыть: FILE* fopen(char* name, char* mode);

Закрыть файл int fclose (FILE*);

6. Язык Си-средство разработки ОС. Функции. Передача параметров. Аргументы командной строки.

Два способа описания и определения функций, «новая» и «старая» нотации:

Новая:

[<тип результата>]<имя функции>([список параметров])

{[декларации]

[операторы]

}

Старая:

[<тип результата>]<имя функции>([список имен парам.])

[описание параметров]

{ [декларации]

[операторы]

}

Функция может возвращать одно значение, тип которого указывается в заголовке, а само значение задается выражением в операторе возврата return <выражение>;

Функция может не возвращать значение, тогда тип результата void.

В начале программного файла, для всех функций, кроме main, задаются прототипы. Синтаксически прототип повторяет заголовок функции.

В программах переменные обладают следующими качествами:

  • Видимость переменной (область видимости);

  • Существование переменной (область существования).

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

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

С точки зрения видимости выделим следующие группы переменных:

  • Видимые в пределах блоков

  • Видимые в пределах файла

  • Видимые в пределах программы

Указание static, примененное к переменной или функции, ограничивает область их видимости концом файла.

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

С точки зрения существования выделим две группы переменных:

  • Статические переменные;

  • Автоматические переменные

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

Автоматическими переменными являются все переменные определенные внутри блока и не являющиеся статическими. Автоматические переменные существуют на протяжении работы блока, в котором они определены.

Аргументы командной строки

Запускаемой программе, можно передать аргументы: main(int argc, char *argv[])

Где, argc – кол-во аргументов командной строки, argv – адрес массива указателей на строки-аргументы.