Міністерство Освіти І НАУКИ України
Національний університет "Львівська політехніка"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 1
На тему: “ Об’єкти ядра Windows ”
З дисципліни : " Операційн системи"
Виконав:
ст. гр. ПІ -2
Львів – 2008
Мета роботи: Ознайомитися із структурою ОС на прикладі Windows NT5 (ядро 5.X), навчитися працювати із абстрактними об’єктами ОС. Зокрема із HANDLE для створення програмного посилання на обєкт ОС.
Теоретичні відомості
Об'єкти ядра використовуються системою і призначені для користувача для управління безліччю самих різних ресурсів: процесами, потоками, файлами. Windows дозволяє створювати і оперувати з декількома типами таких об'єктів паралельно.
Для виконання даної лабораторної роботи було використана функція: CreateFile
Опис функції:
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
Індивідуальне завдання
Написати програму переписування одного вмісту текстового файлу у інший, використовуючи 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 для закріплення практичною роботою здобутих знань.