Лекции по Операционным Системам. Ввиде html
Вид материала | Лекции |
38. Именованные каналы |
- Html динамический html, 177.06kb.
- Управление операционным риском в банковской деятельности, 76.24kb.
- Курс по операционным системам (на примере ос windows) Основан на учебном курсе Windows, 29.21kb.
- Практикума по операционным системам на основе ms windows, 75.74kb.
- Концепция www 5 Создание Web-страницы с помощью языка html 7 1 Язык html 7 Структура, 217.81kb.
- Программа для просмотра web-страниц, которая преобразует тэги html-документа в соответствующее, 47.68kb.
- Html, " onclick="return false">, 258.05kb.
- 1 Призначення html, 333.23kb.
- Реферат создание сайта на основе html, 60.66kb.
- Автоматически создает html версии документов при сканировании Интернета, 2049.64kb.
mknod filename p;
p — тип файла.
Работа с поименованным каналом производится также как с обычным файлом
(теми же системными вызовами), за исключением того, что реально на диске информация не сохраняется, а передаётся от процесса, вызвавшего запись, процессу, вызвавшему чтение.
В IPC содержится три пакета взаимодействия:
механизм сообщений;
- механизм распределения памяти;
- семафоры.
Механизм сообщений позволяет принимать и посылать потоки сформированных данных.
За передачу сообщений отвечают четыре системных вызова:
msg get — возвращает дескриптор сообщения;
msg clt — устанавливает параметры сообщений;
msg cnt — передаёт сообщение;
msg rcv — принимает сообщение.
- Механизм распределения памяти позволяет совместно использовать отдельные части виртуального адресного пространства.
shm get — создаёт новую область;
shm at — логически присоединяет;
shm dt — логически отсоединяет;
shm ctl — работает с параметрами области.
- Семафоры синхронизацию выполнения параллельных процессов. В лю.бой момент времени над семафором возможна только одна реализация.
sem get — создание набора семафоров;
sem ctl — управление этим набором;
sem op — работа со значениями
38. Именованные каналы
Файл имеющий своё место в Файловой системой.
mknode <имя файла> P1
тип файла(pipe)
c-символьное устройство
b-блочные устройства
Работа как с обыкновенными файлами.
Пример:
main() {int fd=open(“naca”,O_WRONLY); write(fd,”Hi”,3); close(fd); } $echo “Y0”>naca $cat naca | main() { char buf[16]; int fd=open(“naca”,O_ROONRY); need(fd,buf,3); printf(“%s”,buf); close(fd); } |
IPC
Более гибкое взаимодействие процессов, но в рамках одной системы.
Части пакета IPC:
1. Обмен сообщениями
2. Взаимодействие через общую память
3. Семафоры
1. msgget – получение дескриптора сообщения
msgctl – настройка параметров сообщения
msgsnd – передача
msgrev – приём
2. Позволяет совместно использовать отдельные части виртуального адресного пространства.
shmget – создаёт новую область
shmat – логически присоединяет
shmdt – отсоединяет
shmctl – настраивает
3.
Семафоры используются для синхронизации выполнения параллельных процессов.
Взаимная блокировка процесса.
i=2
i:=i+1 i:=3 i:=i+1
Семафорам необходима поддержка со стороны «железа».
P- «-1»
V- «+1»
Sockets
Взаимодействие через сеть по протоколам TCP, UDP.
39. Элементы распределённых систем
1. Повышение производительности.
2. Повышение надёжности
3. Для решения естественно- параллельных систем.
Архитектуры организации многопроцессорных ЭВМ
- Шинная
CPU2
CPU3
ОЗУ
CPU1
- master-slave
Один процессор работает в режиме ядра, обращая прерывания и выполняя системные функции.
Остальные работают в режиме пользователей(прикладные программы).
«-» не масштабируема(большое количество запросов на master – не успевает обрабатывать ).
- симметричная – все процессоры равны.
«-» производительность ограничивается пропускной способностью шины.
CPU1
CPU2
CPU3
ОЗУ
КЭШ
КЭШ
КЭШ
Проблема когерентности
- г
4CPU
шина
ОЗУ
Средства коммуникации
иперкубическое соединение
4
8 16
- транспьютер
- кластер
локальная сеть, выполняемая одну задачу
разделение вычислений на уровни: а) ОС
б) приложений
MPI (multi-programming interface)
Взаимодействие комплектующих процессов на разных компьютерах.
Пример:
main(argc,argv)
int argc, char ** argv;
{int me, size;
int SOME_TAG=0;
MPI_Status status;
MPI_Init (&argc, &argv) ;
MPI_Comm_rank(MPI_COMM_world, &me); //номер процесса
MPI_Comm_size (MPI_COMM_world, &size); //число вычисленных узлов
if (me%2==0) MPI_SEND(…, me+1, SOME_TAG,MPI_COMM_WORLD)
else
MPI_Recv(…,me-1, me+1, SOME_TAG,MPI_COMM_WORL,& status)
MPI_Find();
}