
- •1. Понятие операционной системы (ос), ее отношение к аппаратному и программному обеспечению
- •2. Состав и основные функции ос
- •3. Классификация ос
- •4. Понятие дескрипторов и хэндлов
- •5. Ввод и вывод в стандартные файлы
- •6. Базовые средства использования файловой системы
- •Int open(char* filename, int access_mode, mode_t permission)
- •Int open(char* filename, int access_mode, mode_t permission)
- •9. Многопользовательская блокировка файлов
- •Int fcntl(int handle, int cmd, struct flock *ldata)
- •10. Функции управления курсором.
- •11. Многократный вывод символов и атрибутов.
- •12. Вывод в произвольную позицию экрана
- •13. Событийное программирование и его использование в функциях ввода.
- •14. Средства чтения содержимого экрана в Windows.
- •15. Средства чтения содержимого экрана в Unix.
- •Int hscreen;
- •18. Программные средства использования мыши в текстовом режиме Linux
- •Int Gpm_Open (Gpm_Connect *conn, int flag)
- •Int Gpm_GetEvent (Gpm_Event *event)
- •Int clicks;
- •19. Понятие процесса; параллельные и последовательные процессы
- •20. Состояния процесса, диспетчеризация процессов
10. Функции управления курсором.
Классические языки высокого уровня не содержат средств управления позицией вывода на экране и цветом символов текста. Такая ситуация в значительной степени предопределена тем, что когда создавались эти языки, подобные средства были недоступны по аппаратным причинам.
Windows
BOOL SetConsoleCursorPosition(HANDLE hConsOut, COORD pos)
В pos записывается структура COORD с амперсандом.
В операционной системе Unix для управления курсором и некоторых других действий с экраном предназначены управляющие последовательности.
"\033[строка;столбецH"
11. Многократный вывод символов и атрибутов.
Для многократного вывода одного символа в 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)
BOOL SetConsoleTextAttribute(HANDLE houtput, WORD attrib)
Последняя функция устанавливает цвет, автоматически используемый далее при выводе на экран функцией WriteFile, а также используемый при отображении символов в процессе ввода функцией ReadFile.
В операционной системе Unix отсутствуют системные функции многократного вывода символов и атрибутов. Проблема использования цвета в Unix была решена с помощью управляющих последовательностей.
"\033[цветm"
12. Вывод в произвольную позицию экрана
В Windows для вывода строки текста в произвольную позицию экрана служит функция
BOOL WriteConsoleOutputCharacter(HANDLE hConsOut, CSTR* text, DWORD len, COORD pos, DWORD* actlen)
Парное сочетание функций FillConsoleOutputAttribute и WriteConsoleOutputCharacter характерно для консольных приложений Windows, в которых требуется выполнять вывод с новым цветом в непоследовательных позициях экрана.
Рассмотренной функции вывода символов вместе с их атрибутами соответствует функция:
BOOL WriteConsoleOutput(HANDLE hConsOut, CHAR_INFO* cells, COORD dwBufferSize, COORD dwBufferCoord, SMALL_RECT* rect)
В Unix для вывода строки текста с различными атрибутами следует использовать управляющие последовательности между отдельными выводимыми символами:
"\033[1;31;44mП\033[0;32;40mр\033[1;36;40mи\033[33;44mв\033[31;42mе\033[34;43mт\n"
13. Событийное программирование и его использование в функциях ввода.
В настоящее время поведение программных систем зависит не столько от действия последовательности действий алгоритма а от воздействий на системы. Такими воздействиями являются нажатия клавиш клавиатуры, перемещение мыши и нажатие ее кнопок, а также более сложные действия, реализуемые обычно также с помощью мыши. Момент когда алгоритм прерывается и выполняется какая-то часть программы назвается механизмом прерываний. Разработка программ обработчиков прерываний очень не простая задача и поэтому ее выполняют разработчики операционных систем. Остальным предоставляется неявно пользоваться этим механизмом.
Для текстовой консоли Windows, по замыслу разработчиков, теоретически возможны сообщения от нажатия клавиши клавиатуры, от мыши, сообщения об изменении размера окна, о переходе активности к текущему окну или о потере такой активности.
В Windows программа для текстового окна может запросить сообщение путем вызова системной функции ReadConsoleInput.
BOOL ReadConsoleInput(HANDLE hConsInput, INPUT_RECORD* buffer, DWORD len, DWORD* actlen)
Для использования какого либо события необходимо пользоваться следующими константами:
KEY_EVENT, MOUSE_EVENT, WINDOW_BUFFER_SIZE_EVENT, MENU_EVENT, FOCUS_EVENT.