66555

Работа с терминалом. Управление процессами. Взаимодействие процессов: каналы

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы - изучение механизмов управления устройствами ввода-вывода UNIX при помощи специальных файлов устройств, основных принципов управления процессами, способов создания и уничтожения процессов, механизмов планирования процессов...

Русский

2014-08-22

50.5 KB

1 чел.

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

—————————

Кафедра информационной безопасности компьютерных систем

ОТЧЕТ

по лабораторной работе №6

«Работа с терминалом. Управление процессами.Взаимодействие процессов: каналы»

по курсу «Операционные системы»

Студент:

Никитин А. С.

гр. 2088/1

Преподаватель:

Степанова Т. В.

Санкт-Петербург — 2011

1. Формулировка задания

Цель работы - изучение механизмов управления устройствами ввода-вывода UNIX при помощи специальных файлов устройств, основных принципов управления процессами, способов создания и уничтожения процессов, механизмов планирования процессов, простейших видов взаимодействия процессов (посредством каналов pipe) в ОС UNIX и Windows.

2. Использованные теоретические сведения

3. Результаты работы

3.1. Выполнение примеров

3.2. Выполнение индивидуального задания

  1.  UNIX. Разработать программу, осуществляющую взаимодействие с терминалом через специальный файл устройства /dev/tty. Программа должна выполнять следующие операций при нажатии отдельных клавиш:
    •  переключение между каноническим (строковым) и неканоническим (символьным) режимами работы терминала;
    •  отображение курсора на экране и его перемещение по экрану (в неканоническом режиме).

Комбинации клавиш, используемые для выполнения перечисленных операций, должны задаваться в конфигурационном файле программы перед ее запуском или переназначаться во время ее работы.
#include <stdio.h>
#
include <stdlib.h>
#
include <termio.h>
#
include <unistd.h>
#
include <fcntl.h>
#
include <signal.h>

static int td; //Дескриптор файла терминала
static struct termio trest; //Структура, хранящая начальное состояние
//терминала

void clean(int sig) { //Обработчик сигнала QUIT
   
ioctl(td, TCSETA, &trest);
   
close(td);
   
exit(0);
}

int main(int argc, char **argv) {
   
struct termio tstr, tsym; //Структуры для двух режимов терминала
   
int c, md = 0; //Переменные для чтения символов и хранения режима
   
char cmod = ' '; //Изначально режим меняется пробелом
   
char up = 'w'; //Кнопки WSDA используются для передвижения курсора
   
char down = 's';
   
char right = 'd';
   
char left = 'a';
   
td = open("/dev/tty", O_RDWR | O_NDELAY); //Открытие файла терминала
   
ioctl(td, TCGETA, &trest); //Получение атрибутов
   
tstr = trest;
   
tsym = tstr;
   
tsym.c_lflag &= ~(ICANON | ECHO); //Задание атрибутов символьного
//режима
   
tsym.c_cc[VMIN] = 1;
   
tsym.c_cc[VTIME] = 0;
   
signal(SIGQUIT, clean); //Установка обработчика сигнала
   
while (1) { //Основной цикл
       
c = 0;
       
read(td, &c, 1); //Чтение символа
       
if (c == '\x10') { //Если нажата комбинация Ctlr+P, то
//переход в режим изменения настроек
           
ioctl(td, TCSETA, &tsym); //Переключение в символьный режми

//для удобства
           
write(td, "\033[J", 4);
           
write(td, "Keyboard setup\n", 15);
           
do { //Пропустить остаточные символы
               
c = 0;
               
read(td, &c, 1);
           }
while (c != 0);
           
write(td, "cmod\n", 5); //Настройка соответствующих клавиш
           
do {
               
cmod = 0;
               
read(td, &cmod, 1);
           }
while (cmod == 0);
           
write(td, "up\n", 3);
           
do {
               
up = 0;
               
read(td, &up, 1);
           }
while (up == 0);
           
write(td, "down\n", 5);
           
do {
               
down = 0;
               
read(td, &down, 1);
           }
while (down == 0);
           
write(td, "right\n", 6);
           
do {
               
right = 0;
               
read(td, &right, 1);
           }
while (right == 0);
           
write(td, "left\n", 5);
           
do {
               
left = 0;
               
read(td, &left, 1);
           }
while (left == 0);
           
if (md) //Переключение в прошлый режим
               
ioctl(td, TCSETA, &tsym);
           
else
               
ioctl(td, TCSETA, &tstr);
       }
       
if (c == cmod) { //Нажатие кнопки переключения режима
           
if (!md)
               
ioctl(td, TCSETA, &tsym);
           
else
               
ioctl(td, TCSETA, &tstr);
           
md = !md;
       }
       
if (md) { //В символьном режиме обработка клавиш перемещения
//курсора
           
if (c == up) write(td, "\033[1A", 4);
           
if (c == down) write(td, "\033[1B", 4);
           
if (c == right) write(td, "\033[1C", 4);
           
if (c == left) write(td, "\033[1D", 4);
       }
   }
   
return 0;
}

3.3. Ответы на контрольные вопросы

  1.  Опишите алгоритмы планирования процессов в Windows.
    Процессы просматриваются в порядке уменьшения приоритетов, а потом среди процессов с одинаковым приоритетом выбирается один для выполнения по алгоритму
    Round-Robin. При этом обычно процессу выделяется целый квант времени, после которого его выполнения прерывается. Однако, процессы с более высоким приоритетом могут вытеснять текущий процесс.
  2.  Для чего нужны приоритеты процессов в Windows?
    Приоритеты процессов необходимы для более эффективного планирования, а также для более рационального распределения процессорного времени, так как различным процессам нужно различное его количество.
  3.  Опишите реализацию приоритетов в Windows.
    В
    Windows есть 32 приоритета от 0 до 31, большее значение означает более высокий приоритет. Базовый приоритет процесса задаётся самим процессом, этот приоритет является основным для всех потоков, выполняющихся в процессе. Однако при планировании системой учитывается динамический приоритет потока, который основывается на базовом. Это сделано для более честного планирования, так как иначе потоки с очень низким приоритетом будут постоянно вытесняться другими потоками. Динамический приоритет повышается при нехватке процессорного времени, или после выхода потока из состояния ожидания.

4. Выводы

ОС UNIX предоставляет достаточно удобный интерфейс для работы с терминалом. Одной из составляющих удобства является файл терминала.

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

Реализация каналов в операционных системах UNIX и Windows в целом достаточно похожа предоставляемой функциональностью. Основной проблемой при таком взаимодействии процессов может стать совместное использование канала несколькими процессами, однако для однонаправленной передачи данных одним процессом другому этот способ подходит идеально.

Приложение

Исходные тексты программ


 

А также другие работы, которые могут Вас заинтересовать

75582. Американські індіанці, План-конспект уроку з англійської мови для учнів 9-х класів 61.5 KB
  Обладнання: підручник Mtch the pirs HO1 ngrms H02 карта світу на дошці Put the sentences given below in the correct order H03 автентичний текст для позакласного читання mericn Indins H04. Т: The topic of our todys lesson is: mericn Indins . By the end of the lesson you should be ble: to recognize understnd nd operte lexicl mteril bout Indins; to identify min ides nd detils from the text for reding; to prticipte in common converstionl exchnge on the topic of our...
75583. День Незалежності США, План-конспект уроку з англійської мови для учнів 9-х класів 57 KB
  Т: We re going to tlk bout the Independence Dy of US. By the end of the lesson you should be ble: to identify min ides nd detils from the uthentic text for reding despite the nturl difficulties; to tlk bout the celebrtion of the Independence Dy in US; to conduct your own dilogues using the given ones s model...
75584. Риси характеру американців, План-конспект уроку з англійської мови для учнів 9-х класів 57 KB
  Т: Tody we re going to tlk bout the min fetures of chrcter of mericn pec By the end of the lesson you should be ble: to identify min ides nd detils from the text for reding; to tlk bout the min fetures of chrcter of mericn people; to conduct your own dilogues using the given ones s model. Т: Wht do you know bout culture shock When people trvel to other countries they find tht mny things re different from their own country the wether the food the greetings gestures of people their behviour lifestyle nd so on. Often it upsets people nd...
75585. Традиційна американська їжа. Активізація ЛО теми «їжа» 78 KB
  Практикувати учнів у читанні тексту і в аудіюванні автентичного тексту з метою отримання загального уявлення та з метою точного та повного розуміння усієї інформації, що в ньому міститься, незважаючи на мовні труднощі.
75586. Вашингтон — столиця США, План-конспект уроку з англійської мови для учнів 9-х класів 74.5 KB
  Обладнання: підручник автентичний текст для читання Wshington D. Т: Tody we re going to tlk bout Wshington D. By the end of the lesson you should be ble: to review lexicl nd grmmr mteril bout the United Sttes nd its lrgest city New York; to identify min ides nd detils from the uthentic text for reding; to tlk bout Wshington D. The clp of the US is Wshington D.
75588. Театр. Вільний час, План-конспект уроку з англійської мови для учнів 9-х класів 71.5 KB
  Активізувати вживання ЛО теми «Вільний час», «Відвідування театру естради». Практикувати учнів у читанні тексту з метою отримання загального уявлення (skimming) та максимально повного й точного розуміння усієї інформації, що в ньому міститься (scanning) Підготувати до самостійного усного висловлювання про відвідування театру.
75589. Відвідування театру естради, План-конспект уроку з англійської мови для учнів 9-х класів 65.5 KB
  Активізувати в мові учнів вживання ЛО теми «Відвідування театру». Підготувати учнів до самостійного висловлювання про відвідування театру естради на основі плану. Практикувати у діалогічному мовленні: конструюванні діалогів за заданою ситуацією та з урахуванням міжрольових взаємодій комунікативних партнерів...
75590. Музичні захоплення, План-конспект уроку з англійської мови для учнів 9-х класів 90.5 KB
  Обладнання: підручник вікторина Pop Music Quiz НО1 текст для читання My fvourite singer Elvis Presley king of rock nd roll HO2 Fill in the tble HO3 Write biogrphy of your own fvourite pop strrdquo;HO4 тексти 1 2 для позакласного читання з серії Pop rt з молодіжних журналів НO5 НO6. Т: We re going to tlk bout your fvourite music musicins singers nd pop groups By the end of the lesson you should be ble: to tlk bout your fvourite music musicins singers nd pop groups; to conduct your own dilogues using the given one s n...