Article View: pl.comp.lang.asm
Article #153Re: przełączanie
From: Wiktor S.
Date: Mon, 06 Mar 2006 09:38
Date: Mon, 06 Mar 2006 09:38
46 lines
3259 bytes
3259 bytes
>> Oznacza to napisanie własnego mini-systemu operacyjnego, tylko że >> kolega Michał nie powiedział, co to jest za środowisko DOSopodobne. >> DOS czy tylko "podobne"? To może mieć duże znaczenie. > Dziekuje wszystkim za pomysly, na pewno z nich skorzystam. System w > zasadzie moge wybrac sam, choc profgram ma dzialac nawet na 386, i byl > wolny (w sensie free). Poniewaz nie programowalem w Linuxie zbyt > wiele, zwlaszcza w ASMie, wiec sklaniam sie ku FreeDOS'owi, gdyz DOSa > i jego przerwania (zwlaszcza 21h :) ) dosc dobrze znam. No to pora na uczenie się linuksowego 80h :-) > Program bedzie obliczeniowy, wraz z prezentacja wynikow obliczen > graficznie (zwykla VGA, ewentualnie jakis tryb VESA), i do tego sa mi > potrzebne watki - jeden bedzie liczyc, drugi wyswietlac, a trzeci > "interaktowac" z uzytkownikiem, gdyz liczenie i wyswietlanie maja byc > niezalezne od wprowadzania nowych danych. W takim razie można zrobić przełączanie na zegarze (niech będzie nawet "software'owe", czyli ręcznie): na zegarze przełączamy do kolejnego zadania (czyli trzy przełączają się w kółko). Wątek interfejsu powinien sprawdzać, czy np. naciśnięto klawisz - jeśli nie, od razu niech się przełączy do następnego zadania. Wątek wyświetlający niech wyświetli co tam ma, jak skończy - następne zadanie. Wątek liczący sam z siebie nie będzie oddawał procesora, zostanie wywłaszczony dopiero na zegarze. W ten sposób liczenie dostaje prawie cały czas procesora, a jednocześnie 18 razy na sekundę będzie sprawdzane, czy użytkownik czegoś nie nacisnął, a ekran zostanie odświeżony (można też zrobić rysowanie np. co sekundę, jeśli tyle to za często). Co do samego przełączania... załóżmy, że jesteśmy w przerwaniu. Trzeba by zapisać wszystkie rejestry i flagi (najlepiej 32-bitowe, nawet w trybie rzeczywistym) do struktury bieżącego zadania. CS:(E)IP pobierz z adresu powrotu z przerwania. Wczytaj teraz rejestry ze struktury nowego zadania, zamieszaj na stosie (stosy też oddzielne) aby powrót był do nowego zadania, i zrób IRET. -- Azarien
Technical Details
Message-ID:
<dugvuf$qr1$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!news.onet.pl!not-for-mailReferences:
<tiui02p9irebn6563c4us550otj6g97tbc@4ax.com> <duc2dg$f0t$1@nemesis.news.tpi.pl> <dudaju$tet$1@news.onet.pl> <due9p6$ikg$1@nemesis.news.tpi.pl> <dueesd$3q9$1@news.onet.pl> <qtjm02hvpfao2plfct27pgho42bk5a4h67@4ax.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!news.onet.pl!not-for-mail From: "Wiktor S." <wswiktorSP@Mpoczta.fm> Newsgroups: pl.comp.lang.asm Subject: Re: przełączanie Date: Mon, 6 Mar 2006 10:38:19 +0100 Organization: Onet.pl Lines: 48 Message-ID: <dugvuf$qr1$1@news.onet.pl> References: <tiui02p9irebn6563c4us550otj6g97tbc@4ax.com> <duc2dg$f0t$1@nemesis.news.tpi.pl> <dudaju$tet$1@news.onet.pl> <due9p6$ikg$1@nemesis.news.tpi.pl> <dueesd$3q9$1@news.onet.pl> <qtjm02hvpfao2plfct27pgho42bk5a4h67@4ax.com> NNTP-Posting-Host: 155.168.wmc.com.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1141637903 27489 87.250.168.155 (6 Mar 2006 09:38:23 GMT) X-Complaints-To: usenet@news.onet.pl NNTP-Posting-Date: Mon, 6 Mar 2006 09:38:23 +0000 (UTC) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670 X-Sender: 63e3folRCjcGWUjNfLSN0w== X-Newsreader: Microsoft Outlook Express 6.00.2900.2670 X-Priority: 3 X-MSMail-Priority: Normal Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit