Здавалка
Главная | Обратная связь

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



СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ

Методические указания по выполнению лабораторных работ для студентов, обучающихся по специальности 230102

 

 

МОСКВА 2011

Составитель Н.В. Зорина, Л.Б. Зорин

 

Редактор В.М. Панченко

 

Методические указания содержат задания по лабораторным работам, примеры программ на языке C, а также справочный материал системным вызовам в стандарте POSIX. Методические указания предназначены для студентов, обучающихся по направлению «Автоматизированные системы обработки информации и управления», изучающих курс «Системы реального времени».

 

Рецензенты: О.В. Соболев

 

© МИРЭА, 2011

 

Литературный редактор Н.К. Костыгина

 

Изд. лицензия №020456 от 04.03.97

Подписано в печать 00.00.0000. Формат 60х84 1/16

Бумага офсетная. Печать офсетная.

Усл. печ.л. 1,86. Усл.кр.-отт. 7,44. Уч.-изд.л. 2,0.

Тираж 100 экз. Заказ 00. Бесплатно

 

Московский государственный институт радиотехники,

электроники и автоматики (технический университет)

117454, Москва, просп. Вернадского, 78

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

Тема: Взаимодействие со средой выполнения.
Системные вызовы и библиотечные процедуры: общие
сведения. Управление файлами

Цель работы:

Лабораторный практикум выполняется в среде OS SINIX, доступ к которой осуществляется с рабочего места, функционирующего на базе терминала. При выполнении входа через login user для вас запускается своя копия shell и предоставляется виртуальный компьютер. В ходе выполнения первой лабораторной работы Вам предстоит овладеть некоторыми инструментальными средствами, которые будут Вами использоваться во всех последующих работах. Системные вызовы могут быть объединены в следующие три категории

1. управление файлами;

2. управление процессами;

3. обработка ошибок;

Процесс в Unix/Linux представляет собой единицу работы вычислительной системы, которой операционная система выделяет ресурсы. С удовлетворительной степенью приближения можно определить процесс как выполняющуюся программу. Каждый процесс в системе имеет свой уникальный номер - идентификатор процесса (PID), представляемый целым числом.

Каждому процессу в операционной системе соответствует запись в таблице процессов и адресное пространство процесса, состоящее из областей кода, данных и стека. Запись в таблице процессов (и ее расширение в адресном пространстве процесса) содержит управляющую информацию о ресурсах, выделенных процессу, и о состоянии процесса. Создание нового процесса или запуск на выполнение новой программы называют с процессом порождения процессов. Процесс может порождать другой процесс. Порождение нового процесса в Unix/Linux реализовано копированием записи таблицы процессов, таким образом, процесс-потомок в момент своего порождения представляет собой точную копию процесса-предка. Процесс-предок и процесс-потомок далее выполняются параллельно, но процесс-предок может и ожидать завершения процесса- потомка.

Процессы в Unix/Linux выполняются в режиме разделения времени, это означает, что время центрального процессора равномерно (с учетом приоритетов) распределяется между всеми готовыми к выполнению процессами. Даже если процесс не переходит в состояние ожидания (например, ожидания выполнения операции ввода-вывода) по своей инициативе, по истечении выделенного процессу кванта времени выполнение процесса будет прервано операционной системой, и процессор будет отдан более приоритетному процессу. В ОС Unix/Linux используется планирование времени ЦП на основе динамическое вычисления приоритетов, приоритет выполняющегося процесса понижается, а приоритеты ожидающих процессов таким образом повышаются.

Текст программы mydup.c:

/*$cat mydup.c */

#include <fcntl.h>

#include <stdio.h>

#include <stdlib.h>

 

int main(void)

{

int fd1, fd2, fd3; //файловые дескрипторы

fd1=open("text.txt", O_CREAT|O_RDWR|O_TRUNC);

printf("fd1=%d\n", fd1);

write(fd1, "what's",6);

fd2=dup(fd1);

printf("fd2=%d\n", fd2);

write(fd2," up",3);

close(0);

fd3=dup(fd1);

printf("fd3=%d\n", fd3);

write(0," doc",4);

dup2(0,2); //дублирование файловых дескрипторов

write(2, "/?\n", 2);

}

 

 

Выполнение программы mydup.c:

$mydup

fd1=3

fd2=4

fd3=0

$cat text.txt

what's up doc/?

Работа программы mydup.c:

Задаются 3 файловых дескриптора fdl, fd2, fd3. Далее открывается созданный файл text.txt, который при помощи макроса О RDWR можно читан, и писать. Команда write обеспечивает запись в наш файл. Команда dup() обеспечивает дублирование связанных дескрипторов. Числа 3, 4, 0 получается у нас. т.к. 3 - число после 0,1 - стандартный ввод/вывод, 2 - ошибка(занят). 4 - получается из прибавления на 1 процесс(dup). После выполнения команды close(0) берется 0 - т.к. освободили. Write(<файловый дескриптор, возвращаемый функцией open>,<данные для записи>,<количество написанных байт>) - функция, выполняющая запись в файл.

 

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







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.