Главная страница
Навигация по странице:

  • DWORD dwControlKeyState

  • MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;

  • Шпаргалка по ОС. 1. Понятие операционной системы, ее отношение к аппаратуре и программному обеспечению


    Скачать 123.67 Kb.
    Название1. Понятие операционной системы, ее отношение к аппаратуре и программному обеспечению
    АнкорШпаргалка по ОС
    Дата26.05.2021
    Размер123.67 Kb.
    Формат файлаdocx
    Имя файлаOTVETY_PO_BILETAM.docx
    ТипДокументы
    #210000
    страница2 из 6
    1   2   3   4   5   6




    7. Переназначение стандартных устройств.

    При вызове программы, если пользователь хочет передавать данные вместо клавиатуры из файла с именем имяфайлаввода, то при вызове программы в командной строке пишут имяпрограммы<имяфайлаввода. При желании получить вывод вместо экрана в некоторый файл имяфайлавывода, достаточно задать командную строку в виде имяпрограммы>имяфайлавывода

    Приказ, переназначить ввод с клавиатуры на файл <имяфайлаввода, а вывод на файл имяфайлавывода, запишется в командной строке текстом

    имяпрограммы <имяфайлаввода >имяфайлавывода. Для переадресации ошибки в файл мы пишем имяпрограммы 2>имя_файла. Если мы хотим сохранить содержимое файла, то указываем >> (т.е. в файле содержимое будет дописываться в конец). Например: program<1.txt >>2.txt. В данном примере входные данные программы читаются из файла 1.txt и записываются в текстовый файл 2.txt.

    Вместо стандартных устройств ввода-вывода используетсятся файл.

    Командная строка: primer.exe (<стандартный ввод из файла, >стандартный вывод в файл) имя файла

    Запустить с переадресацией стандартного вывода: primer.exe <файл_откуда_переносить_данные

    >файл_куда_переносить_данные. Если вместо файла nul, то вывода не будет.

    8. Особенности работы с файлами в многопрограммной системе. (БИЛЕТ 6) Windows Функция CreateFile имеет 7 аргументов: HANDLE CreateFile(LPCSTR pFileName, DWORD DesiredAccess, DWORD ShareMode, LPSECURITY_ATTRIBUTES pSecurityAttributes, DWORD CreationDisposition, DWORD FlagsAndAttributes, HANDLE hTemplateFile) pFileName – имя файла,. DesiredAccess – код доступа. Принимает значения GENERIC_ READ и GENERIC_WRITE. Могут быть использованы совместно, ShareMode – совместный доступ. Принимает значения FILE_SHARE_READ, FILE_SHARE_ WRITE. Могут быть использованы совместно. SecurityAttributes – атрибуты безопасности. Обычно необходимо чтобы было знчение NULL, CreationDisposition – диспозиция. Принимает значения CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS. Нельзя использовать совместно, Unix int open(char* filename, int access_mode, mode_t permission). Функция возвращает в случае удачного выполнения хэндл открытого файла, filename - имя открываемого файла. access_mode - режим доступа к файлу. Принимает значения O_RDONLY, O_WRONLY, O_RDWR с модификаторами: O_APPEND, O_CREAT, O_EXCL, O_TRUNC. permission - необходим, когда в access_mode установлено O_CREAT (файл создается). Обычно 0777. для открытия файла служит ф-я int open(char* filename, int access_mode, mode_t permission),где 3 аргумент необходим в том случае, когда в аргументе 2 установлен флаг O_CREATE, т.е. файл создается. 3 аргумент задает права доступа к файлу. Обычно в качестве прав доступа создаваемому файлу задают восьмеричное значение 0600, что определяет права создателю файла на чтение и запись, а для всех остальных не разрешается никакой доступ к этому файлу. (Правая восьмеричная цифра – код прав для всех остальных, следующая цифра – код прав для членов той же группы, третья справа восьмеричная цифра – код прав для владельца, которым автоматически становится создатель файла. Отдельные биты в восьмеричной цифре кода доступа определяют: старший право записи, следующий бит – право чтения, а бит, отвечающий числу 1, задает право выполнения.)

    9. Многопользовательская блокировка файлов.(1)

    Для каждого файла существуют 3 вида права, право на чтение, право на запись и право на выполнение. Использование функций открытия, закрытия не обеспечивает полных возможностей использования файлов. Для управления доступом к отрытым файлам в UNIX используется ф-я int fcntl(int handle, int cmd, struct flock *ldata). Cmd-задает операции, которые необходимо выполнить над файлом. У Cmd есть 2 аргумента(F_SETLK, F_SETLKW). F_SETLK – задает попытку применить/отменить блокировку к ф. При неудачной попытке возвращает код -1. F_SETLKW-приказывает применить блокировку и приостан.работу,если блокировка уже наложена др.процессором.

    3 аргумент является указателем на структуру.В этой структуре с

    типом flock присутствуют поля l_type, l_whence, l_start, l_len. l_type тип блокировки и может задаваться константами

    такими как «блокировку по чтению, «блокировку по записи для текущего процесса». «снятие блокировки». Поле l_start дает «начальное смещение для блокировки», а поле l_whence – интерпретировать это смещение. При использовании константы SEEK_SET смещение отсчитывается от начала файла, при константе SEEK_CUR – от текущей позиции в файле, а при SEEK_END – отсчет смещения ведется с конца файла. Поле l_len задает количество байт для блокировки.
    11. Многократный вывод символов и атрибутов. (1)

    Для многократного вывода одного символа в Windows предназначена функция FillConsoleOutputCharacter, а для многократного вывода одного и того же атрибута – функция FillConsoleOutputAttribute. BOOL FillConsoleOutputCharacter(HANDLE hConsOut, CHAR character, WORD len, COORD pos, DWORD* actlen) и BOOL FillConsoleOutputAttribute(HANDLE hConsOut, WORD attr, DWORD len, COORD pos, DWORD* actlen). 1 задает хэндл экрана консоли, 2-выводимый символ/атрибут, 3-задает число повторений вывода симпола/атрибута. Actlen-адрес для возврата числа выполненного числа повторений. Pos-задает позицию экрана. В Win имеется еще одна возможность установки цвета для вывода. Функция имеет прототип - BOOL SetConsoleTextAttribute(HANDLE houtput, WORD attrib). Последняя функция устанавливает цвет, автоматически используемый

    9. Многопользовательская блокировка файлов.(2)

    В операционных системах Windows для блокировки участков файлов предназначена функция, имеющая прототип

    BOOL LockFile(HANDLE hFile, хэндл блокируемого файла

    DWORD FileOffsetLow, DWORD FileOffsetHigh, //началь и конечн знач-е смещ

    DWORD nNumberOfBytesToLockLow,

    DWORD nNumberOfBytesToLockHigh). Данная функция при удачном выполнении блокирует доступ к указанному в ней участку для всех других процессов. Эта функция предназначена в общем случае для работы с большими файлами. Обратной к функции LockFile является системная функция UnlockFile, кото-рая имеет прототип

    BOOL UnlockFile, где аргументы по своему назначению совпадают с уже рассмотренными в функции LockFile. Данная функция снимает блокировку с указанного в ней участка, давая тем самым свободный доступ к нему, если это, конечно, согласуется с общими режимами доступа для других процессов, определяемыми аргументом ShareMode в функции открытия файла CreateFile. Кроме двух рассмотренных функций, предназначенных для управления блокировкой отдельных участков в Windows, LockFileEx и UnlockFileEx

    11. Многократный вывод символов и атрибутов.(2)

    далее при выводе на экран функцией WriteFile, а также используемый при отображении символов в процессе ввода функцией ReadFile. В ОС UNIX отсутствуют функции вывода символов и атрибутов. Но проблема решена с помощью у.п. esc[цветm, где цвет задается десятичным числом, разделенным символом точка запятой. Нап-р цвет ярко-желтого символа на синем фоне esc[1;33;44m.Цвет символа, фона и, может быть, повышенной яркости можно задавать в одной управляющей последовательности, разделяя их символами "точка с запятой" и обязательно без дополнительных разделяющих пробелов. Цвет, установленный управляющей последовательностью, действует до тех пор, пока другой подобной последовательностью он не будет переустановлен. В частности, после завершения работы программы очень удобно вернуться к стандартному цвету использования консоли: светло-серым символам на черном фоне. Для такого перехода проще всего выполнить управляющую последовательность esc[0m .

    10. Функции управления курсором. Классические языки высокого уровня не содержат средств управления позицией вывода на экране и цветом символов текста. Такая ситуация в значительной степени предопределена тем, что когда создавались эти языки, подобные средства были недоступны по аппаратным причинам.

    Для позиции курсора необходимо задать экранные координаты этой позиции. В ОС Windows Фу-я позициониров. Имеет прототип BOOL SetConsoleCursorPosition(HANDLE hConsOut, COORD pos).Где 1 арг-хэндл экрана консоли, а 2-задает устанавливаемую позицию курсора и представляет структуру данных: typedef struct _COORD { SHORT X;SHORT Y; } COORD, *PCOORD; В pos записывается структура COORD с амперсандом.Например: Установка курсора в 3 строку и в 5 столбец. COORD pos;а затем задать запись целых трех операторов pos.X=5; pos.Y=3; SetConsoleCursorPosition(hout, &pos); Обратная ф-я, позволяющ.определить текущую позицию: GetConsoleScreenBufferInfo. и требует использования структуры данных, описанной в заголовочном файле как typedef struct _ В ОС UNIX для управления курсором предназначены управляющие последовательности или ANSI-последовательности. У.п. начинаются с клавиши esc(это код и его записывают в виде “\033”, 2 символом у.п. является символ “[”,. Для задания курсора уп выглядит “\033[строка;столбецH”. Сущ-ют уп, которые переводят курсор на заданное число строк и столбков. На-мер esc[строкаA-приказывает переместить курсор вверх, esc[строкаB – на заданное число строк вниз, esc[столбецC – на заданное в ней число столбцов вправо, а esc[столбецD – на заданное число столбцов влево esc[2J-очистить экран.

    12. Вывод в произвольную позицию экрана.

    В Windows для вывода строки текста в произвольную позицию экрана служит функция. BOOL WriteConsoleOutputCharacter(HANDLE hConsOut, CSTR* text, DWORD len, COORD pos, DWORD* actlen)). 1 задает хэндл экрана консоли, 2-выводимый символ/атрибут, 3-задает число повторений вывода симпола/атрибута. Actlen-адрес для возврата числа выполненного числа повторений. Pos-задает позицию экрана. В ОС Wind для вывода текста, задавая для каждого символа свой цветовой вариант служит функция BOOL WriteConsoleOutput(HANDLE hConsOut, CHAR_INFO* cells, COORD dwBufferSize, COORD dwBufferCoord, SMALL_RECT* rect), где cells использует двум массив.Его элементы описаны в заголовочном файле.Параметр dwBufferSize задает измерения масссива:сколько в нем строк и сколько столбцов.4 арг.-определяет позицию в этом массиве.rect- задает прямоугол.область экрана,в кот.предназнач вывод текста с его атрибутами.Тип этого параметра описан в заголовочн файле.Для вывода различных атрибутов на экран предназначена ф-яBOOL WriteConsoleOutputAttribute(HANDLE hConsOut, WORD* attrs, DWORD len, COORD pos, DWORD* actlen).

    В Unix для вывода строки текста с различными атрибутами следует использовать управляющие последовательности между отдельными выводимыми символами. В последовательности комбинируются отдельные символы текста вместе с требуемыми для них атрибутами. для очистки экрана Unix содержит специальную управляющую последовательность, которая определяется как esc[2J После очистки экрана, вызванного этой управляющей последовательностью, курсор помещается в левый верхний угол.– очистить строку, задаваемую как esc[K . Это управление удаляет все символы, начиная с позиции курсора до конца строки, включая символ в позиции курсора.

    13. Событийное программирование и его использование в функциях ввода. В программе внешними воздействиями являются нажатие клавиши клавиат, перемещение мыши. Момент когда алгоритм прерывается и выполняется какая-то часть программы назвается механизмом прерываний. Разработка программ обработчиков прерываний очень не простая задача и поэтому ее выполняют разработчики ОС. Программист сам определяет при написании прогр.,что следует ожидать:нажатие данных от клавиатуры или от мыши. Для текстовой консоли Windows, возможны сообщения от нажатия клавиши клавиатуры, от мыши. На-р: программа для текстового окна м. запросить сообщен с пом.ф-ии BOOL ReadConsoleInput(HANDLE hConsInput, INPUT_RECORD* buffer, DWORD len, DWORD* actlen), где 2 пар.-адрес буфера, кот. Представляет собой для размещения нек.числа записей.3 пар-размер массива(равен 1).Если он не равен 1, то после обращения к функ ReadConsoleInput стоит проверять сколько записей о вводе было получено(с помощью actlen). Структ. INPUT_RECORD опис. В заг. Файле. В ней находятся тип события EventType.Его значения задаются константами.Сущ-ют доп.возможности для задания типов событий: SetConsoleMode(хэндл, DWORD mode). Пар.mode задает новый режим управления вводом/выводом.

    14. Средства чтения содержимого экрана в Windows.

    В Win. Для чтения инфо с экрана имеется 3 функции. ReadConsoleOutputCharacter-для чтения с экрана только символов текста. ReadConsoleOutput-для чтения с экрана символов текста с их атрибутами. ReadConsoleOutputAttribute-для чтения из последовательных позиций экрана атрибутов символов. Функции имеют прототипы: BOOL ReadConsoleOutputCharacter(HANDLE hConsOut, STR* buffer, DWORD len, COORD dwReadCoord, DWORD *len);BOOL ReadConsoleOutput(HANDLE hConsOut, CHAR_INFO* cells, COORD dwBufferSize, COORD dwBufferCoord, SMALL_RECT* rect); BOOL ReadConsoleOutputAttribute(HANDLE hConsOut, WORD* attribs, DWORD len, COORD pos, DWORD* actlen); Если WriteConsoleOutPut предназначена для размещения инф-ии из 2-ного массива в прямоугольник, то ReadConsoleOutput наоборот из прямоугольника в двумерн массив. В ReadConsoleOut пар. Rect определ. Прямоугольник экрана, пар. Cells-массив эл-тов. dwBufferSize-размеры массива, а dwBufferCoord-позицию(индекс строки и столбца). Число читаемых символов/атрибутов задается в параметре len, чтение с позиции экрана с именем pos а число прочитанных символов возвращается с помощ. Пар. Actlen.

    15. Средства чтения содержимого экрана в Unix.

    В ОС отсутствуют средства чтения символов с экрана. Т.к. раньше основным средством для вывода инфо были телетайпы,осущест.вывод на бумажную ленту. Но сущ-ют дополнительные виртуальн.устройства. 1-м из таких устройств является «виртуальный экран с консоли», обозначаемый virtual console screen. В ней файлы рассматриваются как специализированные и размещаются в каталоге /dev. В каждой позиции экрана виртуальной консоли соответств. 1 байт. Н-р: при использовании разрешения в 25 строк по 80 символов вирт.экран хранится как файл (25*80)=2000 байтов. Кроме этого можно использовать расширенное вирт.устройство, обозн как vcsa(позволяет считывать атрибуты). На каждую позиц. Выделяется по 2 байта. Ф-я записыв. След. Образом: hscreen = open("/dev/vcs", O_RDONLY, 0600);Далее можно производить чтение с экрана read(hscreen, &buffer, 100); где buffer –массив, в кот. Счит. Символы. Последн. Атриб-сколько байт нужно прочитать. Для пользоват. Linux устройство vcs может оказаться недоступным почтению, поэтому чтобы сделать это устр доступным, нужно выполнить команду chmod o+r /dev/vcs.

    16. Перенастройка консоли Unix для немедленного ввода нажатий отдельных клавиш.

    В Unix для специализированного ввода именно с консоли следует использовать непосредственно устройство консоли как специальный файл. Для доступа с клавиатуры нужно открыть специальное виртуальное устройство dev/tty. hcons = open(“/dev/tty”, O_RDONLY) где переменная hcons должна быть предварительно описана как целочисленная. После такого открытия можно использовать функцию read(hcons, buffer, сколько) для чтения текста непосредственно с клавиатуры (даже если стандартный ввод переназначен). Но при этом для программиста возникает проблема, обусловленная тем, что вводимые символы поступают в программу только после нажатия на клавишу Enter, когда используется обычный (стандартный) режим работы консоли. (Информация о нажатии клавиш клавиатуры оказывается недоступен программе до воздействия на клавишу Enter.) В тех ситуациях, когда программе Unix необходим полноценный посимвольный ввод, следует отменить стандартный режим работы консоли. Для этих целей используются функции с прототипами int tcgetattr(int htty, struct termios *tsave)

    int tcsetattr(int htty, int action, srtuct termios *tnew)

    Функция tcgetattr() позволяет получить детальную информацию о текущих режимах консоли, а функция tcsetattr() – установить новые режимы.


    17. Программные средства использования мыши в текстовом режиме Windows (бил. 13). В ОС Win инфо от мыши получается в рез-те запроса событий для текстовой консоли посредством вызова функции ReadConsoleInpute.При получении ф-ей от мыши, поле EventType,оказывается=Mouse_Event, а комбинир. Компонент Event, является записью типа Mouse_Event_Record, кот. Определ. В заголов.файле. В структуре Mouse_ev.rec один из компонентов дает текущую позицию мыши и состоит из X и Y координат. Одно из полей выдает код нажатия клавиши мыши, одно из полей позволяет определить двойное нажатие мыши и двигалась ли мышь в момент формирования сообщения. Последн. аргумент содержит комбинацию битов, отражающих текущее состояние управляющих клавиш. typedef struct _MOUSE_EVENT_RECORD {

    COORD dwMousePosition; // дает текущую позицию мыши.

    DWORD dwButtonState;// выдает код нажатия клавиш мыши и может быть произвольной комбинацией битовых значений.

    DWORD dwControlKeyState; // содержит комбинацию битов, отражающих текущее состояние отдельных управляющих клавиш.

    DWORD dwEventFlags; // позволяет определить двойное нажатие мыши и двигалась ли мышь в момент формирования сообщения.

    MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;

    18. Понятие процесса; параллельные и последовательные процессы. Процессом наз-ют действия, выполняемые над конкретн данными под управл. Программы. Процесс разворачивается во времени-это динам. Объект, программа-статический.Одновременное выполнение неск. программ составляет нескол. Процессов. Когда неск. Процессов одновременно обрабатывают данные при этом, пользуясь одним общим экземпляров такой программой наз-ют реентабельной.Реентабельной наз-ют программу, кот. Обеспечивает правильное функ. Множества одновременных процессов, функ. На ее основе. Процессы называются параллельными, если каждый из них начат, но не завершен. Процессор компьютера может быстро переключаться с одного процесса на другой, запоминая при этом перекл. Всю необх. Информ. После порождения некоторым процессом другого процесса, 1-й из них становится родительским, а порожденный – дочерним (child). Процесс, становящимся родителем, порождает процесс для выполнения работ, а сам приостанавливается. Его дочерний процесс выполняет запланиров. Работу и информирует об успешном/неуспешном завершении. В ответ на это ОС переводит приостановившийся родительский процесс опять в функционир. Состояние. Такой порядок наз-ся последовательными процессами.
    1   2   3   4   5   6


    написать администратору сайта