МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 1
На тему: “ Об’єкти ядра Windows ”
З дисципліни : " Операційн системи"
Лектор:
Доц. каф. ПЗ
Яковина В.С.
Львів – 2008
Мета роботи: Ознайомитися із структурою ОС на прикладі Windows NT5 (ядро 5.X), навчитися працювати із абстрактними об’єктами ОС. Зокрема із HANDLE для створення програмного посилання на обєкт ОС.
Теоретичні відомості
Об'єкти ядра використовуються системою і призначені для користувача для управління безліччю самих різних ресурсів: процесами, потоками, файлами. Windows дозволяє створювати і оперувати з декількома типами таких об'єктів паралельно.
Kernel object
Об’єкт ядра
Access token
Маркер доступу
Change notification
Повідомлення про зміни на диску
I/O completion ports
Порт завершення введення-виводу
Event
Подія
File
Файл
File mapping
Проекція файлу
Heap
Купа
Job
Завдання
Mailslot
Поштовий слот
Module
Динамічно – підвантажуваний модуль (DLL)
Mutex
Мютекс
Pipe
Канал
Process
Процес
Semaphore
Семафор
Socket
Сокет
Thread
Потік
Timer
Очікуваний таймер
Для виконання даної лабораторної роботи було використана функція: CreateFile
Опис функції:
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
№
Назва
Опис
1.
lpFileName
Шлях до файлу(або ресурсу: портів, сокетів). Стрічка обмежена препроцесорною зміною MAX_PATH.
2.
dwDesiredAccess
Режим відкривання файлу. Можливі стани:
GENERIC_EXECUTE
GENERIC_READ
GENERIC_WRITE
3.
dwShareMode
Дозвіл на роботу іншим хендлам, дане правило відноситься як до інших хендлів цієї ж програми так і інших. Можливі стани:
FILE_SHARE_READ
FILE_SHARE_WRITE
NULL
4.
lpSecurityAttributes
Атрибут захисту. Для Windows Mobile і Windows9X завжди приймає значення: NULL.
5.
dwCreationDisposition
Параметр який вказує які дії потрібно зробити при існуванні або відсутності файлу. Можливі стани:
CREATE_ALWAYS
OPEN_EXISTING
CREATE_NEW
OPEN_ALWAYS
TRUNCATE_EXISTING
6.
dwFlagsAndAttributes
Проставляє необхідні атрибути даному файлу(тобто: системний, скритий файл, архівований, тільки для читання). Можливі стани:
FILE_ATTRIBUTE_ARCHIVE
FILE_ATTRIBUTE_COMPRESSED
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_NORMAL
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_ROMMODULE
FILE_ATTRIBUTE_SYSTEM
FILE_ATTRIBUTE_TEMPORARY
7.
hTemplateFile
Файл шаблону. Основному приймає значення NULL.
Індивідуальне завдання
Написати програму переписування одного вмісту текстового файлу у інший, використовуючи HADLE для доступу до файлів. Файли повинні знаходитися у в корені системного диску (c:\).
Код програми
Назва файлу: Lab01.cpp
// Lab01.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std;
const int BUFFSIZE = 1024;
int _tmain(int argc, _TCHAR* argv[]) {
DWORD nIn, nOut;
HANDLE hIn = CreateFile( _T("c:\\begin.log"), GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE hOut = CreateFile( _T("c:\\end.log"), GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
char buff[BUFFSIZE];
while( ReadFile( hIn, buff, BUFFSIZE, &nIn, NULL ) && nIn > 0 ) {
cout << buff;
WriteFile( hOut, buff, nIn, &nOut, NULL );
if( nIn != nOut ) {
cerr << "Fatal write error: " << GetLastError()<< std::endl;
exit(1);
}
}
CloseHandle( hIn );
CloseHandle( hOut );
return 0;
}
Результат виконання
Результатом виконання є перенесення вмісту одного файлу у інший. Також під час виконання весь вміст файлу виводиться на екран. Дана програма не враховує спец – символів, тому дана програма нестабільно буде працювати із бінарними файлами.
На рис. 2. представлено результати виконання програми.
Рис. 2. Результат виконання програми
Висновок
На лабораторній роботі було розглянуто та досліджено об’єкти ядра ОС, ознайомились із підходами програмування на рівні ядра і порівняли із стандартним бібліотечним підходом написання програм. Порівняли переваги і недоліки використання об’єктів ядра і використання вбудованих бібліотек.
Також було виконано індивідуальне завдання, використання один із об’єктів ядра, зокрема об’єкт File для закріплення практичною роботою здобутих знань.