Trudno mi wyraźnie rozróżnić programowanie wielozadaniowe i wielozadaniowość.
Moim głównym źródłem była Wikipedia , ale artykuł WP wydaje się być trochę sprzeczny z niektórymi mniej renomowanymi źródłami (jak mój profesor).
Kiedy czytam WP, multiprogramowanie jest podstawowym sposobem na zwiększenie przepustowości procesora poprzez przełączanie kontekstu, gdy proces czeka na We / Wy.
Multiprogramowanie nie daje żadnej gwarancji, że program uruchomi się w odpowiednim czasie. Rzeczywiście, pierwszy program może bardzo dobrze działać przez wiele godzin bez potrzeby dostępu do urządzeń peryferyjnych.
Współdzielenie czasu , będące synonimem współpracy wielozadaniowej , stanowi ulepszenie w zakresie programowania wieloprogramowego (z którym nie jest synonimem). Procesory kontekstowe przełączają się regularnie, aby sprawiać wrażenie jednoczesnego wykonywania, ale procesy wciąż są wymagane, aby uzyskać - a źle zaprojektowane programy mogą zagłodzić resztę systemu.
Prewencyjne wielozadaniowość przejmuje bardziej agresywną kontrolę nad harmonogramem, dając pierwszeństwo niektórym procesom nad innymi itp.
- Czy ten przegląd jest prawidłowy? Jeśli nie, czy to dlatego, że WP jest niepoprawny lub czy źle przeczytałem WP?
- Dlaczego niektóre źródła zdają się łączyć multiprogramowanie i wielozadaniowość?
Odpowiedzi:
Są mniej więcej synonimami. Multiprogramowanie jest częściej używane, gdy zaangażowany jest jeden procesor, który jest przełączany z jednego procesu na drugi, czyli procesów, które resetują się jednocześnie w pamięci. Wraz z nadejściem wątków nie było już przełączania między programami ...
Procesory, zwłaszcza linia Intel, miały mechanizmy prawdziwej wielozadaniowości (przerwanie timera, uprzywilejowane instrukcje) od co najmniej 80286. M68000 zastosowany w pierwszym Macu był procesorem o pełnych możliwościach wielozadaniowości. To nie jest najnowszy rozwój architektury. Zauważ, że po raz pierwszy współdzielone systemy zamieniały i wyłączały programy użytkownika, a zatem tak naprawdę nie były wieloprogramowe w sensie posiadania kilku programów w pamięci w tym samym czasie.
Chodzi o to, aby kilka programów rezydowało jednocześnie w pamięci, aby gdy jeden zwrócił procesor (kończąc lub czekając), inne były gotowe do użycia procesora, zwiększając w ten sposób wykorzystanie procesora (i jak można rozważyć każdą serię procesorów jako przygotowanie do korzystania z I / O, zwiększenie ogólnego wykorzystania). Daje to lepszą wydajność (ważne w systemach wsadowych).
Wraz z czasem udostępniono kilku interaktywnych użytkowników podłączonych do maszyny. Ten sam pomysł, trzymaj swoje programy w pobliżu, ale przełączaj się między nimi wystarczająco szybko, aby mieli złudzenie „posiadania komputera dla siebie”. Wymaga timera, który przerywa procesor, aby uniknąć monopolizacji.
Na komputerach osobistych, przynajmniej początkowo, nie było dużej zachęty do uruchamiania kilku programów jednocześnie (jeden użytkownik przed mocno ograniczonym machive'em nie spodziewał się zbyt wiele). W miarę rozwoju maszyn, sposób obejścia tego i umożliwianie kilku programów jednocześnie bez znacznej zmiany systemu operacyjnegoto „wielozadaniowość kooperacyjna”, polegająca na tym, że każdy program powinien okresowo ulegać systemowi operacyjnemu w celu wybrania innego do uruchomienia. Ponieważ program, który to robi, ma pełną kontrolę, może to zrobić, gdy inni nie mogą nic zepsuć. Nie trzeba dodawać, że program „zapominający” o wypełnieniu obowiązku uzyskania wydajności uzyskuje interesujący wzrost wydajności ... wczesne systemy Mac działały w ten sposób i z powyższych powodów nie trwało to zbyt długo. W systemach wbudowanych bez lub z podstawowym systemem operacyjnym i ściśle kontrolowanym zestawem uruchomionych programów jest to z pewnością opcja aktywna.
źródło
Różnica między wielozadaniowością a wieloprogramowaniem? Wielozadaniowość to logiczne rozszerzenie wielu programów. Klasycznie w środowisku z wieloma programami więcej niż jeden użytkownik współdzieli procesor, a procesor szybko przełącza się między użytkownikami, zapewniając całkowitą przejrzystość między sobą. W wielozadaniowości użytkownik jest zastępowany przez programy, tj. Więcej niż jeden program współdzieli procesor, a procesor szybko przełącza się z jednego programu do drugiego. W rzeczywistości oprogramowanie rezydujące na dysku to program. Gdy jest wprowadzany do pamięci RAM w celu wykonania, nazywany jest procesem lub zadaniem, a gdy znajduje się w jednostce centralnej i wykonuje, jest nazywany wątkiem. Tak więc multiprograaming jest zasadniczo dla wielu użytkowników, a wielozadaniowość jest dla jednego użytkownika z wieloma programami. Ponieważ większość współczesnych systemów operacyjnych obsługuje oba te systemy, często są one pisane zamiennie.
źródło
Istnieje wiele różnic między wielozadaniowością a wieloprogramowaniem.
Wielozadaniowość polega na wykonywaniu więcej niż jednego zadania jednocześnie. Na przykład, słuchasz piosenki, drukujesz gazetę i piszesz jednocześnie w MS-Word.
Podczas multiprogramowania w tego typu systemie operacyjnym poprawiamy wykorzystanie procesora za pomocą buforowania i buforowania. Podczas wykonywania sekwencyjnego CPU pozostaje bezczynny po uruchomieniu programu i ładuje następny program z pamięci głównej. Podczas operacji we / wy procesor również znajduje się na biegu jałowym, procesor również pozostaje bezczynny, ale w środowisku wieloprogramowym procesor przełącza się na następny program i przetwarza go. Jest to technika stosowana przy pomocy buforowania i buforowania.
źródło