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 в целом достаточно похожа предоставляемой функциональностью. Основной проблемой при таком взаимодействии процессов может стать совместное использование канала несколькими процессами, однако для однонаправленной передачи данных одним процессом другому этот способ подходит идеально.

Приложение

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


 

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

52749. Формування у молодших школярів мотивації до навчання 48.5 KB
  Проблема розвитку мотивації навчання в останній час стає все більш актуальною. свідчать що основи мотивації навчання закладаються у початковій школі тому саме молодший шкільний вік має великі резерви формування мотиваційної сфери учнів. Зусилля практиків та науковців сьогодні спрямовані на дослідження певних організаційних форм та змістових компонентів навчальної діяльності за яких відбувається посилення мотивації навчання що оптимізує весь навчальновиховний процес.
52750. Організація дитчого самоврядування 119 KB
  З цією метою у школі сформована певна діюча структура органів самоврядування. Провідна ідея: всебічне виховання учнів через участь в органах самоврядування. Пріоритетні напрями діяльності: навчальна робота; виховна робота; інформаційно методична робота; розвиток учнівського самоврядування. Організація самоврядування побудована на інноваційних підходах: задоволення учнівської природної потреби у...
52751. Розвиток критичного мислення учнів на уроках математики як важливого елементу продуктивної технології навчання 147.5 KB
  Кривий Ріг Україна Розвиток критичного мислення учнів на уроках математики як важливого елементу продуктивної технології навчання У статті розкрито розвиток критичного мислення учнів на уроках математики як важливого елементу продуктивної технології навчання. Як відомо у шкільній освіті існує безліч методів навчання різні типи уроків які переслідують одну єдину мету засвоєння знань учнями. Учень і вчитель є рівноправними субєктами навчання. Організація інтерактивного навчання припускає моделювання життєвих ситуацій використання...
52753. Розробка і виготовлення композицій за творами О.Довженка на уроках трудового навчання з теми «Художня обробка деревини» 2.71 MB
  Із творчістю одного з таких митців – письменника, художника, кінемотографіста, дуже талановитої людини - Олександра Петровича Довженка, діти продовжують знайомство на уроках праці, розробляючи і виготовляючи композиції за його творами. Батьківщина Олександра Петровича – це золотаві соняшники, жовтогарячі колоски пшениці, синє волошкове поле, мальовничі луки, Біла круча на Десні, пісня солов’я...Саме про це й говоримо на уроках. Зачитуємо епізоди з творів письменника, а потім виконуємо завдання: створити композицію за уривками
52754. ХОЧЕШЬ СТАТЬ МИЛЛИОНЕРОМ? DO YOU WANT TO BE A MILLIONAIRE? 142.81 KB
  Начало викторины. Организационный момент. Игра дает шанс поиграть каждому из 7 участников по очереди. Они сидят на стульях перед сценой, спиной к зрительному залу. Ведущий задает вопросы в порядке увеличения трудности вопроса и его стоимости. У участников есть 1 подсказка - помощь друга. В случае ошибки ему выдается стоимость предыдущего вопроса (в евромонетах), а затем принимается следующий игрок. Правильные ответы приветствуются аплодисментами. В конце игры объявляются победители. Great Britain is divided into ... (10 «евро») a) three parts; b) five parts; c) four parts; d) two parts. 2. What is a Picadilly Circus? (20 «евро») a) a circus; b) a square; c) a street; d) a house. 3. What is the Tower of London now? (50 «евро») a) a prison; b) a museum; c) a house; d) a fortress.
52755. Інтегрований урок. Українська література + фізична культура. 5 клас 195.5 KB
  Завдання: прочитати речення з певними інтонаціями: Спочатку із захопленням потім з осудом Ну і богатир Із захватом із розчаруванням Оце так козак Зачудовано із зневагою Яка красуня Домашнє завдання 3хв. Перевірка домашнього завдання Що ви знаєте про речення Як ви розумієте епіграф до нашого уроку Мотивація навчання школярів 45хв. Завдання: створити словесний образ слова здоровя або 2. Завдання: Скласти 5 речень з ключовими словами: Діти Небезпека Правила Здоровя Оголошення теми і мети уроку 1хв.
52756. Drama Techniques for Teaching English 37 KB
  Using drama to teach English results in real communication involving ideas, emotions, feelings appropriateness and adaptability; in short an opportunity to use language in operation which is absent in a conventional language class. Such activities add to the teachers repertoire of pedagogic strategies giving them a wider option of learner-centered activities to chose from for classroom teaching, thereby augmenting their efficiency in teaching English
52757. Древнеруский языкъ. Этимология. 91 KB
  Корень ров н суффикс ая окончание потому что ровную. А что Если корень ров к примеру. Ров это понятие что это яма канава. Поэтому я вам начало положу а дальше будем уже Я не хочу чтобы вы как в школе механически всё воспринимали.