
Операционные системы
.docxОперационные системы
Шацков Владимир Валентинович
Операционные системы и сети. Обычно читают на 3м курсе, но его сместили, т.к. он является связующим звеном между Архитектурой ЭВМ и программированием.
№1 Лекция 07.09.15
На практике
Прикладная программа во время своего выполнения часто требует некоторые сервисы от ОС (закрыть, открыть окно, создать /изменить файл, вернуть получить кусок из динамической памяти ит.д.) которые осуществляются с помощью системных вызовов, осуществляемой с помощью Win32 API (Application Program Interface – библиотека модулей, обеспечивающая основной сервис, предоставляемый программе), реализован в нескольких dll (kernel 32.dll, user32.dll) (dynamic link library, static link library).
Для тех, кто это не знает, описываются этапы создания exe файла.
Обычно программа описывается на некотором формализованном языке программирования, являющегося набором символов, который не может быть выполнен на компьютере sub a Dim a as integer a = a+1 end sub Команды для компьютера можно представить следующим образом. Затем их обрабатывает процессор.
Чтобы получить из исходного кода машинный, нужно использовать транслятор, который берет команды и преобразует их в объектный код (это коды команд, но непосредственно его выполнить нельзя – есть ссылки подпрограммы, которые выполнить нельзя, например b=sin(a), которого нет). Модули dll подключаются на этапе комплияции программы.
Если какой-то программе требуется dll, она загружается в память. Когда она потребуется еще одной программе, она по прежнему там остается. Когда она никому не нужна, она убирается из памяти.
Мы будем пользоваться dll kernel32.dll предоставляющей сервис win32 api прикладным программам.
PE-файлы Portable Executable. У них достаточно сложная структура, они бывают разных типов.
Сегодня мы воспользуемся классической библиотекой dll shell32.dll
Еще есть activeX dll, net dll
Как бы там не было, exe и dll имеют общую структуру, и отличаются, фактически, одним битом.
Сначала идут заголовки, Затем секция экспорта (те модули, которые dll предоставляет другим программам) Секция импорта Секции
Транслятор комплиятора берет код и переводит в объектный код всю программу сразу.
Транслятор интерпретатора берет каждую строчку кода, выполняет ее и выводит результат.
Shell – команда VBA, которая запускает файл
Не нужно указывать полный путь, т.к. калькулятор указан в переменные окружения
Private Sub CBOK_Click()
Shell TextBox1.Text
End Sub
Private Sub CBOpen_Click()
Dim Fd As FileDialog
Set Fd = Application.FileDialog(msoFileDialogOpen)
Fd.Filters.Clear
Fd.Filters.Add "Exe-файлы", "*.exe"
Fd.Filters.Add "Все файлы", "*.*"
Fd.Show
If Fd.SelectedItems.Count > 0 Then
TextBox1.Text = Fd.SelectedItems(1)
End If
End Sub
Для того чтобы открывать не exe файлы, а ассоциированные с ними документы, таблицы, ит.д. воспользуем ShellExecuteA
В модуль добавим Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As LongPtr, ByVal ep1 As String, ByVal epF As String, ByVal epP As String, ByVal epD As String, ByVal nS As Long) As Long
Private Sub CBOK_Click()
ShellExecute 0, "", TextBox1.Text, "", "", 1
End Sub
Private Sub CBOpen_Click()
Dim Fd As FileDialog
Set Fd = Application.FileDialog(msoFileDialogOpen)
Fd.Filters.Clear
Fd.Filters.Add "Exe-файлы", "*.exe"
Fd.Filters.Add "Все файлы", "*.*"
Fd.Filters.Add "Word", "*.doc*"
Fd.Filters.Add "PDF", "*.pdf"
Fd.Show
If Fd.SelectedItems.Count > 0 Then
TextBox1.Text = Fd.SelectedItems(1)
CBOK_Click
End If
End Sub
Visual Basic – один из немногих языков, где значения в функцию передаются по ссылке.
Рассмотрим пример.
Sub proceed1(b As Integer)
b = b + 1
End Sub
Sub test()
Dim x As Integer
x = 3
proceed1 x
Debug.Print "x=", x ‘Получим 4
End Sub
В окне View->Immadate View мы увидем 4, если перед b допишем byval, то получим 3.
Смысл: существует 2 типа переменных, по значению, и по ссылке.
Если переменная передается по значению, то при изменении ее в функции, в вызывающем модуле она не изменится. Если по ссылке, то изменится.
ЗАЧЕТ ЭКЗАМЕН… Неизвестно