-
Data: 2009-05-20 08:55:46
Temat: Re: jak napisać szybki program
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 19 Maj, 23:08, Michoo <m...@v...pl> wrote:
> > char my_buffer[my_size];
>
> > Niezależnie od metody dane muszą być przetransferowane z/do my_buffer.
>
> W przypadku dobrej implementacji (na gruncie czystej teorii - nie chce
> mi się teraz zastanawiać gdzie to jak jest zaimplementowane - chodzi mi
> o sam fakt, że jest to jedyny zysk jaki można osiągnąć) i/o kopiowanie
> danych na drodze dysk->ram, bufor karty sieciowej-> ram, etc powinno być
> robione "na zewnątrz" procesora (i to w trybie nie odcinającym go od szyny).
Tak i jest to możliwe zarówno przy synchronicznym jak i
asynchronicznym I/O.
Różnica między nimi jest tylko w tym, że pierwszy czeka na zakończenie
procesu a drugi jest "powiadamiany".
Oczywiście można sobie też wyobrazić, że w jednym z przypadków system
korzysta z dodatkowych buforów i wykonuje dodatkowe kopie danych, ale
to jest kwestia jakości implementacji i nie ma związku z samym
aspektem synchro/asynchro.
Dlatego nie ma sensu twierdzić, że AIO daje jakiś zysk w kontekście
zarządzania buforami.
> synchroniczne i/o: program robi wywołanie systemowe "czytaj" system
> wywala wątek z kolejki procesów gotowych i zleca kontrolerowi transfer,
> po otrzymaniu przerwania od kontrolera proces wraca do kolejki i w
> najbliższym czasie wraca z wywołania
Tak.
> asynchroniczne i/o: program robi wywołanie systemowe "czytaj" system
> zleca kontrolerowi transfer, wątek powraca z wywołania i może pracować.
> po otrzymaniu przerwania od kontrolera system powiadamia wątek o
> zakończeniu operacji.
To duży skrót myślowy [*], ale przyjmijmy roboczo, że tak jest.
Trwa to dokładnie tyle samo (bo dysk się kręci tak samo szybko).
[*] Skrót myślowy polega na tym, że w językach sekwencyjnych nie ma
czegoś takiego jak "powiadamianie wątku". Są dwa możliwe mechanizmy:
1. Sygnalizacja (notify) jakiegoś wskazanego obiektu
synchronizacyjnego. Pozwala to właściwym wątkom roboczym zorientować
się (blokująco bądź nie), że operacja się zakończyła.
2. Wywołanie przez callback - to wywołanie odbywa się w *innym* wątku,
z osobnym stosem, przynajmniej koncepcyjnie (tu wliczamy wszystko od
sygnałów w C po AsyncHandler w Javie). Zwykle jedyna rzecz jaką można
w takim callbacku sensownie zrobić to... ręcznie punkt 1.
To żadna magia, dlatego też w ostatecznym rozrachunku SIO i AIO
mogą robić to samo, z dokładnością do ilości *śpiących* wątków
userlandu. W szczególności istnieją implementacje, które robią SIO
jako nakładkę (!) na AIO albo odwrotnie. To właśnie sprawia, że AIO
nie jest cudownym rozwiązaniem a ponieważ jest intruzywne i słabo
komponowalne (nie da się go zastosować do *istniejącego* kodu), to
powinno być stosowane... ostrożnie.
> W drugim przypadku wątek może pracować w trakcie kopiowania danych.
Czyli cały czas mówimy o użyciu współbieżności w celu lepszego
wykorzystania zasobów sprzętowych. Powtórzę: to nie jest wyłączna
cecha AIO. Współbieżność jest narzędziem bardziej ogólnym.
--
Maciej Sobczak * www.msobczak.com * www.inspirel.com
Następne wpisy z tego wątku
- 20.05.09 12:32 A.L.
- 20.05.09 17:44 Marteno Rodia
- 20.05.09 18:23 Michoo
- 20.05.09 18:31 Marcin 'Qrczak' Kowalczyk
- 21.05.09 02:23 Mariusz Marszałkowski
- 21.05.09 03:26 Mariusz Marszałkowski
- 21.05.09 03:51 Mariusz Marszałkowski
- 21.05.09 03:57 Mariusz Marszałkowski
- 21.05.09 06:35 Jacek Czerwinski
- 21.05.09 09:50 Paweł Kierski
- 21.05.09 13:20 Marcin 'Malcom' Malich
- 21.05.09 16:07 Mariusz Marszałkowski
- 21.05.09 16:58 Marcin 'Malcom' Malich
- 21.05.09 20:20 Mariusz Marszałkowski
- 21.05.09 21:04 Jacek Czerwinski
Najnowsze wątki z tej grupy
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-06-22 Re: Czy Bodnar to prawny Makiawel? [Prawo "w likwidacji"]
- 2025-06-21 Sąd Najwyższy ukarał "karą porządkową" 3_000 PLN za protest wyborczy z "wulgaryzmami osobowymi"
- 2025-06-21 Gdzie kupowac aku?
- 2025-06-21 Listwa przypodłogowa pod kominek
- 2025-06-21 Czy warto miec wy....anego na sucho premiera?
- 2025-06-21 Warszawa => Analityk IT (projekty z obszaru telco) <=
- 2025-06-21 Warszawa => Operations Support Systems (OSS) Team Leader <=
- 2025-06-21 Warszawa => Scrum Master <=
- 2025-06-21 Warszawa => Senior Account Manager <=
- 2025-06-20 5w30 zamiast 0w30
- 2025-06-19 Klima i samodzielne uzupełnienie
- 2025-06-20 Upgrade z i7-6xxx
- 2025-06-19 Czy ołowiane perowsiki, drukowane na folii to był fake ?
- 2025-06-20 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-06-20 Gdynia => Sales Executive / KAM <=