Jaka jest różnica między wieloprogramowaniem a wielozadaniowością


10

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.

  1. Czy ten przegląd jest prawidłowy? Jeśli nie, czy to dlatego, że WP jest niepoprawny lub czy źle przeczytałem WP?
  2. Dlaczego niektóre źródła zdają się łączyć multiprogramowanie i wielozadaniowość?

1
„z niektórymi mniej renomowanymi źródłami (jak mój profesor college'u)” - oh kochanie. Mam nadzieję, że jest bardziej renomowany niż Wikipedia, która ma wiele niedopieczonych treści w CS.
Raphael

„multiprogramowanie” wydaje się bardziej podejściem historycznym. współczesna wielozadaniowość jest rzeczywiście związana z blokowaniem IO, ale jest to tylko jeden z czynników używanych do żonglowania procesami. ponadto prawie wszystkie współczesne wielozadaniowość ma charakter zapobiegawczy ze wsparciem procesora (który nie zawsze obsługiwał to lata temu, a dobrze zachowane procesy miały wywoływać metody oczekiwania oparte na systemie operacyjnym, które wspierały współpracę).
dniu

2
@ Rafael, możesz wyświadczyć całemu światu przysługę, piecząc je do perfekcji.
vonbrand

1
@vonbrand Próbowałem, ale niestety jest wystarczająca liczba niedopieczonych ekspertów, aby podjąć takie próby.
Raphael

@ Rafael, a ten tłum też się tu nie pojawia?
vonbrand

Odpowiedzi:


9

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.


artykuł WP wydaje się sugerować, że w programowaniu wieloprogramowym brakuje pamięci wirtualnej, w przeciwieństwie do wielozadaniowości (systemów). Historycznie może to być prawda, ale czy definicja jest ortogonalna?
didierc

1
W latach 70. mieliśmy tutaj wieloprogramowany IBM S / 370 i zdecydowanie nie miał on pamięci wirtualnej (wydaje mi się, że pamiętam, że miał dysk używany tylko do buforowania). Pamięć wirtualna pozwala na posiadanie jeszcze większej liczby programów w ograniczonej pamięci RAM (ponieważ masz pod ręką tylko „najczęściej używane” części), jeszcze lepsze wykorzystanie w ten sposób. Więc tak, uważam tych całkowicie niezależnych; ale w praktyce dzisiaj nie znajdziesz jednego bez drugiego. Z wyjątkiem być może routera Wi-Fi lub telefonu komórkowego ...
vonbrand

Ok. Tak też myślałem. Systemy wbudowane rzeczywiście często nie mają odpowiedniej ochrony pamięci, zdałem sobie z tego sprawę. Niemniej jednak przy dobrze wychowanych programach nie powinno to stanowić problemu. To oczywiście zależy od dostawców programów.
didierc

@didierc ortogonalny? masz na myśli wzajemnie się wykluczające, prawda?
jsj

2

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.


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.