-
Path: news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.internet
ia.pl!not-for-mail
From: "neuron" <n...@n...com.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: COM Windows opó?nienie
Date: Wed, 10 Feb 2010 17:29:38 +0100
Organization: Netia S.A.
Lines: 100
Message-ID: <hkun3c$rqs$1@mx1.internetia.pl>
References: <hkrd9e$avv$1@nemesis.news.neostrada.pl>
<i...@4...com>
NNTP-Posting-Host: 81.219.137.63
X-Trace: mx1.internetia.pl 1265819564 28508 81.219.137.63 (10 Feb 2010 16:32:44 GMT)
X-Complaints-To: a...@i...pl
NNTP-Posting-Date: Wed, 10 Feb 2010 16:32:44 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350
X-RFC2646: Format=Flowed; Original
X-Tech-Contact: u...@i...pl
X-Newsreader: Microsoft Outlook Express 6.00.2900.3598
X-Priority: 3
X-Server-Info: http://www.internetia.pl/news/
X-MSMail-Priority: Normal
Xref: news-archive.icm.edu.pl pl.misc.elektronika:581847
[ ukryj nagłówki ]
Użytkownik "J.F." <j...@p...onet.pl> napisał w wiadomości
news:isd2n5la5d1lbjg00c8088ptm6hoofjl6v@4ax.com...
> On Tue, 09 Feb 2010 11:15:27 +0100, Elektrolot wrote:
>>Czy ktoś z szanownych grupowiczów orientuje się ile mogą wynosić
>>opóźnienia przy zapisie i odczycie
>>buforów COMa pod Windows XP na PC 1GHz? Przykładowo zapisuję 5 bajtów i
>>czekam na odbiór 5 bajtów w
>>pętli, prędkość 9600 bodów. Program pisany z wykorzystaniem najprostszych
>>komend API. Zdaję sobie
>>sprawę, że zależy to od wielu czynników, chodzi mi bardziej o orientacyjny
>>zakres.
>
> wysylka 5 bajtow to 5ms, urzadzenie musi przetworzyc, odeslac - czyli
> kolejne 5ms.
> A dalej mamy schody: nowoczesny port zglosi przerwanie nie wiadomo
> kiedy, bo odczeka chwile zanim uzna za stosowne. Wszystko bedzie
> wielozadaniono, wiec Windows dorzuci swoje. Dostep do portu portu to
> jest zatrzymanie procka na ok 1us - wiec tych us uzbiera sie okolo 20.
> Nie jest to duzo, bo w ciagu 10ms jednak, no ale procesorek moglby
> ladnych pare tysiecy rozkazow wykonac w tym czasie.
>
> Chyba ze port jakis inny niz "standardowy COM".
>
To wszytsko nie tak. Zacznijmy od tego co to jest system wielozadaniowy z
wywlaszczeniem - a takim jest xp.
Wszystko co dzieje sie w systemie to procesy. Program to conajmniej jeden
proces ale moze skladac sie z wielu procesow - tzw watkow.
Sa tez procesy systemowe - np sterowniki urzadzen, procesu uslug itp. No i
glowny proces jadra systemu.
Procesy moga byc zawieszone albo nie - czyli dzialaja teraz. Jednoczesnie.
Zaraz... moment ... jak to jednoczesnie - przeciez mamy tylko jeden procesor
ktory robi jeden i tylko jeden ciag rozkazow maszynowych w danej chwili !!!!
(pomijam procesor 2 rdzeniowy i pewne zaawansowane mechanizmy pozwlajace na
sprzetowa, wspolbiezna realizacje czesci kodu - to w tych rozwaznaiach jest
nieistotne)
Ano jest w systemie mechanizm niemaskowanego przerwania ktory co pewien czas
liczony w us przerywa realizacje aktualnego procesu, oddaje sterowanie
procesowi jadra, jadro "zamraza" obraz przerwanego procesu zapisujac go na
stos i "odmraza" inny proces przekazujac mu sterowanie.
Poniewaz nie ma mozliwosci uruchomienia zadnego procesu tak aby po
"cyknieciu" zegara systemowego nie zoastal nagle i bezwarunkowo przerwany to
mowimy ze system wywlaszcza zadania - mija kilka mikrosekund i bach proces
pala w glowe - bez wzgledu co on w tym momencie robi. Dla przykladu -
systemem bez wywlaszczenia byl Windows 3.x - tam mozna bylo zaznaczyc ze
proces nie moze byc przerwany - ale gdy proces sie wykrzaczyl to caly system
stawal w miejscu.
Powiedzialem ze system po zawieszeniu procesu i odeslaniu go na stos
uruchamia nastepny. I tu jest diabel pochowany ;) Jaki proces? Nastepny w
kolejce procesow. Tyle ze ta kolejka jest dynamicznie modyfikowana i jesli w
systemie mamy 120 procesow (menadzer zadan - procesy - kolumna watki - jak
pisze te slowa to mam tam ich okolo 300) to wcale nie oznacza ze kazdy
proces dostanie 1/120 czasu procesora.
Niektore procesy sa zawieszone i wypadaja z kolejki, inne maja niski
priorytet i sa wykonywane co iles tam obiegow a jeszcze inne - te systemowe
maja "chody" i sie ciagle wciskaja poza kolejnoscia. Jakie sa kryteria to
penie juz nawet w microsofcie nie wiedza ;)
Wrócmy wiec o pytanie o opznienie w odczycie / zapisie buforu com. To
pytanie trzeba podzielic na dwa pytania - jaki jest czas zapsu do bufora
i jaki jest czas, a wlasciwie co jaki czas program moze z tych danych
skorzytac.
Powiedzmy ze urzadzenie wysyla do komputera ciag bajtow Sterownik odebiera
bajt i dopisuje do kolejki (bufora). Kiedy jadro "odmrozi" proces sterownika
portu ten wysyla komunikat (sformuowanie wysyla komunikat jest tu
uproszczeniem, jak wszystko zreszta) do innych procesow ze w buforze sa
jakies bajty do odbioru. Kiedy głowny proces Twojego programu powraca z
zaswiatow to odczytuje komunikat i jesli dajmy na to uzywasz komponentu
TCport to uruchomi on procedure obslugi zdarzenia OnChar która sygnalizuje
ze w buforze jest tyle to a tyle bajtow do odczytania - ale uwaga - tyle
było gdy ostatni raz system dopuscil do procesora proces sterownika. Wtedy
Ty mozesz wysylac do bufora swoje znaki - ale po pierwsze nie wiesz ile
razy i na jak długo podczas operacji przygotowania odpowiedzi system pozbawi
Cie swiadomosci zanim uda sie wyslac te znaki do bufora (po glacy dostajesz
co kilkanascie - kilkadziesiat INSTRUKCJI MASZYNOWYCH !! ), po wtore nie
jest wcale powiedziane ze proces obslugi portu dopcha sie za 100mikro
sekund - moze to byc za pol sekundy ;)
Dlatego w windowszie nie da sie takiej kalkulacji wykonac. Koniec, kropka.
Prgram stacji zbierania danych z mojego Golema wysyla i odebiera
symultanicznie pakiety dlugosci ok 30bajtow i przy predkosci 9600 wymienia
ok 30 pakietow na sekunde ale czasami, co widac po diodach monitorujacych
transmisje przysypia sobie na ułamek sekundy na swierzym komputerze i na 2,3
sekundy na moim roboczym ktory jest jednym wielkim smietniskiem roznych
procesow ;)
Inaczej jest w systemach czasu rzeczywistego - tam programista ma wplyw na
kolejkowanie procesow i moze na kilkadziesiat instrukcji zablokowac
wywlaszczenie aktualnie wykonywanego.
wojtek
www.neuron.com.pl
CMMS Maszyna
Golem OEE
Hall2007
Następne wpisy z tego wątku
- 11.02.10 12:13 k...@w...pl
- 11.02.10 12:15 J.F.
- 11.02.10 12:33 k...@w...pl
- 11.02.10 15:13 neuron
- 12.02.10 12:43 J.F.
- 15.02.10 09:16 k...@w...pl
Najnowsze wątki z tej grupy
- Obcinaczki z łapaczem
- termostat do lodowki
- SEP 1 kV E
- Aku LiPo źródło dostaw - ktoś poleci ?
- starość nie radość
- Ataki hakerskie
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
Najnowsze wątki
- 2024-12-16 Warszawa => Programista Dynamics 365 CRM <=
- 2024-12-15 (ino)wrocław
- 2024-12-15 Obcinaczki z łapaczem
- 2024-12-14 światła znów wlączyli
- 2024-12-14 nie lekceważ termostatu
- 2024-12-14 numer 112
- 2024-12-14 Pendrive, ale dysk
- 2024-12-12 Autocom CAN CDP+ wysokie kody błędów
- 2024-12-13 termostat do lodowki
- 2024-12-13 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-13 Warszawa => Head of International Freight Forwarding Department <=
- 2024-12-13 Poznań => Employer Branding Specialist <=
- 2024-12-13 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-13 Kraków => Business Development Manager - Network and Network Security
- 2024-12-13 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=