Jądro zapobiegawcze oznacza tylko, że nie ma blokady dużego jądra .
Linux miał zapobiegawczą wielozadaniowość (tj. Kod użytkownika był możliwy do uniknięcia) od pierwszej chwili (o ile wiem, bardzo pierwszy Linux 0.0.1 przesłany przez Linusa na funet ftp server był już zapobiegawczą wielozadaniowością). Jeśli wykonałeś na przykład wiele procesów kompresji lub kompilacji, były one wykonywane równolegle od pierwszej chwili.
W przeciwieństwie do ówczesnego powszechnie używanego Win31. W Win31, jeśli zadanie pobiera procesor z „jądra”, domyślnie jego zadaniem jest określenie, kiedy przekazać kontrolę systemowi operacyjnemu (lub innym zadaniom). Jeśli proces nie miał specjalnego wsparcia dla tej funkcji (co wymagało dodatkowej pracy programistycznej), wówczas podczas wykonywania wszystkie inne zadania zostały zawieszone. Tak działały nawet najbardziej podstawowe aplikacje zintegrowane z Win31.
Zapobiegawcza wielozadaniowość oznacza, że zadania nie mają możliwości przydzielenia procesora według własnego uznania. Zamiast tego, jeśli upłynie ich przedział czasowy , jądro odbierze od nich procesor. Dlatego w zapobiegawczych systemach operacyjnych źle napisany lub źle działający proces nie może zawiesić systemu operacyjnego ani uniknąć uruchomienia innych procesów. Linux zawsze zapobiegał procesom przestrzeni użytkownika.
Blokada dużego jądra oznacza, że w niektórych przypadkach w przestrzeni jądra nadal mogą występować pewne blokady, uniemożliwiające innym procesom uruchomienie chronionego kodu. Na przykład nie można zamontować wielu systemów plików jednocześnie - jeśli wydano wiele poleceń montowania, były one nadal wykonywane kolejno, ponieważ montowanie elementów było wymagane do przydzielenia Big Kernel Lock.
Uaktywnienie jądra wymagało wyeliminowania tej wielkiej blokady jądra, tj. Uczynienia montowania i innych zadań, aby mogły być uruchomione jednocześnie. To była wielka praca.
Historycznie stało się to bardzo pilne ze względu na rosnącą obsługę SMP (obsługa wielu procesorów). Po raz pierwszy istniały naprawdę płyty główne z wieloma procesorami. Później wiele procesorów („rdzeni”) zostało zintegrowanych w jednym układzie, dziś naprawdę wieloprocesorowe płyty główne są już rzadkie (zwykle w kosztownych systemach serwerowych). Również naprawdę systemy jednordzeniowe (w których jest tylko jeden procesor, z jednym rdzeniem) są rzadkie.
Zatem odpowiedź na twoje pytanie nie brzmi „co było przyczyną braku prewencyjności”, ponieważ zawsze była prewencyjna. Prawdziwe pytanie brzmi: co sprawiło, że zapobiegawcze wykonanie jądra było naprawdę konieczne . Odpowiedź brzmi: rosnący stosunek systemów wieloprocesorowych i wielordzeniowych.