- •3) Архитектура unix. Режимы задачи ядра и процесса
- •Массив адресов блоков данных.
- •Структура каталогов.
- •Буферный кэш
- •Заголовок буфера
- •Состояния буферов
- •Пять механизмов операции getblk
- •Преимущества и недостатки кэширования диска
- •1) Вытесняющее (permit)
- •2) Не вытесняющее (non-permit) (Корпоративная многозадачность)
- •(14) Уровни и слои контекста
- •Системные операции, связанные со временем
- •Управление пространством в свопе
- •Выгрузка процесса в своп
- •Загрузка или подкачка процесса
- •Выгрузка
- •Системы смешанного типа со свопингом и подкачкой по запросу
- •Рабочее множество процесса
- •Откачка страниц
- •Процесс старения
- •Обработка ошибок
- •Системы смешанного типа со свопингом и подкачкой по запросу
- •24) Именованные каналы
24) Именованные каналы
Имеют запись в фс, им соответствуют спецфайлы. Поэтому через них могут взаимодействовать процессы, не связанные «семейными узами»
При работе с поименованным каналом создаём специальный файл:
mknod p filename ;
p — канал.
с – символьные
b – блочные устр.
Работа с поименованным каналом производится также как с обычным файлом
( теми же системными вызовами ), за исключением того, что реально на диске информация не сохраняется, а передаётся от процесса, вызвавшего запись, процессу, вызвавшему чтение.
Пр:
mknode p namedcan
main()
{ int p; char str[16];
p=open(“namedcan”, O_RDONLY);
read(p, str, 16);
printf(“%s/n”? str); }
(25) Неименованные каналы
Применяются только при взаимодействии между процессом и его потомком.
Создаётся дескриптор, состоящий из двух элементов :
int fdp [2];
Командой pipe (fdp) он определяется.
Потомка можно создавать функцией fork .
Взаимодействие между потомком и предком будем осуществлять используя канал pipe .
Записывать будем с помощью write ( fdp [1] ) ;
Читать с помощью read ( fdp [0] ) .
(26) Пакет IPC
В IPC содержится три пакета взаимодействия:
механизм сообщений;
механизм распределения памяти;
семафоры.
Механизм сообщений позволяет принимать и посылать потоки сформированных данных.
За передачу сообщений отвечают четыре системных вызова :
msg get — возвращает дескриптор сообщения ;
msg clt — устанавливает параметры сообщений ;
msg cnt — передаёт сообщение ;
msg rcv — принимает сообщение.
Механизм распределения памяти позволяет совместно использовать отдельные части виртуального адресного пространства.
shm get — создаёт новую область;
shm at — логически присоединяет ;
shm dt — логически отсоединяет;
shm ctl — работает с параметрами области.
Семафоры синхронизацию выполнения параллельных процессов. В лю.бой момент времени над семафором возможна только одна реализация.
sem get — создание набора семафоров ;
sem ctl — управление этим набором ;
sem op — работа со значениями.
“+”
1) возможность запрашивать информацию о состоянии записи
2) Изменять запись
3) Удалять
4) Устанавливать права доступа
(27) Семафоры и блокировка файлов
В IPC содержится три пакета взаимодействия:
механизм сообщений (позволяет принимать и посылать потоки сформированных данных)
механизм распределения памяти (позволяет совместно использовать отдельные части виртуального адресного пространства)
семафоры (синхронизацию выполнения параллельных процессов. В любой момент времени над семафором возможна только одна реализация)
sem get — создание набора семафоров ;
sem ctl — управление этим набором ;
sem op — работа со значениями.
Семафоры – целочисленные объекты, предназначенные для блокировки доступа к ресурсу
Пр:
y:=x y:=x критические секции не могут выполняться одновременно,
y:=y+1 y:=y+1 иначе х увеличится на 1, а не на 2
x:=y x:=y
флагом нельзя, т.к операции не атомарные
программно эта проблема нерешима
В ЦП есть команда запрещение прерывания.
Создаются семафоры, операции у них атомарны
Просмотр семафора и его изменение выполняется в 1 действие
(28) Удаленный вызов процедур
PRC (Remote Procedure Call Programming Guide | man rps) – используемая в ОС высокоуровневая парадигма сетевого клиент-серверного взаимодействия
Алгоритм: клиент производит вызов процедуры, посылая пакет данных на сервер. Сервер вызывает заказанную процедуру и посылает обратно возвращаемые значения.
3 уровня RPC
- верхний(highest), совершенно прозрачен для операционной системы машины и сети. Вызов удаленной процедуры производиться так же кА обычные Си функции.
- средний(inter medium), настоящий RPC с одной стороны программист сам определяет удаленную процедуру, организует кодировку передаваемых данных. С другой стороны не работает напрямую с сокетами.
- нижний(low), редко используется, позволяет детально программировать взаимодействия по RPC.
XDR(external data representation)
rpcgen – команда трансляции
Диаграмма сетевого взаимодействия по RPC
· Верхний
main(argc, argv)
int argc;char **argv;
{
int num;
fprint(stgerr,”usage:&s hostname”,argv[0]);
}
if ((num=rnusers(argv[1]))<0)
{
fprintf(stderr)”error\n);
exit(0);
}
fprintf(stdout,”%d users on %s\n”,num,argv[1]);
exit(0);
}
cc – operog prog.c –l rpcsvc
rnusers – число
rusers – инфо
have disk
rstabs в ядре
rwall
· Средний
cli
main(argc,argv);
int argc;
char **argv;
{
unsigned long nusers;
int stat;
if (stat=callrpc(argv[1],RUSERSPROG,RUSERSVERS,RUSERSPROC_NUM,xdr_void,0,xdr_u_long,&nusers)!=0)
{
clnt_perrno(stat);
exit(1);
}
printf(“%d users on %s”, nusers,argv[1]);
exit(0);
}
serv
char *nuser(indata);
char *indata;
{
unsigned long numers=3;
return((char*)&numers);
}
main()
{
registr rpc(RUSERSPORG,RUSERSVERS,RUSERSPROG_NUM,nuser,xdr-void, xdr_u_long);
svc_run();
fprintf(stderr,”error: sve_run ret!in”);
exit(1);
}
(29) Сокеты
Сокеты – универсальные методы взаимодействия процессов на основе использования многоуровневых сетевых протоколов. Сокеты предназначены для работы по сети: блокируют драйверы, для удобства выполнения локальных подпрограмм.
Используют клиент-серверный механизм.
Сокеты обладающие одинаковыми свойствами группируются в домен.
Поддерживаются домены:
- "UNIX system" - для взаимодействия процессов внутри одной машины
- "Internet" (межсетевой) - для взаимодействия через сеть с помощью протокола
DARPA (Управление перспективных исследований и разработок Министерства обороны США)
Сокеты можно разбить на 2 типа:
1. Виртуальный каналт - обеспечивает надежную доставку данных с сох- ранением исходной последовательности.
2. Дейтаграммы не гарантируют надежную доставку с сохранением уникальности и последовательности, но они более экономны в смысле использования ресурсов, поскольку для них не требуются сложные установочные операции; таким образом, дейтаграммы полезны в отдельных случаях взаимодействия.
Пример: клиент посылает серверу строчку, сервер выдает её на экран.
main() /*клиент*/
{
int sd,ns;
char buf[256];
struct sockaddr tss_addr;
int fromlen;
sd = socket(AF_INET,SOCK_STREAM,0);
/* имя в запросе на подключение не может включать
/* пустой символ */
tss_addr.sa_family=AF_INET;
tss_addr.sa_data[1]=200;
tss_addr.sa_data[2]=127;
tss_addr.sa_data[3]=0;
tss_addr.sa_data[4]=0;
tss_addr.sa_data[5]=1;
if (connect(sd,&tss_addr,sizeof(tss_addr)) == -1)
{ printf ("can't connect"); exit(); }
write(sd,"hi guy",7);
}
main()/*сервер*/
{
int sd,ns;
char buf[256];
struct sockaddr tss_addr;
struct sockaddr tsc_addr;
int fromlen;
sd = socket(AF_INET,SOCK_STREAM,0);
/* имя гнезда - не может включать пустой символ */
tss_addr.sa_family=AF_INET;
tss_addr.sa_data[1]=200;
tss_addr.sa_data[2]=127;
tss_addr.sa_data[3]=0;
tss_addr.sa_data[4]=0;
tss_addr.sa_data[5]=1;
bind(sd,&tss_addr,sizeof(tss_addr));
listen(sd,1);
for (;;)
{
ns = accept(sd,&tsc_addr,&fromlen);
if (fork() == 0)
{
/* потомок */
close(sd);
read(ns,buf,sizeof(buf));
printf("сервер читает '%s'\n",buf);
exit();
}
close(ns);
}
}
Прием запроса:
(30) Архитектуры многопроцессорных систем
Распределённые вычисления нужны для разбиения программ на части. Выполняются на разных компьютерах.
Используются:
- для повышения производительности
-для повышения надежности решения естественно параллельных задач.
Архитектура распределительных систем
1. master -slave(именная организация)
master становиться слабым местом при увеличении slave
master - в режиме ядра выполняются процессы
slave - процессы выполняются в пользовательском режима
2.Симметричная архитектура (шинная организация)
минус шинной организации – пропускная способность шины ограничена при увеличении числа CPU шина забивается.
Проблемой когерентности КЭШей занимаются программеры.
3.Гиперкубическое соединение процессорных модулей (CPU + ОЗУ + ШИНА + АДАПТЕР МЕЖМОДУЛЪНЫЕ СОЕДИНЕНИЯ)
процессорный модуль 4CPU шина ОЗУ
Компьютеры CRAY
Максимальный размер 16 модулей 64 процессора
4.Транспьютер
Программы написаны на параллельных языках
5.Кластер – компьютеры, объединенные быстрой локальной сетью
Существует решение когда сами ОС выбирают компьютеры на которых будет решаться задача или программа выполнения на специализированных языках.
MPI – библиотека для кластеров.
main( int argc, char **argv)
{ int me,size;/* номер процесса, чисор процессов*/
int SOME_TAG=0;/* идентификатор взаимодействия*/
MPI_Status status;
MPI_Int(&argc,&argv);
MPI_Comm_ranK(MPI_COMM_WORLD,&me);/*определяется наименьший номер*/
MPI_Comm_size(MPI_--//--,&size);/*четные программы прерывают собой нечетные*/
if((me%2)==0)
{
if((me+1)
MPI_Send(………,me+1,SOME_TAG, MPI_COMM_WORLD);/*(число посыл.(buf), кому посыл.,……..)*/
}
else
MPI_Recv(………,me-1,SOMM_TAG,--//--,&status);/*(что посыл., от кого,…………)*/
MPI_Finalize();/*закрывает процесс*/ }
[1] В чем особенность создания нового процесса в UNIX?
Процесс- это последовательность операций при выполнении программы. Он состоит из текста, данных и стека.
Под текстом понимаются код, машинные инструкции.
Все процессы создаются системным вызовом fork().
Посмотреть системные процессы можно либо командой ps либо pstree.
[ 2 ] Предположим, что ядро выполняет отложенную запись блока. Что произойдет, когда другой процесс выберет этот блок из его хешочереди? Из списка свободных буферов ?
Должен заснуть
[ 3 ] В версии V системы UNIX разрешается использовать не более 14 символов на каждую компоненту имени пути поиска. Что нужно сделать в файловой системе и в соответствующих алгоритмах, чтобы стали допустимыми имена компонент произвольной длины ?
Каталог — это таблица, в которой каждая запись в 16 байт, 14 из них на название
Пример решения – ext2 (Изменилась структура каталога – сделан в виде списка, а не таблицы
Имя файла хранится в каталоге )
[ 4 ] Известно, что в иноде UNIX-подобных ОС не содержится имя файла. Где его хранит система?
В каталоге
[ 5 ] Назовите причины назначения разного уровня приоритетов у прерываний? Как эти приоритеты сказываются на работе системы со стеком контекстных слоев?
Чтобы незначительные прерывания не мешали важным, чтобы не переполнять стек прерываний
[ 6 ] Поясните, какая угроза безопасности хранения данных возникает, если программа изменения прав пользователя не защищена от записи.
[ 7 ] Что следует предпринять программе обработки отказов в том случае, если в системе исчерпаны страницы памяти?
Системы смешанного типа со свопингом и подкачкой по запросу
Несмотря на то, что подкачка по запросу отличается гибкостью, возможна ситуация, когда сборщик страниц не сможет достаточно быстро освободить место в памяти из-за того, что все страницы принадлежат рабочему множеству процессов. Выход из этого в том, чтобы комбинировать подкачку по запросу и свопинг.
Когда ядро не может выделить процессу страницы памяти, оно возобновляет работу процесса подкачки и переводит процесс в состояние эквивалентное готовности к запуску будучи зарезервированным.
[ 8 ] К файлам терминалов обычно устанавливаются следующие права доступа
crw--w--w- 2 mjb lus 33,11 Oct 25 20:27 tty61 при входе пользователя в систему. То есть, чтение и запись разрешаются пользователю с именем "mjb", а остальным пользователям разрешена только запись. Почему?
Чтобы они не видели, что у нас на экране, но могли писать сообщения
[ 9 ] Какие функции UNIX доступны программисту для создания tcp-соединения? Чем протокол tcp отличается от udp?
connect, accept
Отличается тем, что
- создается виртуальный канал
- работа ведется не по тому порту, по которому приходит запрос
[ 10 ] Напишите сценарий для shell меняющий расширения в именах файлов текущего каталога '.c' на '.cc'
for i in *.c
do
mv $i ${i}c
done
