|
Informatyka UJ forum Rocznik 2005 - czyli najlepsze forum w sieci
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Makros
pijak
Dołączył: 01 Gru 2005
Posty: 420
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Pią 11:38, 31 Mar 2006 Temat postu: kartkowka u mgr Kality |
|
|
Prosiłbym osoby które już takową kartkówkę pisały, o to by podzieliły się treścią zadań oraz swoimi przykładowymi rozwiązaniami...
Z góry Wielkie Dzięki...
|
|
Powrót do góry |
|
|
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
klakier
pijak
Dołączył: 08 Mar 2006
Posty: 81
Przeczytał: 0 tematów
|
Wysłany: Pią 23:30, 31 Mar 2006 Temat postu: Re: kartkowka u mgr Kality |
|
|
Makros napisał: | Prosiłbym osoby które już takową kartkówkę pisały, o to by podzieliły się treścią zadań oraz swoimi przykładowymi rozwiązaniami...
Z góry Wielkie Dzięki... |
i moze takie objasnienie ta szybkiego o co chodzi w tcy semaforach :) itp
musze sobie jakąs kisiazke zallatwic a do tego czasu moze ktos to objasni
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Rogal
Zjeb z kaszanką
Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów
Skąd: koło podbiegunowe
|
Wysłany: Sob 0:06, 01 Kwi 2006 Temat postu: |
|
|
Do zrobienia dwa zadania, pierwsze z semaforów drugie z Ady.
Pierwsze zadanie to semafory. Były 3 wątki, w każdym wywoływana była inna procedura, tj. w watku ThreadA procedura A, w watku ThreadB procedura B, w watku ThreadC procedura C. I trzeba było tak zadeklarować i wstawić semafory (binarne lub liczbowe - jak się chce) żeby był spełniony warunek trójkąta dla ilości wywołań tych procedur. Mówiąc po polsku: żeby A było wykonane nie więcej razy niż w sumie B+C+1, B żeby nie było wykonane więcej razy niż w sumie A+C+1, a C w sumie nie więcej raz niż A+B+1.
Ja zrobiłem to deklarując 3 semafory liczbowe: SA, SB, SC - z początkowymi wartościami 1, tj. każdy z nich ma na początku jedno wolne miejsce. I w każdym wątku na początku zajmujemy miejsce dla danego semafora, wywołujemy daną procedurę i zwalniamy 2 pozostałe semafory, tj.
ThreadA {
SA.S();
A;
SB.V();
SC.V();
}
analogicznie ThreadB, ThreadC.
Ale można to było też zrobić dużo prościej, cyklicznie na semaforach binarnych. Wtedy ilości wywołań poszczególnych procedur byłyby równe z dokładnością do 1.
Drugie zadanie (Ada) to trochę więcej pisania.
Ogólnie była to wariacja na temat problemu producenci - konsumenci.
Było 3 producentów, każdy robił cegłę o masie odpowiednio 1, 2, 3 i kładł na taśmę. Taśma miała określoną pojemność ilościową i masową, tj. nie mogło wejść za dużo cegieł i nie mogły być one w sumie za ciężkie. I była ciężarówka która odbierała cegły (konsument) - też miała określoną pojemność (ale tylko masową). Pojemność nie mogła być przekroczona. Cegły ładujemy do ciężarówki w takiej kolejności w jakiej pojawiły się na taśmie. W momencie, gdy cegła przekroczy limit pojemności ciężarówki, ciężarówka jej nie zabiera - cegła zostaje na taśmie, a ciężarówka odjeżdża i w jej miejsce pojawia się nowa.
W zasadzie trzeba było napisać 4 taski: 3 analogiczne dla producentów: przy pomocy select while sprawdzamy, czy możemy położyć cegłę (pojemność taśmy) - jeśli tak to robimy accept nazwa_procedury do
.
. // tutaj zwiększamy odpowiednie zmienne i dodajemy cegłę do kolejki
.
end nazwa procedury
i 1 task dla konsumenta (ciężarówki) - dostępny przez while tylko jeśli taśma jest niepusta - który sprawdza czy ciężarówka się nie przepełni, jeśli tak to zwaca 0, jeśli nie to zdejmuje cegłę z taśmy, zmienia odpowiednie zmienne i zwraca masę cegły.
Generalnie też możecie się spodziewać, że z semaforami będziecie mieli kilka wątków z procedurami i jakimś warunkiem na ilość wykonań poszczególnych procedur w poszczególnych wątkach.
A z Ady też się można spodziewać jakichś problemów producent - konsumet, czytalnicy - pisarze czy co tam jeszcze było na zajęciach. Znajomość select while niezbędna.
To chyba tyle.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
exeman
Mistrz grilla
Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów
Skąd: znienacka
|
Wysłany: Sob 0:24, 01 Kwi 2006 Temat postu: |
|
|
Cholera, a co to ADA, jak to sie w tym pisze? :O
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
dzendras
Germański oprawca
Dołączył: 07 Mar 2006
Posty: 1326
Przeczytał: 0 tematów
Skąd: Chorzów
|
Wysłany: Sob 14:55, 01 Kwi 2006 Temat postu: |
|
|
Składnią przypomina upośledzonego Pascala...
Ale fakt faktem, że wielowątkowe aplikacje tworzy się w nim szybciutko.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Madras
Omylny Admin
Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów
Skąd: Z Pokoju :]
|
Wysłany: Sob 14:58, 01 Kwi 2006 Temat postu: |
|
|
A dlaczego zakładasz, że w Pascalu nie tworzy się ich szybciutko? ;p
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Rogal
Zjeb z kaszanką
Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów
Skąd: koło podbiegunowe
|
Wysłany: Sob 20:17, 01 Kwi 2006 Temat postu: |
|
|
exeman napisał: | Cholera, a co to ADA, jak to sie w tym pisze? :O |
Wszystko co może być potrzebne z Ady jest na stronie dr Kality, w jego notatkach do ćwiczeń. Poza tym, w zasadzie poza konstrukcją select, reszta może być w pseudokodzie.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Fen
zielony żul
Dołączył: 22 Lut 2006
Posty: 946
Przeczytał: 0 tematów
Skąd: Bochnia
|
Wysłany: Nie 11:06, 02 Kwi 2006 Temat postu: |
|
|
jeśli chodzi o Adę to rzeczywiście jest to bardzo fajny język, ale nie ma za wiele czasu aby się nauczyć w nim cokolwiek robić ;/ Mam nadzieję, że uda mi sie coś tego języka nauczyć do środy na kartkówkę :)
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Makros
pijak
Dołączył: 01 Gru 2005
Posty: 420
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Wto 15:36, 04 Kwi 2006 Temat postu: |
|
|
Madras napisał: | A dlaczego zakładasz, że w Pascalu nie tworzy się ich szybciutko? ;p |
A ja tam nie widze takiego założenia... To, że w Adzie pisze się je szybko, nie oznacza, że w innym języku programowania pisze się to powoli i źle...
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
::Reksio::
pijak
Dołączył: 01 Kwi 2006
Posty: 174
Przeczytał: 0 tematów
|
Wysłany: Śro 18:57, 05 Kwi 2006 Temat postu: |
|
|
..A teraz coś dla wszystkich, którzy szukają złotego środka na naszą kochaną ADĘ.. :D Znalazłem przypadkiem, ale tak to już jest, że przypadki chodzą po ludziach..:] Gorąco zachęcam do lektury..;) W końcu wszyscy dzielimy te same troski.. (..Czyżby objaw współbieżności..?:D )
[link widoczny dla zalogowanych]
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Makros
pijak
Dołączył: 01 Gru 2005
Posty: 420
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Śro 19:02, 05 Kwi 2006 Temat postu: |
|
|
Rogal napisał: | Ja zrobiłem to deklarując 3 semafory liczbowe: SA, SB, SC - z początkowymi wartościami 1, tj. każdy z nich ma na początku jedno wolne miejsce. |
A czy to nie działa jak semafor binarny...?! W końcu tylko jeden wątek może wejść...
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
::Reksio::
pijak
Dołączył: 01 Kwi 2006
Posty: 174
Przeczytał: 0 tematów
|
Wysłany: Śro 19:04, 05 Kwi 2006 Temat postu: |
|
|
..Nawiasem mówiąc (czego nie zauważyłem wcześniej..:P), w linku który umieściłem na forum jest zawarty inny bardzo ciekawy link.. OBSZERNY PODRĘCZNIK DO ADY W CAŁOŚCI PO POLSKU!..:D
[link widoczny dla zalogowanych]
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Makros
pijak
Dołączył: 01 Gru 2005
Posty: 420
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Śro 20:10, 05 Kwi 2006 Temat postu: |
|
|
Rogal napisał: | Ja zrobiłem to deklarując 3 semafory liczbowe: SA, SB, SC - z początkowymi wartościami 1, tj. każdy z nich ma na początku jedno wolne miejsce. I w każdym wątku na początku zajmujemy miejsce dla danego semafora, wywołujemy daną procedurę i zwalniamy 2 pozostałe semafory, tj.
ThreadA {
SA.S();
A;
SB.V();
SC.V();
}
analogicznie ThreadB, ThreadC. |
Nie chce martwić... ale czy to nie jest źle..?!
Popatrzmy na to tak... Istnieje szansa, że wątki zachowają się w ten sposób...
Wchodzimy do Thread A (zamykamy SA, robimy A, otwieramy SB,SC), teraz watek idzie do Thread B (zamyka SB, robi B, otwiera SA,SC), no i teraz znów może iść do Thread A , a potem znów do Thread B... i tak w kolko... w ten sposób C nie wykona się ani razu... :?
Chyba, że mój tok rozumowania jest zły...
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
hansu
Nieomylny Admin
Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów
Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?
|
Wysłany: Śro 21:51, 05 Kwi 2006 Temat postu: |
|
|
Nie jest zle. Bo wtedy nA i nB beda sie roznic o co najwyzej 1 a nC bedzie 0. Czyli beda spelniac ten warunek "prawie" trojkata ;)
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Makros
pijak
Dołączył: 01 Gru 2005
Posty: 420
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Śro 22:29, 05 Kwi 2006 Temat postu: |
|
|
hansu napisał: | Nie jest zle. Bo wtedy nA i nB beda sie roznic o co najwyzej 1 a nC bedzie 0. Czyli beda spelniac ten warunek "prawie" trojkata ;) |
Aaaa.... Bo to jest warunek "prawie" trójkąta... a nie normalnie po Bożemu trójkąta.... ok... teraz wszystko się zgadza...
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Rogal
Zjeb z kaszanką
Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów
Skąd: koło podbiegunowe
|
Wysłany: Śro 23:29, 05 Kwi 2006 Temat postu: |
|
|
Po bożemu to by się trójkąta nie dało, bo coś się musi najpierw wykonać (np. A) - i po tym wykonaniu masz nA=1, nB=nC=0 - nie ma trójkąta.
Więc ten warunek jest z dokładnością do 1.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Makros
pijak
Dołączył: 01 Gru 2005
Posty: 420
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Czw 15:06, 06 Kwi 2006 Temat postu: |
|
|
A co było w innych grupach... Słyszałem coś o pisarzach i czytelnikach oraz o tym że n wątków ma najpierw wykonać zadanie A, a potem zadanie B... Mógłby to ktoś z Was bardziej skonkretyzować? Jak te zadania wyglądały? i najlepiej jak należało je rozwiązać... :)
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Skrobocik
[SKROBORANGA]
Dołączył: 29 Lis 2005
Posty: 2958
Przeczytał: 0 tematów
Skąd: Skarżysko , Kraków
|
Wysłany: Czw 18:02, 06 Kwi 2006 Temat postu: |
|
|
Ja słyszałem, że te procesy to były takie kombajny, co każdy miał w sobie zadanie A i zadanie B. Problem polegał na tym, że najpierw musiały zostać wykonane wszystkie zadania A, a dopiero potem B. A co do tych pisarzy, to podobno coś z semaforkami, ale nic konkretnego nie kojarzę
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Spectro
Mistrz grilla
Dołączył: 09 Mar 2006
Posty: 2306
Przeczytał: 0 tematów
Skąd: Kurdwanów
|
Wysłany: Czw 20:47, 06 Kwi 2006 Temat postu: |
|
|
U Moczurada było o czytelnikach i pisarzach (a także o i-żercach :P ) w kontekście ekranów, nie semaforów.
@oinopion: Ekran, monitor jeden pies :P . Przynajmniej dla takiego laika w tych sprawach jakim jestem ja (przynajnmiej dopóki nie zacznę się uczyć na kolosa).
Ostatnio zmieniony przez Spectro dnia Czw 21:39, 06 Kwi 2006, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|