SoP2-intro

A visually engaging illustration representing concepts of inter-process communication, with elements like message queues, processes, and data flow, all in a modern and techy style.

Test Your Knowledge on POSIX Message Queues

Are you ready to dive deep into the world of POSIX message queues? This quiz will challenge your understanding of message queue concepts and their applications in inter-process communication.

Join us for a comprehensive assessment, where you'll encounter:

  • 18 challenging questions
  • Multiple-choice answers to enhance your critical thinking
  • A chance to improve your knowledge of message queuing principles
18 Questions4 MinutesCreated by LearningScribe274
Wywołanie mq_open("\queue1",O_CREAT,mod,attr) może zwrócić
Zupełnie nową pustą kolejkę
Istniejącą pustą kolejkę
Zupełnie nową nie pustą kolejkę
Istniejącą nie pustą kolejkę
Kiedy pojawienie się danych w kolejce nie wywoła ustawionej notyfikacji:
Gdy jakiś proces czeka na dostępność danych w kolejce (czeka na mq_receive)
Gdy kolejka jest nie pusta
Gdy kolejka jest pusta I nikt z niej akurat nie czyta
Gdy kolejka jest pełna
Prawidłowy argument nr. 3 (msg_len) funkcji mq_send może przyjąć wartość:
Równą atrybutowi mq_msgsize kolejki
Większą od atrybutu mq_msgsize kolejki jeśli tylko wiadomość mieści się w pamięci zarezerwowanej dla kolejki
Zero
Mniejszą od atrybutu mq_msgsize kolejki
Kolejki komunikatów POSIX można użyć do komunikacji:
Jeden nadawca do wielu odbiorców gdzie każdy z tych wielu otrzyma swoją kopię wiadomości
Jeden nadawca do wielu odbiorców gdzie tylko jeden z tych wielu otrzyma wysłaną wiadomość
Jeden nadawca do jednego odbiorcy
Wielu nadawców do wielu odbiorców gdzie tylko jeden z tych wielu odbiorców otrzyma wysłaną wiadomość
Poprzez wywołanie mq_notify można:
Anulować poprzednią notyfikację pod nawet jeśli była ustawiona przez inny proces
Anulować poprzednią notyfikację pod warunkiem, że była wykonana przez ten sam proces
Zmienić istniejącą notyfikację nawet jeśli pochodzi ona z innego procesu
Dodać notyfikację do tych już istniejących
Pojedynczą kolejkę POSIX można użyć do:
Komunikacji jednostronnej pomiędzy dwoma wątkami
Komunikacji jednostronnej pomiędzy dwoma procesami
Implementacji bardzo limitowanego magazynu danych który jest dostępny dla wielu programów I którego czas życia nie przekracza restartu systemu operacyjnego
Implementacji bardzo limitowanego magazynu danych który jest dostępny dla wielu programów I którego czas życia nie przekracza czasu życia programu który utworzył kolejkę
Jakie mogą być rozmiary I ilość komunikatów jakie pomieści w sobie kolejka
Komunikatów może maksymalnie 32, żaden nie może przekroczyć 4kb czyli jednej strony pamięci
Początkowy maksymalny rozmiar komunikatów jest ustalany podczas tworzenia kolejki, może być potem zmieniony za pomocą funkcji mq_setattr
Początkowa maksymalna ilosć komunikatów jest ustalana podczas tworzenia kolejki, może być potem zmieniona za pomocą funkcji mq_setattr
Ilość komunikatów jest ustalana podczas tworzenia kolejki, potem nie może to być zmienione
Użycie lub brak flagi O_NONBLOCK w wywołaniu mq_open:
Ma wpływu na odczyt z kolejki gdy ta jest pełna
Ma wpływ na odczyt z kolejki gdy ta jest pusta
Ma wpływ na zapis do kolejki gdy ta jest pełna
Ma wpływu na zapis do kolejki gdy ta jest pusta
W kolejce znajdują się tylko dwie wiadomości M1 I M2 (dodane w tej kolejności) o priorytetach równych 3 za pomocą funkcji mq_send dodajemy trzecią wiadomość M3 o priorytecie 4, wypisująć od początku kolejki (czyli na początku od lewej wypisujemy to co będzie pierwsze zdjęte z kolejki) otrzymamy:
M3,M1,M2
M2,M1,M3
M3,M2,M1
M1, M2,M3
Funkcja mq_unlink
Odłącza proces od kolejki po czym ją kasuje natychmiast
Kasuje kolejkę bez odłączania procesów już podłączonych do kolejki
Zamyka dostęp do kolejki bez jej kasowania
Kasuje identyfikator kolejki w systemie bez wpływu na podłączone procesy I działanie samej kolejki dla tychże
Jakie parametry nowej kolejki (poza nazwą) należy określić podczas jej tworzenia?
Nieprzekraczalny rozmiar minimalny każdej z wiadomości jaką będziemy oprzesyłać
Nieprzekraczalny rozmiar maksymalny każdej z wiadomości jaką będziemy oprzesyłać
Ilość wiadomości jakie muszą zmieścić się w kolejce
Żadnych podać nie możemy (wywołanie mq_open ma tylko 2 argumenty), każda kolejka jest tworzona z domyślnymi parametrami, które można później zmodyfikować poprzez wywołanie mq_setattr
Jak szybko I skutecznie może zostać powiadomiony zajęty wyłącznie długotrwałym odczytem danych proces o fakcie pojawienia się wiadomości w kolejce:
Poprzez dowolny mechanizm komunikacji między procesowej o ile zrobi to wątek uruchomiony w ramach powiadomienia generowanego przez kolejkę POSIX
Poprzez sygnał dostarczony (i obsłużony) bezpośrednio do niego (przerwanie read)
Nie może, te dane będzie musiał przetworzyć inny wątek lub funkcja obsługi sygnału
Przez zmianę zmiennej globalnej
Czy kolejki mogą działać tylko w trybie odczytu (bez możliwości zapisu) I jeśli tak to kiedy można zmienić tryb działania kolejki zgodnie ze standardem POSIX?
Kolejki zawsze są w trybie odczytu I zapisu bez możliwość zmiany
Można zmienić tryb działania kolejki za pomocą funkcji mq_setattr, należy podać flagę O_RDONLY
Tryb działania kolejki jest ustalany podczas jej tworzenia a nie podczas jej otwierania
Można zmienić tryb działania kolejki podczas jej otwierania, należy podać flagę O_RDONLY
Jeśli podamy jako 3 (msg_len) argument mq_send wartość inną od deklarowanej wielkości wiadomości w kolejce to:
Jeśli tylko wiadomość mieści się w pamięci zarezerwowanej dla kolejki to operacja się powiedzie
Jeśli będzie to różna wartość od atrybutu mq_msgsize kolejki to operacja się nie powiedzie
Jeśli będzie to mniejsza wartość od atrybutu mq_msgsize kolejki to operacja się nie powiedzie
Jeśli będzie to większa wartość od atrybutu mq_msgsize kolejki to operacja się nie powiedzie
Funkcja mq_open pozwala tworzyć nowe kolejki, które można nazywać:
Dowolnym zestawem znaków
Nazwa kolejki powinna się zaczynać od \ , brak tego znaku nie musi być obsługiwany w danej implementacji
W nazwie może być co najwyżej jeden znak \ więcej może nie być obsługiwane w danej implementacji
W nazwie nie może być znaku \
W razie otrzymania notyfikacji możemy się spodziewać w kolejce:
Dokładnie jednej wiadomości
Co najmniej jednej wiadomości
Co najwyżej jednej wiadomości
Braku wiadomości w kolejce
Czwarty argument funcki mq_send (msg_prio) służy do:
Ustala pozycję nowej wiadomości w kolejce, im niższy priorytet tym wiadomość musi znaleźć się bliżej początku kolejki
Ustala pozycję nowej wiadomości w kolejce, im wyższy priorytet tym wiadomość musi znaleźć się bliżej początku kolejki
Określania jak szybko (w milisekundach) należy dostarczyć wiadomość do odbiorcy, im niższy priorytet tym mniej milisekund to zajmie
Określania jak szybko (w milisekundach) należy dostarczyć wiadomość do odbiorcy, im wyższy priorytet tym mniej milisekund to zajmie
Kierunek komunikacji w kolejce POSIX:
Realizowanie zarówno zapisu jak I odczytu na tej samej kolejce jest łatwe dzięki umiejętnemu zastosowaniu priorytetów wiadomości - każdy czyta tylko wiadomości o podanym priorytecie na co pozwala funkcja mq_recv, nie ma zagrożenia, że odczytamy wiadomości o innych priorytetach
Realizowanie zarówno zapisu jak I odczytu na tej samej kolejce jest możliwe ale uciążliwe ze względu na problem odczytywania swoich własnych wiadomości a nie tylko wiadomości innych nadawców
Nie jest narzucony przez specyfikację może być zmieniony, można otwierać kolejki w trybie O_RDWR
Jest z góry narzucony I określony poprzez podanie odpowiednich flag podczas otwarcia O_RDONLY lub O_WRONLY
{"name":"SoP2-intro", "url":"https://www.quiz-maker.com/QPREVIEW","txt":"Are you ready to dive deep into the world of POSIX message queues? This quiz will challenge your understanding of message queue concepts and their applications in inter-process communication.Join us for a comprehensive assessment, where you'll encounter:18 challenging questionsMultiple-choice answers to enhance your critical thinkingA chance to improve your knowledge of message queuing principles","img":"https:/images/course1.png"}
Powered by: Quiz Maker