
- •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. Состояния процесса, диспетчеризация процессов
18. Программные средства использования мыши в текстовом режиме Linux
Для использования мыши в Linux служит программная подсистема gpm. Построена она по технологии клиент-сервер. Основой подсистемы служит сервер мыши.
Перед началом использования мыши процесс должен зарегистрироваться у сервера и передать ему информацию, какие сообщения от мыши интересуют этот процесс. Получаемые сообщения от мыши процесс-клиент может обрабатывать как полностью сам, так и передавать другой процедуре обработчика сообщений от мыши.
Для регистрации у сервера программа процесса должна заполнить структуру Gpm_Connect и выполнить вызов функции Gpm_Open с этой структурой в качестве аргумента. Функция Gpm_Open имеет прототип
Int Gpm_Open (Gpm_Connect *conn, int flag)
После удачной регистрации программа клиента может запрашивать и получать сообщения от мыши, для этого служит функция Gpm_GetEvent с прототипом
Int Gpm_GetEvent (Gpm_Event *event)
typedef struct Gpm_Event {
unsigned char buttons, modifiers;
unsigned short vc;
short dx, dy, x, y;
enum Gpm_Etype type;
Int clicks;
enum Gpm_Margin margin;
} Gpm_Event;
Поля x, y этой структуры дают координаты позиции курсора мыши на момент формирования сообщения. Поле buttons выдает код нажатия клавиш и является логической комбинацией следующих констант:
#define GPM_B_LEFT 4 // Левая клавиша мыши
#define GPM_B_MIDDLE 2 // Средняя клавиша мыши
#define GPM_B_RIGHT 1 // Правая клавиша мыши
После завершения использования мыши клиентом следует вызвать функцию Gpm_Close(), которая разрывает связь клиента с сервером. Функция эта не имеет аргументов. Заголовочным файлом для программ с использованием подсистемы gpm служит файл gpm.h.
Другим, более компактным вариантом, является использование вспомогательной опции задания дополнительной библиотеки.
gcc -o prim1.exe prim1.c –lgpm
19. Понятие процесса; параллельные и последовательные процессы
Следует отметить существенное отличие процесса от программы и даже от выполнения программы. Процесс разворачивается во времени, это динамический объект, программа – это статический, неизменяемый объект. Замечательной особенностью современных операционных систем является их способность обеспечивать одновременное выполнение нескольких программ.
Реентерабельной называют программу, которая обеспечивает правильное функционирование множества одновременных процессов, функционирующих на ее основе.
Процессы называются одновременно выполняющимися или параллельными, если каждый из них начат, но не завершен. Процессор компьютера может быстро переключаться с одного процесса на другой, запоминая при этом переключении всю необходимую информацию, чтобы в дальнейшем продолжить выполнение процесса с места его приостановки.
После порождения некоторым процессом другого процесса, первый из них становится родительским (parent), а порожденный – дочерним (child). Данная иерархия используется для организации совместных работ многими процессами. При этом в простейшем случае процесс, становящийся родителем, порождает процесс для выполнения некоторых вычислительных работ, а сам при этом приостанавливается. Его дочерний процесс выполняет запланированную работу и завершает свои действия специальным обращением к операционной системе, информирующей последнюю об успешном или неуспешном завершении. В ответ на это обращение операционная система переводит приостановившийся родительский процесс опять в функционирующее состояние. При таком порядке выполнения родительского и дочернего процессов их называют последовательными процессами.