Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры ос.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
623 Кб
Скачать
☆

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 содержится три пакета взаимодействия:

  1. механизм сообщений;

  2. механизм распределения памяти;

  3. семафоры.

  1. Механизм сообщений позволяет принимать и посылать потоки сформированных данных.

За передачу сообщений отвечают четыре системных вызова :

msg get — возвращает дескриптор сообщения ;

msg clt — устанавливает параметры сообщений ;

msg cnt — передаёт сообщение ;

msg rcv — принимает сообщение.

  1. Механизм распределения памяти позволяет совместно использовать отдельные части виртуального адресного пространства.

shm get — создаёт новую область;

shm at — логически присоединяет ;

shm dt — логически отсоединяет;

shm ctl — работает с параметрами области.

  1. Семафоры синхронизацию выполнения параллельных процессов. В лю.бой момент времени над семафором возможна только одна реализация.

sem get — создание набора семафоров ;

sem ctl — управление этим набором ;

sem op — работа со значениями.

“+”

1) возможность запрашивать информацию о состоянии записи

2) Изменять запись

3) Удалять

4) Устанавливать права доступа

(27) Семафоры и блокировка файлов

В IPC содержится три пакета взаимодействия:

  1. механизм сообщений (позволяет принимать и посылать потоки сформированных данных)

  2. механизм распределения памяти (позволяет совместно использовать отдельные части виртуального адресного пространства)

  3. семафоры (синхронизацию выполнения параллельных процессов. В любой момент времени над семафором возможна только одна реализация)

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