- •Билет № 3
- •Базовые конструкции структурного программирования
- •Процессы в Windows
- •Билет № 6
- •Объектно-ориентированное программирование
- •Критические секции
- •Void InitializeCriticalSection(lpcritical_section lpCriticalSection); // вход в критическую секцию
- •Задача. Произвести инверсию (перестановка наоборот) массива
- •Билет № 9
- •Простое наследование
- •События
- •Задача. Отсортировать массив методом выбора минимального элемента.
- •Билет № 12
- •Абстрактные классы
- •Void Print(void) /* аспект виртуальной функции*/
- •Void Print(void) /* аспект виртуальной функции*/
- •Исключения и их обработчики
- •Задача. Ввести с клавиатуры два вещественных числа и определить наибольшее из них.
- •Билет № 15
- •Назначение операционной системы
- •Резервирование, распределение и освобождение виртуальной памяти
- •Int *a; // указатель на массив целых чисел
- •Задача. Ввести целое число и определить, сколько в нем цифр.
Билет № 15
Назначение операционной системы
Операционная система (ОС) - это системное программное обеспечение, которое управляет компьютерными аппаратными и программными ресурсами и предоставляет общие услуги для компьютерных программ. Все компьютерные программы, за исключением прошивки, требуют работы операционной системы.
Операционные системы с разделением времени планируют задачи для эффективного использования системы и могут также включать программное обеспечение учета для распределения затрат времени процессора, массового хранения, печати и других ресурсов.
Для аппаратных функций, таких как ввод и вывод и распределение памяти, операционная система выступает в качестве посредника между программами и компьютерным оборудованием, хотя код приложения обычно выполняется непосредственно аппаратным обеспечением и часто делает системные вызовы OS или прерывается им. Операционные системы находятся на многих устройствах, которые содержат компьютер - от сотовых телефонов и игровых консолей до веб-серверов и суперкомпьютеров.
Доминирующей настольной операционной системой является Microsoft Windows с долей рынка около 83,3%. macOS от Apple Inc. занимает второе место (11,2%), а разновидности Linux - на третьем месте (1,55%). [3] В секторе мобильных (смартфонов и планшетов) по данным третьего квартала 2016 года Android от Google доминирует с 87,5%, а темпы роста - 10,3% в год, за которым следует iOS Apple с 12,1% и в год снижение рынка доля в 5,2 процента, тогда как другие операционные системы составляют всего 0,3 процента [4]. Распределения Linux являются доминирующими в серверных и суперкомпьютерных секторах. Другие специализированные классы операционных систем, такие как встроенные и системы реального времени, существуют для многих приложений.
Резервирование, распределение и освобождение виртуальной памяти
Для резервирования или распределения области виртуальной памяти процесс должен вызвать функцию virtuaiAlloc, которая имеет следующий прототип:
LPVOID VirtuaiAlloc(
LPVOID IpAddress, // область для распределения или резервирования SIZE_T dwSize, // размер области
DWORD flAllocationType, // тип распределения DWORD flProtect // тип защиты доступа
) ;
В случае успешного завершения эта функция возвращает адрес виртуальной памяти, распределенной или зарезервированной процессом, а в случае неудачи — null. При этом отметим такую деталь, если распределение виртуальной памяти функцией virtuaiAlloc завершается успешно, то выделенная память автоматически инициализируется нулями.
int main()
{
Int *a; // указатель на массив целых чисел
const int size =1000; // размерность массива
// распределяем виртуальную память а = (int*)VirtualAlloc(
NULL,
size * sizeof(int),
MEM_COMMIT,
PAGE_READWRIТЕ);
#include <windows.h>
#include <iostream.h>
if(!а)
{
cout « "Virtual allocation failed." « endl; return GetLastError();
}
cout « "Virtual memory address: " « a « endl;
// освобождаем виртуальную память if (!VirtualFree(a, 0, MEM_RELEASE))
{
cout << "Memory release failed." « endl; return GetLastError();
}
return 0;}
