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 :-)
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...
ale to ma być wielowątkowość czy wielozadaniowość ;-)
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.
grangu napisał(a)
robisz program ktory miesza watki.
Planista?
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.
(Tutaj masz bardzo dużo materiałów dotyczących programowania na LINUXA)
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.
Proszę chodzby tutaj: http://wojdas.republika.pl/linux/index.html :)
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.