[OSDev]Wielowątkowość w OSie

0

Witam, szukałem jakiegoś kursu nt. pisania os, w którym omówiona jest wielowątkowość, ale nie mogłem znaleŹć. Jeśli ktoś zna taki kurs, lub ma przykład jakiegoś kodu (c lub pascal), to bardzo bym prosił.
Pozdrawiam :-)

0

Jakiś czas temu był na forum temat w którym ktoś wrzucił kawałek swojego wielowątkowego OS'a napisanego w asmie. Problem miał właśnie z wielowątkowością. Poszukaj może znajdziesz ten temat i to Ci chociaż troche pomoże..... A! Jeszcze jedno. W wyszukiwarce(tej na 4p oczywiście) wpisz w polu użytkownik RR - On chyba cośtam odpowiedział pare razy...

0

ale to ma być wielowątkowość czy wielozadaniowość ;-)

0

A po co do tego kurs po prostu trzeba sobie uswiadomic ze nie system ma obslugiwac wielewatkow a jedynie ma byc jednym z tych watkow. Chodzi o to ze robisz program ktory miesza watki a system jest tylko jednym z tych watkow ktory przykowazji dopisuje do listy inne watki ktore beda mieszane.

0
grangu napisał(a)

robisz program ktory miesza watki.

Planista?

0

Nie prawda. To w dużej mierze rodzaj systemu decyduje o wielowątkowości i współbieżności.

Jeśli chcesz tworzyć system oparty na współbieżności to oprzyj go na LINUXIE, UNIXIE lub BSD. Wielowątkowość na Windowsie jest znikoma i nędzna.
Wszystkie poważne systemy pracujące współbieżnie to dystrybucje LINUXA.

Poczytaj trochę o MPI, FORKACH itd.

http://www.pi24.com/rir/

(Tutaj masz bardzo dużo materiałów dotyczących programowania na LINUXA)

0
Odyn napisał(a):

Wielowątkowość na Windowsie jest znikoma i nędzna.

Wymień znane Ci mechanizmy związane z wielowątkowością w Windowsie i krótko opisz czemu ssają. Strasznie jestem ciekaw.

0

Proszę chodzby tutaj: http://wojdas.republika.pl/linux/index.html :)

3

Wielozadaniowość i wielowątkowość zostały stworzone dla systemu UNIX, a Windows tylko to naśladuje przez co jest systemem o dużej awaryjności.

Logika godna geniusza [rotfl]
No to ja może dam konkretny przykład gdzie Windows jest lepszy w multithreadingu niż Linux. Przykładowo na Windowsie istnieją funkcje SuspendThread i ResumeThread, które służą do zatrzymania wątków bez jego wiedzy (przydaje się w takich zabawkach jak garbage collectory, debuggery, profilery). Na Linuksie nie ma odpowiednika (jest pthread_suspend_np / pthread_resume_np przy czym przyrostek _np mówi że te funkcje są nieprzenośne i dostępne tylko w niektórych jądrach). Żeby zatrzymać wątek na Linuksie trzeba robić kombinacje z sygnałami (tj. wysyłasz sygnał do wątku i signal handlerze robisz czekanie na semaforze). Sam mechanizm sygnałów jest mocno zwalony (np. różne bibliteki używają te same sygnały do różnych rzeczy tak więc właśnie się pozbawiłeś możliwości korzystania z tych bibliotek) więc jest to rozwiązanie dalekie od idealnego.
Tu masz z kolei WTF na Linuksie związane z forkiem (http://4programmers.net/Forum/Off-Topic/91494-programistyczne_wtf_jakie_was_spotkaly?p=879320#id879320). Na Windowsie CreateProcess pozwala określić czy handlesy są dziedziczone.

1 użytkowników online, w tym zalogowanych: 0, gości: 1