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

Приложение

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


 

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

34171. Экономическая оценка земли. Земельное законодательство 14.98 KB
  Земельное законодательство ЗЕМЕЛЬНОЕ ЗАКОНОДАТЕЛЬСТВО земельное законодательство в соответствии с Конституцией Российской Федерации находится в совместном ведении Российской Федерации и субъектов Российской Федерации. Земельное законодательство состоит из Земельного кодекса Российской Федерации федеральных законов и принимаемых в соответствии с ними законов субъектов Российской Федерации. Нормы земельного права содержащиеся в других федеральных законах законах субъектов Российской Федерации должны соответствовать Земельному кодексу...
34172. Проблемы воспроизводства окружающей среды 13.47 KB
  Проблемы воспроизводства окружающей среды Воспроизводство окружающей среды тесно связано с процессом общественного воспроизводства и является его неотъемлемой частью. Поэтому требуется определить такой характер отношений который сможет в рамках экологоориентированного общественного воспроизводства обеспечить равные возможности воспроизводства социальной экологической и экономической составляющей.
34173. Агропромышленный комплекс: структура и функции 15.02 KB
  На основе такого взаимодействия сформировалась особая сфера экономики которая получила название агропромышленного комплекса АПК АПК это функциональная многоотраслевая подсистема выражающая взаимосвязь взаимодействие сельского хозяйства и сопряженных с ним отраслей экономики по производству сельскохозяйственной техники сельскохозяйственной продукции ее переработке и реализации. Формирование АПК связано с переходом сельского хозяйства к машинной стадии производства которая значительно углубила и расширила технологические и...
34174. Функции и формы торгово-посреднической деятельности 19.19 KB
  Торговопосреднические операции могут включать маркетинг проведение переговоров и заключение договоров кредитование оборотного капитала клиента предоставление гарантий и страхование транспортировку выполнение таможенных формальностей послепродажное обслуживание а также некоторые операции связанные с доработкой расфасовкой упаковкой и тому подобные Торговопосреднические операции могут осуществляться за свой счет и за счет клиента от своего или от его имени. Виды торговопосреднических операций В зависимости от характера...
34175. Товарная биржа. Механизм биржевой торговли 16.58 KB
  Механизм биржевой торговли Для понимания механизма биржевой торговли важно различать рыночные заказы на покупку или продажу ценных бумаг и лимитзаказы. Рыночный заказ означает что клиент поручил брокеру взять цену с рынка. Лимитзаказ так называется потому что клиент устанавливает ценовой лимит который брокер обязан соблюдать. Лимитзаказ на покупку содержит максимальную цену сделки а лимитзаказ на продажу минимальную.
34176. Системы денежного обращения. Денежные агрегаты 16.42 KB
  Важнейшими элементами денежной системы являются: денежная единица это установленный в законодательном порядке денежный знак который служит для соизмерения и выражения цен всех товаров; масштаб цен весовое количество денежного металла принятое в стране в качестве денежной единицы и ее составных частей; официальный масштаб цен утратил свой смысл в связи с особенностями экономического развития отдельных стран и прекращением размена кредитных денег на золото; система эмиссии денег учреждения выпускающие деньги и ценные бумаги;...
34177. Спрос, предложение и равновесие на денежном рынке 19.95 KB
  Закон спроса гласит: при прочих равных условиях спрос на товары в количественном выражении изменяется в обратной зависимости от цены. На изменение спроса влияют неценовые факторы: 1 число покупателей; 2 изменение в денежных доходах населения. Эластичность спроса степень чувствительности спроса к изменению цены товара. Например если доходы в экономике возрастут то это приведет к росту спроса на деньги а следовательно к увеличению процентной ставки в этом случае будет увеличиваться альтернативная стоимость хранения денег и снижаться...
34178. Ссудный капитал и кредит 18.86 KB
  Ссудный капитал и кредит. Формой движения ссудного капитала является кредит. Ссуды бывают следующих видов: ü безвозвратная; ü возвратная беспроцентная; ü возвратная процентная кредит. Источником процента является доход полученный от использования кредита.
34179. Банковская система: функции и структура 30.8 KB
  В банковскую систему входят специализированные организации обеспечивающие деятельность банков и кредитных учреждений расчетнокассовые и клиринговые центры фирмы по аудиту банков дилерские фирмы по работе с ценными бумагами банков организаций обеспечивающие банки оборудованием информацией кадрами. Сложившаяся банковская система имеет двухуровневую структуру: 1 верхний уровень Центральный банк ЦБ; 2 нижний уровень коммерческие банки и кредитнофинан совые организации . По функциональному назначению и характеру осуществляемых...