Panica nucleului

Kernel panic (din  engleză  -  „alarm, failure in the kernel”, literalmente kernel panic ) - un mesaj despre o eroare critică a nucleului sistemului de operare , după care sistemul de operare nu poate continua munca [1] .

Termenul este folosit de obicei într-un mediu de sistem de operare, cum ar fi UNIX . Numele său este legat de textul de eroare al formei " Kernel panic: …" și de numele funcției kernel din sistemul de operare UNIXpanic() original [2] .

Panica kernelului este posibilă pe Android , care se bazează pe nucleul Linux . Deoarece Mac OS X și iOS se bazează pe Darwin , care este o clasă de sisteme UNIX, ele sunt, de asemenea, supuse panicii nucleului. [3] .

Istorie

Istoria panicii Kernel este strâns legată de cea a sistemului de operare UNIX , care a fost dezvoltat la sfârșitul anilor 1960 de către angajații Bell Labs , în special Ken Thompson , Dennis Ritchie și Douglas McIlroy .

Mesajul de panică Kernel a fost introdus în versiunile timpurii ale UNIX și a reprezentat o diferență importantă în filozofia sistemului de operare față de principalul concurent și predecesor al UNIX, Multics . Multics a fost proiectat să ruleze pe mainframe -ul GE-645 pe 36 de biți , în timp ce UNIX a fost proiectat să ruleze pe minicalculatorul PDP-7 pe 18 biți, mult mai puțin puternic , și din acest motiv, mai puține resurse erau disponibile pentru sistemul de operare, ceea ce a condus la nevoia de conservare a resurselor, inclusiv gestionarea erorilor. Dezvoltatorul Multics Tom van Vleck descrie această schimbare într-o discuție cu dezvoltatorul UNIX Dennis Ritchie [4] :

I-am spus lui Dennis că aproximativ jumătate din codul pe care l-am scris pentru Multics era cod de gestionare a erorilor. El a răspuns: „Am scăpat totul. Dacă apare o eroare, avem o procedură numită panică , iar dacă este numită, computerul se blochează și tu țipi: „Hei, repornește-l!”.

Text original  (engleză)[ arataascunde] I-am remarcat lui Dennis că jumătate din codul pe care îl scriam în Multics era un cod de recuperare a erorilor. El a spus: „Am lăsat toate aceste lucruri afară. Dacă apare o eroare, avem această rutină numită panică, iar când este apelată, mașina se prăbușește, iar tu strigi pe hol, „Hei, repornește-l”.

Funcția originală panic()nu s-a schimbat fundamental de la UNIX V5 la sistemele 32V bazate pe VAX și ar tipări doar un mesaj de eroare fără informații suplimentare, după care sistemul ar intra într- o buclă nesfârșită goală . Mai târziu, în timpul dezvoltării UNIX, funcția panic()a fost finalizată și a început să afișeze o varietate de informații necesare pentru depanare pe terminal .

Acest principiu al gestionării erorilor critice a fost adoptat de majoritatea sistemelor de operare ulterioare, cum ar fi Mac OS [3] sau Microsoft Windows [5] .

Cauzele panicii kernelului

Una dintre cele mai frecvente cauze de panică a nucleului este incapacitatea de a găsi și monta sistemul de fișiere rădăcină. Aceasta este adesea o eroare de configurare care poate fi remediată prin repornirea manuală a nucleului [6] .

Pe Linux, apariția unei panică a nucleului este adesea precedată de o condiție numită oops . În unele cazuri, oops poate duce la aceeași stare nesănătoasă a sistemului ca o panică a nucleului [1] .

În majoritatea celorlalte cazuri, cauza panicii Kernel este o eroare hardware critică ( defecțiune RAM , eroare procesor , placă de bază, placă grafică sau alt dispozitiv critic) sau o eroare în nucleul sistemului de operare în sine , de exemplu, o încercare de a accesa un adresa eronată sau interzisă în memorie. Alte cauze pentru panica Kernel pot fi erori în driverele dispozitivelor periferice sau erori în sistemul de fișiere [3] [7] . În timpul etapei finale a inițializării spațiului utilizatorului , o panică a nucleului apare de obicei atunci când init eșuează să ruleze , deoarece, în ciuda unui nucleu care rulează și rulează, sistemul în sine rămâne inutilizabil [8] . Panica nucleului poate fi cauzată și de programele de aplicație dacă acestea nu funcționează corect cu nucleul. De exemplu, o eroare în Google Chrome a provocat panică Kernel pe Mac OS X [9] .

Cod sursă Panic()

Cod sursă UNIX V6 [10] panic() :

char * panicstr ; /* * Panica este apelată la erori nerezolvabile * fatale. * Se sincronizează, afișează „panic: mesg” și * apoi face bucle. */ panică ( e ) char * s ; { panicstr = s ; actualizare (); printf ( "panica:%s \n " , s ); pentru (;;) inactiv (); }

Gestionarea panicii kernelului

În cazul normal, atunci când apare o panică Kernel, sistemul de operare nu mai funcționează cu mesaje de eroare pe ecran, după care sistemul așteaptă ca computerul să se închidă sau să se repornească . Cu toate acestea, o astfel de procesare a acestui eveniment este inacceptabilă atunci când un simplu computer este extrem de nedorit sau o persoană nu este în preajmă (de exemplu, pe servere la distanță sau după ore) [11] .

Pe sistemele de operare moderne precum GNU/Linux , FreeBSD sau Solaris , este posibil să schimbați comportamentul implicit al funcției panic() și să reporniți automat computerul. Pe GNU/Linux, această configurație se face folosind procfs [11] :

echo 5 > /proc/sys/kernel/panic

Pentru ca modificările să aibă efect în GNU/Linux după o repornire, trebuie să adăugați o linie la fișier /etc/sysctl.d/99-sysctl.conf:

nucleu.panica = 5

Valoarea parametrului kernel.panic este numărul de secunde după care va avea loc o repornire. Setarea acestui parametru la o valoare negativă sau egală cu 0 nu va reporni automat [11] .

De asemenea, pe sistemele BSD există o opțiune specială în nucleu. Citat din dosarul /usr/src/sys/conf/NOTES[12] :

# Setați perioada de timp (în secunde) în care sistemul va aștepta înainte de # repornirea automată când apare o panică a nucleului. Dacă este setat la (-1), # sistemul va aștepta la nesfârșit până când o tastă este apăsată pe consola #. opțiunile PANIC_REBOOT_WAIT_TIME = 16

În Solaris , repornirea automată după o panică Kernel este comportamentul standard al sistemului [13] .

Repornirea după o panică Kernel are, de asemenea, un dezavantaj foarte serios, mai ales dacă modificarea nu dispare după prima repornire . În cazul în care o repornire nu remediază eroarea care provoacă panica Kernel, sistemul se va opri și repornește din nou și din nou, ceea ce poate duce la erori hardware sau pierderi de date [6] . În cazul în care această situație a apărut după construirea unui nou nucleu, soluția problemei poate fi încărcarea unei copii salvate a vechiului nucleu funcțional. De regulă, pentru aceasta este suficient să specificați manual calea către o copie de lucru a nucleului în timpul pornirii [14] .

Fișierul System.map [15] poate fi util pentru a investiga cauza unei panică a nucleului Linux .

Panică kernel pe diverse sisteme de operare

Inițial, mesajul de panică Kernel a fost limitat la un scurt text despre necesitatea de a reporni sistemul. În sistemele moderne, se oferă de obicei mai multe informații suplimentare.

  • GNU/Linux și majoritatea celorlalte sisteme de operare compatibile UNIX generează un jurnal care descrie eroarea și afișează pe ecran un mesaj de eroare care conține informațiile necesare pentru a depana și a găsi cauza erorii. Acest mecanism se numește Linux oops . Distribuțiile Linux moderne folosesc serverul grafic X Window , iar panica Kernel nu provoacă o comutare la consola fizică care imprimă mesaje de diagnosticare. Puteți recunoaște panica Kernel prin clipirea LED-urilor Caps Lock și Scroll Lock de pe tastatură [16] .
  • În versiunile originale de Mac OS X (de la 10.0 la 10.0.1.5), prin analogie cu sistemele de operare bazate pe nucleul Linux, pe ecran erau afișate informații despre o eroare, după care sistemul s-a oprit. Începând cu Mac OS X 10.2, acest mesaj a fost simplificat și vă spune doar să reporniți computerul în patru limbi (engleză, germană, franceză și japoneză), indiferent de versiunea lingvistică a sistemului de operare [3] [17] . Cu toate acestea, OS X permite [17] să înlocuiască imaginea cu oricare alta, ceea ce permite dezvoltatorilor să arate mesaje de eroare modificate în diferite situații [17] . Datorită acestei caracteristici, pe OS X este chiar posibilă simularea Ecranului albastru al morții sistemului de operare Windows prin înlocuirea imaginii standard cu o captură de ecran a imaginii Windows corespunzătoare [17] .

Pe sisteme de operare non-UNIX

În timp ce termenul Kernel panic este folosit în principal pentru sistemele de operare compatibile cu UNIX , în alte sisteme de operare , gestionarea erorilor critice prin oprirea sistemului a luat rădăcină și a primit următoarele nume:

  • În majoritatea versiunilor de Microsoft Windows , sistemul se blochează cu un ecran albastru cu o scurtă descriere a erorii [5] , care se numește Ecranul albastru al morții . În sistemul de operare Windows XP , când apare o eroare, computerul repornește automat. Acest comportament al sistemului este controlat prin Panoul de control Windows . Dacă apare o eroare la încărcarea sistemului de operare, puteți modifica comportamentul sistemului prin meniul butonului F8 [5] .
  • Pe computerele Macintosh mai vechi : Sad Mac (eroare hardware la pornirea sistemului) [18] , Bomb (pentru erori de software sau de sistem de operare) [19] .
  • Pe computerele Amiga sub AmigaOS înainte de 2.04, acest mecanism a fost numit Guru Meditation și a funcționat similar cu Kernel panic pe Unix [20] . În versiunile ulterioare, textul „Guru meditation” a fost eliminat din mesajul de eroare [20] .

Vezi și

Note

  1. 1 2 Kirkland, Tinker, 2006 , p. 51.
  2. Informații Panic() pe UNIX.com . Pagina de manual BSD pe forumurile UNIX și Linux (11 august 1995). Preluat la 24 iulie 2012. Arhivat din original la 6 august 2012.
  3. 1 2 3 4 Cauzele panicii Kernel în Mac OS X. mamaps.com. Preluat la 24 iulie 2012. Arhivat din original la 6 august 2012.
  4. Unix și Multics . www.multicians.org (21/03/93). Preluat la 24 iulie 2012. Arhivat din original la 6 august 2012.
  5. 1 2 3 Informații despre comportamentul Windows în situații anormale . Microsoft Corp. Preluat la 24 iulie 2012. Arhivat din original la 6 august 2012.
  6. 1 2 Karim Yaghmour, Jon Masters, Gilad Ben-Yossef, Philippe Gerum, 2008 , p. 170.
  7. Informații despre cauzele panicii Kernel pe site-ul Apple . Apple Inc. Consultat la 24 iulie 2012. Arhivat din original pe 6 august 2012.
  8. Wolfgang Mauerer. Arhitectură profesională Linux Kernel  (neopr.) . - John Wiley and Sons , 2008. - S. 1238-1239. — ISBN 978-0-470-34343-2 .
  9. Google vine curat: Da, panica dvs. de kernel este vina lui Chrome . Betanews (7 ianuarie 2012). Preluat la 24 iulie 2012. Arhivat din original la 6 august 2012.
  10. Cod sursă prf.c UNIX V6 . Arborele Unix. Preluat la 24 iulie 2012. Arhivat din original la 6 august 2012.
  11. 1 2 3 Kopper, 2005 , p. 178.
  12. Pagina de manual OpenBSD SYSCTL.CONF . OpenBSD. Preluat la 24 iulie 2012. Arhivat din original la 6 august 2012.
  13. Solaris System Engineers, 2009 , p. 9.3.4.2.
  14. Michael Urban, Brian Tiemann, 2002 , p. 172.
  15. Michael Schwarz, 2002 , p. 21.
  16. Kirkland, Tinker, 2006 , p. 52.
  17. 1 2 3 4 Un nou ecran al morții pentru Mac OS X. Amit Singh. Preluat la 30 iulie 2012. Arhivat din original la 6 august 2012.
  18. Ted Landau, 2000 , p. 133.
  19. Ted Landau, 2000 , p. 83.
  20. 1 2 Eric S. Raymond, 1996 , p. 230.

Literatură

  • Karl Kopper. Clusterul Linux Enterprise: construiți un cluster foarte disponibil. - No Starch Press, 2005. - P. 430. - ISBN 1593270364 .
  • Michael Urban, Brian Tiemann. Sams Teach Yourself FreeBSD în 24 de ore. - Editura Sams, 2002. - P. 456. - ISBN 0672324245 .
  • James Kirkland, Christopher L. Tinker. Depanare Linux pentru administratorii de sistem și utilizatorii cu putere. - Prentice Hall Professional, 2006. - P. 571. - ISBN 0-13-185515-8 .
  • Karim Yaghmour, Jon Masters, Gilad Ben-Yossef, Philippe Gerum. Construirea de sisteme Linux încorporate. - O'Reilly Media, 2008. - P. 439. - ISBN 0596529686 .
  • Ingineri de sistem Solaris. Noțiuni esențiale pentru administrarea sistemului Solaris 10. - Pearson Education, 2009. - P. 456. - ISBN 013700009X .
  • Michael Schwarz. Multitool Linux: utilizări practice pentru software cu sursă deschisă. - Addison-Wesley Professional, 2002. - P. 532. - ISBN 0201734206 .
  • Ted Landau. Mac-uri triste, bombe și alte dezastre: și ce să faci cu ele . - Peachpit Press, 2000. - S.  955 . — ISBN 020169963X .
  • Eric S. Raymond. Noul dicționar al hackerilor. - MIT Press, 1996. - P. 547. - ISBN 0262680920 .

Link -uri