- •Тема 8. Интерфейсы операционных систем
- •8.1.Интерфейс прикладного программирования
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1.Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1.Основные определения
- •8.1.1.Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1.1. Основные определения
- •8.1. Интерфейс прикладного программирования
- •8.1.2. Классификация системных вызовов
- •Основные функции управления синхронизацией
- •Основные функции управления виртуальной и физической памятью
- •Основные функции управления виртуальной и физической памятью
- •Функции механизма отображения файла в память
- •Основные функции для файлового ввода-вывода
- •Основные функции управления каталогами
- •Некоторые категории вызовов GUI
- •Основные функции управления защитой
- •Основные функции управления реестром
- •Основные функции управления консолью
- •8.1.Интерфейс прикладного программирования
- •8.1.3. Программирование системных вызовов
- •8.1.3.Программирование системных вызовов
- •8.1.3. Программирование системных вызовов
- •8.1.3. Программирование системных вызовов
- •8.1.3.Программирование системных вызовов
- •8.1.3.Программирование системных вызовов
- •8.1.Интерфейс прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •Способы реализации ИПП
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.1.4. Реализация интерфейса прикладного программирования
- •На рис. позицией 1 обозначен вызов обработчика ловушки и диспетчера базовых сервисов. Позиции
- •8.1.4. Реализация интерфейса прикладного программирования
- •8.2. Интерфейс пользователя
- •8.2.1.Типы интерфейсов
- •8.2.1. Типы интерфейсов
- •8.2.1.Типы интерфейсов
- •8.2.1. Типы интерфейсов
- •8.2.1. Типы интерфейсов
- •8.2.1.Типы интерфейсов
- •8.2.1. Типы интерфейсов
- •8.2.Интерфейс пользователя
- •8.2.2.Консоль
- •8.2.2. Консоль
- •8.2.2. Консоль
- •8.2.2. Консоль
- •8.2.2. Консоль
- •8.2.2.Консоль
- •8.2.Интерфейс пользователя
- •8.2.3. Графическая среда
- •8.2.3. Графическая среда
- •8.2.3. Графическая среда
- •8.2.3. Графическая среда
- •8.2.Интерфейс пользователя
- •8.2.Интерфейс пользователя
- •8.2.Интерфейс пользователя
- •8.2.5. Архитектура, управляемая событиями
- •8.2.5. Архитектура, управляемая событиями
- •8.2.5. Архитектура, управляемая событиями
- •8.2.5. Архитектура, управляемая событиями
8.1.1. Основные определения
Пример на языке С, демонстрирующий дублирование произвольного файла с помощью библиотечных функций read() и write().
#include <fcntl.h> #include <io.h> int main()
{
int fin, fout; //Дескрипторы файлов char buff [512];
int n; // Количество прочитанных байтов
//Открыть файлы для ввода и вывода. fin = open ("data.txt", O_RDONLY);
if (fin == -1) return 1;
fout = open ("newf.txt", O_CREAT \ O_TRUNC | O_WRONLY);
//Файлы открыты - можно копировать
while ((n = read(fin, buff, 512)) >0) write (fout, buff, n);
return 0;
}
Операционные системы |
11 |
8.1.1. Основные определения
Функции стандартной библиотеки языка С open(), read() и write() в Windows вызывают соответствующие им функции API Win32: CreateFile(), ReadFile() и WriteFile().
Операционные системы |
12 |
8.1.1. Основные определения
Решения предыдущей задачи, но с использованием только функций API
Win32.
#include <windows.h> |
|
int main() |
|
{ |
|
HANDLE fin, fout; |
//Дескрипторы файлов |
char buff [512]; |
|
DWORD n, ocnt; //Кол.прочитанных/записанных байтов BOOL s; //=0, если EOF
// Открыть файлы для ввода и вывода
fin = CreateFile ("data.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (fin==INVALID_HANDLE_VALUE) return 1;
fout = CreateFile ("newf.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
// Копировать файл
while ((s = ReadFile (fin, buff, 512, &n, NULL))>0 && n>0) WriteFile (fout, buff, n, &ocnt, NULL);
return 0; |
Операционные системы |
13 |
|
} |
|||
|
|
8.1.1. Основные определения
Программа, вызывающая функции API Win32, будет работать быстрее своего аналога с функциями библиотеки языка.
Однако эта программа непереносима на другие платформы, так как зависит от операционной системы Windows.
В то же время эта программа короче, так как не использует переходники в виде библиотечных функций языка.
Операционные системы |
14 |
8.1.1. Основные определения
Вызов системной функции без использования функции стандартной библиотеки.
Операционные системы |
15 |
8.1.1. Основные определения
Особенности ИПП, реализованного объектно-ориентированным языком программирования.
Функции, точнее - методы, библиотек классов позволяют разработать любое Windows приложение, причем эта разработка может вестись в режиме визуального проектирования.
Методы классов содержатся в DLL-библиотеках и, в отличие от функций библиотеки языка, в программу не включаются.
Многие из этих методов, как и функции библиотеки языка, рано или поздно обращаются к функциям ОС, так как управление ресурсами - это прерогатива операционной системы, и никакая прикладная программа не должна, минуя ОС, получать доступ к системным ресурсам.
Операционные системы |
16 |
8.1.1. Основные определения
Пример приложения на языке С#, выводящего окно с кнопкой Ok. При нажатии на кнопку выводится окно сообщения.
using System;
using System.Drawing;
using System.ComponentModel; using System Windows.Forms;
Операционные системы |
17 |
8.1.1. Основные определения
public class Form1: Form
{
private Button button1;
private Container components = null; public Form1()
{
button1 = new Button(); SuspendLayout();
// //button1
//
button1.Location = new Point (100,100); button1.TabIndex = 0;
button1.Name = "buttoni"; button1.Text = "buttoni";
button1.Click += new EventHandler ( button1_Click);
//
//Form1
AutoScaleBaseSize = new Size(5,13);
Операционные системы |
18 |
|
8.1.1. Основные определения |
|
ClientSize = new Size(292,262); |
|
|
Controls.Add ( button1); |
|
|
Name |
= "Form1"; |
|
Text |
= "Заголовок окна"; |
|
ResumeLayout (false); |
|
|
} |
|
|
protected override void Dispose( bool disposing ) |
|
|
{ |
|
|
if (disposing) |
|
|
if (components != null) |
|
|
components.Dispose(); |
|
|
base.Dispose( disposing ); |
|
|
} |
|
|
static void Main() |
|
|
{ |
|
|
Application.Run (new Formi ()); |
|
|
} |
|
|
private void button1_Click (object sender, EventArgs e) |
|
|
{ |
|
|
MessageBoxShow ("Нажата кнопка Ok"); |
19 |
|
8.1.1. Основные определения
Методы классов заменяют многие (но не все) функции API Win32. И таких методов предлагается еще больше, чем API-функций. Благодаря механизму перегрузки функций разработчики предлагают более простые и понятные методы.
Смысл перегрузки заключается в том, что в классе одновременно может существовать несколько методов с одним и тем же именем, но с параметрами, отличающимися по количеству и типам.
В функции API все параметры приходится задавать сразу, причем смысл отдельных из них непонятен, а другие в конкретных случаях просто не нужны.
Разработчики API для таких случаев изобретают дополнительные функции с новыми именами и параметрами, однако количество функций API Win32 и так уже перевалило за 2 тысячи.
20
