
- •1. Назначение, основные этапы развития операционных систем
- •2. Современные ос и их классификация
- •3. Основные принципы построения ос
- •4. Мультипрограммность и мультизадачность
- •1. Процесс, ресурс, свойства, классификация
- •2. Концепция виртуализации
- •3. Принципы построения интерфейсов операционных систем. Интерфейсы прикладного программирования
- •4. Концепция прерывания
- •1. Система управления процессами. Процессы, потоки.
- •2. Средства распределения ресурсов
- •3. Система распределения оперативной памяти. Контроль и распределение памяти в ms-dos
- •4. Алгоритм распределения памяти ms_dos
- •5. Блок управления памятью (mcb)
- •1. Файловая система. Концепция управления файлами
- •2. Текстовые файлы. Двоичный файлы
- •2. Создание файла и создание связи с файлом
- •3. Удаление файла и связи с файлом
- •4. Модификация файлов
- •5. Операции с файлами
- •6. Организация данных на внешних носителях. Внешняя память на дисках
- •7. Файловая система fat. Структура и расположение системной информации файловой системы.
- •8. Структура boot
- •9. Таблица расположения файлов fat
- •10. Структура корневого директория root
- •11. Структура директория
- •12. Алгоритм поиска расположения файлов на диске
- •13. Определение начального кластера расположения файла на диске
- •14. Расчет номеров цепочки кластеров расположения фала на диске
- •15. Методы доступа к информации на дисках
- •16. Изменение элементов таблиц fat и root при выполнении команд dos: copy, move, del, rename.
- •1. Общие сведения о механизме прерываний
- •1. Аппаратные прерывания
- •2. Программные прерывания
- •3. Таблица векторов прерываний
- •4. Перехват прерывания
- •5. Каскадная обработка прерывания
- •1. Загрузка и запуск программ ms dos
- •2. Заголовок *.Exe
- •3. Psp текущей задачи
- •4. Дочерние процессы и их запуск
- •5. Среда процесса, наследование среды
- •6. Системные управляющие блоки dos (таблица векторной связи)
- •7. Завершение процесса
- •1. Архитектура ос Windows. Функционирование и взаимосвязь модулей операционной системы
- •2. Понятие окна. Принципы организации графического пользовательского интерфейса.
- •3. Операции с объектом – окно
- •4. Событийное управление программами
- •5. Сообщение. Цикл обработки сообщений. Очередь сообщений.
- •6. Процедура обработки сообщений, ее формат и правила написания
- •7. Синхронные и асинхронные сообщения, их передача и обработка
- •8. Ввод данных с клавиатуры
- •9. Коды oem, ansi, ascii, виртуальные коды
- •10. Фокус ввода
- •11. Обработка сообщений мыши
- •12. Таймер. Программирование таймера
- •1. Графические устройства и их контекст
- •2. Атрибуты контекста устройств
- •3. Логическая и физическая система координат
- •4. Режимы преобразования координат
- •5. Объекты gdi. Создание и использование
- •6. Gdi и векторная модель рисования
- •7. Быстрая векторная графика
- •8. Шрифт. Классификация, параметры шрифта, установка в контексте устройства.
- •Структура logfont
- •9. Атрибуты контекста устройств, влияющие на вывод текста
- •10. Методы gdi вывода текста
- •11. Управление направлением, размером и расстоянием между символами
- •1. Создание процесса
- •2. Описатель процесса
- •3. Командная строка процесса
- •4. Среда процесса.
- •5. Наследование объектов ядра дочерним процессом.
- •6. Класс процесса.
- •7. Текущий директорий процесса.
- •8. Получение инф-ции о процессе
- •9. Окончание процесса
6. Класс процесса.
Соответственно все процессы разделены на классы, каждый из которых управляется в соответствии со своими правилами, например имеются классы процессов разделения времени и реального времени, а так же класс системных процессов.!
В современном UNIX используются три класса планируемых процессов:
• Процессы разделения времени;
• Системные процессы;
• Процессы реального времени (с фиксированным приоритетом).
7. Текущий директорий процесса.
Поток может получать и устанавливать текущие каталог и диск для процесса с помощью двух функций:
DWORD GetCurrentDirectory( DWORD cchCurDir, PTSTR pszCurDir);
BOOL SetCurrentDirectory(PCTSTR pszCurDir);
Текущие каталоги для процесса
Система отслеживает текущие диск и каталог для процесса, но не текущие каталоги на каждом диске. Однако в операционной системе предусмотрен кое-какой сервис для манипуляций с текущими каталогами на разных дисках. Он реализуется через переменные окружения конкретного процесса. Например:
=C:=C:\Utility\Bin
=D:=D:\Program Files
Эти переменные указывают, что текущим каталогом на диске С является \Utility\Bin, а на диске D — \Program Files.
Если Вы вызываете функцию, передавая ей путь с именем диска, отличного от текущего, система сначала просматривает блок переменных окружения и пытается найти переменную, связанную с именем указанного диска. Если таковая есть, система выбирает текущий каталог на заданном диске в соответствии с ее значением, нет — текущим каталогом считается корневой.
Если родительский процесс создает блок переменных окружения и хочет передать его дочернему процессу, тот не наследует текущие каталоги родительского процесса автоматически. Вместо этого у дочернего процесса текущими на всех дисках становятся корневые каталоги. Чтобы дочерний процесс унаследовал текущие каталоги родительского, последний должен создать соответствующие переменные окружения (и сделать это до порождения другого процесса). Родительский процесс может узнать, какие каталоги являются текущими, вызвав GetFullPathName:
DWORD GetFullPathName( PCTSTR pszFile, DWORD cchPath,
PTSTR pszPath, PTSTR *ppszFilePart);
Например, чтобы получить текущий каталог на диске С, функцию вызывают так:
TCHAR szCurDir[MAX_PATH];
DWORD GetFullPathName(TEXT("C:"), MAX_PATH, szCurDir, NULL);
8. Получение инф-ции о процессе
Для снимка процесса используется функция
CreateToolhelp32SnapShot(
DWORD dwflags,
DWORD th32ProcessID
)
Для получения инфы о процессе используют Process32First, Process32Next
Указатель на
BOOL WINAPI Process32First(
HANDLE hSnapshot,
LPPROCESSENTRY32 lppe
);
Указатель на PROCESSENTRY32 структуру. Она содержит информацию о процессе, такую как имя исполняемого файла, идентификатор процесса, и идентификатор родителя данного процесса.
9. Окончание процесса
Независимо от того, как именно Вы создали объект ядра, по окончании работы с ним его нужно закрьть вызовом CloseHandle
BOOL CloseHandle(HANDLE hobj);[1]
Эта функция сначала проверяет таблицу описателей, принадлежащую вызывающему процессу, чтобы убедиться, идентифицирует ли переданный ей индекс (описатель) объект, к которому этот процесс действительно имеет доступ. Если переданный индекс правилен, система получает адрес структуры данных объекта и уменьшает в этой структуре счетчик числа пользователей; как только счетчик обнулится, ядро удалит объект из памяти.