Portál AbcLinuxu, 7. května 2025 00:52

Dotaz: π-kalkul: Kdy se tiskárna může vypnout?

Josef Kufner avatar 24.1.2012 22:37 Josef Kufner | skóre: 70
π-kalkul: Kdy se tiskárna může vypnout?
Přečteno: 635×
Odpovědět | Admin
Přílohy:

Ahoj!

Narazil jsem na jeden problém, který je téměř stejný jako toto, jen by ho bylo mnohem obtížnější vysvětlit. Takže:


Mám server a k němu připojenou tiskárnu. K serveru je připojeno několik klientů a každý si chce vytisknout právě jeden dokument.

Tisk probíhá tak, že server předá klientovi adresu tiskárny, klient se připojí na získanou adresu a pošle dokument.

V době mezi získáním adresy a odesláním dokumentu může klient vytvořit nového klienta. Tedy je přidán klient připojený k serveru, který však nezná adresu tiskárny, ale ještě než původní klient odešle dokument, ji získá od serveru.

Otázka zní: Jak tiskárna pozná, že už se může vypnout?


V souboru otazka.png je nakreslen případ pro jednoho klienta. V intro.ps.gz je celý článek odkud pochází předloha k tomuto příkladu (strana 3). Skutečný řešený problém žadnou tiskárnu ani server s klienty neobsahuje, takže technické detaily ponechme stranou, přirovnání je to však velmi věrné.

Díky!

Hello world ! Segmentation fault (core dumped)

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.1.2012 09:54 NN
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napriklad tak, ze pocka 60 vterin na odezvu klienta ?

NN
Josef Kufner avatar 25.1.2012 14:15 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
A co když nějaký klient bude chtít tisknout o 1 sekundu později?

Je nutné odbavit všechny a také je nutné vypnout tiskárnu ihned, jakmile to je možné.

Jinak ten děj je ve skutečnosti řádově v desítkách až stovkách milisekund a počítadlo času není k dispozici.
Hello world ! Segmentation fault (core dumped)
25.1.2012 14:43 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
Já jsem z dotazu nějak nepochopil, co vlastně chcete řešit. Pokud jde jen o obecné řešení takovéhoto problému, pak je to přece triviální – počítadlo, které při požadavku na adresu tiskárny zvýší svůj stav o jedna, a při tisku dokumentu se zase o jedničku sníží. Když je na nule, tiskárna se může vypnout. Pak je to vhodné rozšířit o záznam času požadavku na adresu a časovač, který bude příliš staré záznamy mazat – aby se zajistilo odečtení i v případě, kdy klient sice požádá o adresu, ale pak kvůli nějaké chybě žádný dokument nepošle.
27.1.2012 14:23 Ash | skóre: 53
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
A ještě může klient po získání adresy vytisknout jen jeden dokument. Zadání každopádně nekompletní, pokud jde o analogii s tiskárnou.
Josef Kufner avatar 27.1.2012 15:05 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
Do zadání jsem dal jen ta omezení, která skutečně mám. Vše ostatní považuj za volitelné a změnitelné, či prostě doplň předpoklady, které uvažuješ.
Hello world ! Segmentation fault (core dumped)
27.1.2012 15:27 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
A proč vymýšlíš takovéto blbosti?

Tiskárnu nechám připojenou na server a normálně ji povolím aby uživatelé na ni tiskly.

V jakém pořadí přijdou tiskové úlohy v takovém se zařadí do fronty a vytisknou.

Prostě nechápu nějaké šachování s posíláním IP klientům.

A většina tiskáren se dá nastavit aby po X minutách nečinnosti se uspala.
27.1.2012 15:47 Ash | skóre: 53
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
Jenže v zadání právě žádná omezení nejsou. Pokud má být tiskárna schopna obsloužit jakýkoliv budoucí požadavek, nemůže se vypnout nikdy, protože neví, jestli její adresu v době kdy byla zapnutá někdo někomu nedal. Nebo se tato informace k tiskárně nějak propaguje?
Josef Kufner avatar 27.1.2012 16:56 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
Ta propagace je právě předmětem otázky.
Hello world ! Segmentation fault (core dumped)
27.1.2012 23:00 Ash | skóre: 53
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
No tak klient vždy když někomu předá adresu tiskárny o tom informuje i tiskárnu (informace X), a tiskárna se vypne až když nikdo její adresu nemá, přičemž je stanoven čas, po který maximálně může trvat ten přenos informace X. Nějaká fce typu "počkej n ms" je potřeba, bez toho to asi řešitelné není.
25.1.2012 14:20 Ash | skóre: 53
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Intro jsem nečetl, ale textové zadání a obrázek lze zjednodušit na:

Mám server a k němu připojenou tiskárnu. Jak tiskárna pozná, že už se může vypnout?

A i tam lze říct, že první věta je zbytečná :)
29.1.2012 17:24 l0gik | skóre: 22
Rozbalit Rozbalit vše Re: π-kalkul: Kdy se tiskárna může vypnout?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud jeden klient po získání adresy tiskárny může odeslat více dokumentů, není to řešitelné nikdy, respektive klient by musel tiskárně hlásit: "vypínám se" (a s tímto signálem pak zacházet jako s vytištěním dokumentu v úloze s jedním tiskem). A imho jediná cesta, jak to řešit, je, že server před odesláním adresy klientovi nejprve pošle tiskárně signál: dal jsem Tvoji adresu (a pokud přenos není zaručený, tak počká na potvrzení). Po tisku (popř. signálu: už tě nepotřebuji) si tiskárna tento čítač opět sníží a když je nulový, tak se vypíná.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.