
- •Оглавление
- •1 Простейшее Win32 приложение
- •2 Функция WinMain
- •3 Оконный класс
- •4 Стили класса, стили окна
- •5 Создание экземпляра оконного класса
- •6 Динамические изменения свойств оконного класса
- •7 Обработка сообщений
- •8 Программирование клавиатуры
- •9 Коды oem, ansii, asci, виртуальные коды клавиш
- •10 Символьные сообщения
- •11 Обработка сообщений от мыши
- •12 Программирование таймера
- •13 Диалоговые окна
- •14 Структура шаблона диалога
- •14(А) Ресурсы диалога
- •15 Функции создания диалога
- •16 Взаимодействие между элементами управления
- •17 Сообщения, SendMessage, SendDlgItemMessage
- •18 Обработка сообщений от элементов диалога
- •19 Элемент «Слайдер» (Румянцев - Азбука программирования в Win32 api, c.148)
- •20 Элемент ProgressBar (Румянцев - Азбука программирования в Win32 api, c.156)
- •21 Bios (общие сведения)
- •22 Файлы (общие сведения)
- •23 Создание файла (Win32 api)
- •24 Операции с файлом (Win32 api)
- •25 Организация файлов
- •26 Файловые системы (общие сведения)
- •Создание файла.
- •Удаление файла.
- •28 Структура логического диска под fat12 (wfat)
- •29 Каталоги в fat12
- •30 Алгоритм определения расположения файлов на диске
- •31 Ф.С. Fat32 (отличительные особенности)
- •32 Изменение элементов системных объектов при выполнении copy
- •33 Ntfs (общие сведения)
- •34 Запись файла в mft
- •35 Метафайлы
- •36 Атрибуты записи файла
- •37 Изменение системных данных при выполнении copy
- •38 Изменение системных данных при выполнении del
- •39 Изменение системных данных при выполнении move
- •40 Процессы. Потоки. Общие сведения
- •41 Модель процесса
- •42 Контекст процесса
- •43 Дескриптор процесса
- •44 Создание процесса (общие сведения)
- •45 Окончание процесса (общие сведения)
- •46 Состояния процесса
- •47 Уровни планирования процессов
- •48 Диспетчеризация процессов
- •49 Класс приоритета процесса
- •50 Создание процесса (Win32 api)
- •51 Win32 Api. Управление процессами
- •52 Win32 Api. Окончание процесса
- •53 Среда процесса
- •54 Командная строка процесса
- •55 Наследование дочерними процессами ресурсов родителя
- •56 Список процессов
- •57 Время выполнения процесса
37 Изменение системных данных при выполнении copy
При копировании файла из каталога X в каталог Y создаётся новая файловая запись в MFT, описывающая файл в каталоге Y, и сохраняется прежняя, описывающая файл в каталоге X. Также делается запись в файле, описывающем каталог Y, и сохраняется запись в файле, описывающем каталог X. У файлов с нерезидентным атрибутом DATA данные копируются в новую область диска. Т. о. для каждого файла на диске существуют свои данные, т. е. файлу из каталога X соответствуют свои данные, а файлу из каталога Y – свои. Это подтверждается разными значениями в списках отрезков записей в MFT файлов из каталогов X и Y.
38 Изменение системных данных при выполнении del
При удалении файла в соответствующей ему файловой записи по смещению 16h устанавливается значение 00h. Также удаляется запись об этом файле в файле, описывающем каталог, из которого происходит удаление. Если удаляемый файл имеет нерезидентный атрибут DATA, то данные этого файла, расположенные вне MFT, сразу не удаляются. Поверх них будут записаны данные когда-либо позже.
39 Изменение системных данных при выполнении move
При перемещении файла из каталога X в каталог Y не создаётся новая файловая запись в MFT, а используется прежняя. Также делается запись в файле, описывающем каталог Y, и удаляется запись в файле, описывающем каталог X. Если удаляемый файл имеет нерезидентный атрибут DATA, то данные этого файла, расположенные вне MFT, не перемещаются. . Это подтверждается одинаковыми значениями в списках отрезков записей в MFT файлов из каталогов X и Y.
40 Процессы. Потоки. Общие сведения
Процесс – программа, находящаяся в режиме выполнения. Процесс является объектом ядра ОС. С каждым процессом связано его адресное пространство, в котором находится код и данные EXE-приложения, а также код и данные DLL-библиотек, если это требуется. Для Win32 для каждого процесса отводится адресное пространство размером 4 ГБ. Адресное пространство для каждого процесса является изолированным.
С каждым процессом связан набор регистров. Во многих ОС информация о процессе хранится в специальных системных таблицах, доступ к которым осуществляется через описатели процесса, т.е. с использованием соответствующих API-функций.
В Win32 сам по себе процесс является инертным и для его выполнения в процессе необходимо создать поток. Потоки отвечают за выполнение кода, содержащегося в адресном пространстве процесса. Процесс может иметь несколько потоков, каждому из которых ОС отводит определенное процессорное время, называемое квантом.
41 Модель процесса
Процесс обычно определяют как экземпляр выполняемой программы, и он состоит из двух компонентов:
объекта ядра, через который операционная система управляет процессом. Там же хранится статистическая информация о процессе;
адресного пространства, в котором содержится код и данные всех EXE- и DLL модулей. Именно в нем находятся области памяти, динамически распределяемой для стеков потоков и других нужд.
Процессы инертны. Чтобы процесс что-нибудь выполнил, в нем нужно создать поток. Именно потоки отвечаю за исполнение кода, содержащегося в адресном пространстве процесса. В принципе, один процесс может владеть несколькими потоками, и тогда они "одновременно" исполняют код в адресном пространстве процесса.
Для этого каждый поток должен располагать собственным набором регистров процессора и собственным стеком. В каждом процессе есть минимум один поток. Если бы у процесса не было ни одного потока, ему нечего было бы делать на этом свете, и система автоматически уничтожила бы его вместе с выделенным ему адресным пространством.
Чтобы все эти потоки работали, операционная система отводит каждому из них определенное процессорное время. Выделяя потокам отрезки времени (называемые квантами) по принципу карусели, она создает тем самым иллюзию одновременного выполнения потоков. Если в машине установлено более одного процессора, алгоритм работы операционной системы значительно усложняется (в этом случае система стремится сбалансировать нагрузку между процессорами).
При создании процесса первый (точнее, первичный) поток создается системой автоматически. Далее этот поток может породить другие потоки, те в свою очередь — новые и т.д.