Комуникация в UNIX

Основната концепция за осъществяване на комуникацията се гради върху механизма гнездo (socket). Този механизъм дава общ интерфейс не само до програмните канали, които са основно средство за комуникация между процесите и които са локални в една машина, но и до мрежата. Гнездото е крайна точка на комуникацията. Управлението му става чрез системни извиквания. Гнезда се създават и унищожават динамично. При създаването на гнездо се връща дескриптор, който е в пространството на имената на файловите дескриптори. Дескрипторът се използва при установяване и освобождаване на връзка, при четене и запис на данни.
Има няколко типа гнезда, всяко поддържащо определен тип от мрежови услуги: 
  • потоков;
  • последователно пакетен;
  • дейтаграмен;
  • прозрачен. 
Синхронизация. 
Процесите трябва да не само да се изключват при работа с общи ресурси, но и трябва да синхронизират действието си във времето, като разменят информация. Минималната единица предавана информация е прост времеви сигнал. Пример за такъв е взаимодействие на процесите като “производител - потребител”, т.е. единия процес произвежда ресурс, а другия го използва - процесът - производител изработва информация, която записва в буфер, а процесът - потребител чете буфера. Тези действия се извършват асинхронно, поради различната скорост на работа на двата процеса, затова има опасност от запис на процеса - производител в пълен буфер, и съответно четене на процеса - потребител от празен буфер. За правилна работа двата процеса трябва да си обменят информация, за да синхронизират действията си. 
Семафори  - с въвеждането на семафори се избягва сложното и неефективно действие на командата TS. Въвеждат се две примитивни операции  P и V, които оперират на цели променливи, наречени семафори. Различават се двоични семафори (приемат стойности само 0 и 1) и общи (приемат цели, неотрицателни стойности).



Коментари: