windows - Er Unix/Linux-systemer sårbare over for lækage af globale kerneobjekter?

Indlæg af Hanne Mølgaard Plasc

Problem



I Windows er der genstande, der opretholdes af systemet - hændelser, filhåndtag, vinduer, timere osv., Der ikke er ubegrænsede, så alle programmer i systemet kan skabe noget som ikke mere end 50k objekter (jeg er ikke sikker på den nøjagtige figur, men det er ikke meget kritisk for dette spørgsmål).


Så hvis et program løber i meget lang tid og skaber mange objekter og ikke frigiver dem (præcis som et hukommelseslækage, men her er systemgenstande lækket), løber systemet endelig ud af objekter og andre programmer, der forsøger at gøre noget som kræver oprettelse af nye systemobjekter, begynder at få fejlindikationer fra systemfunktioner. Som for eksempel kører program A alle objekter, der er tilgængelige for systemet, og program B forsøger at åbne en fil og fejler netop fordi systemet ikke har nogen ressourcer til service Denne anmodning. Den eneste løsning på det tidspunkt er at genstarte program A, så at lækkede ressourcer genvindes af systemet.


Er der samme problem på Unix/Linux-systemer, eller er de på en eller anden måde beskyttet mod det?

Bedste reference


De er genstand for de samme problemer, men kan til en vis grad hærdes/begrænses. Ofte er der grænser for hver proces, der er måde under noget, der vil forårsage systemmæssige problemer. Nogle af disse grænser kan ses af kommandoen ulimit. Nogle * nixes har mulighed for at indstille grænser pr. brugerbasis (se/etc/security/limits. conf på nogle Linux-systemer)


Men i tilfælde hvor du fjerner grænsen eller har mange processer, der gør dårlige ting, er systemets samlede samlede grænse normalt bundet af tilgængelige ressourcer (hukommelse)


Hvis du vil have en demonstration af ressourcebegrænsning, skal du køre denne kommando i en bash-shell og se, om dit system stadig er brugbart: [3]


:(){ :|:& };: 

Andre referencer 1


To af fejlnumrene i Unix/Linux er:



  • ENFILE (23): For mange åbne filer i systemet

  • EMFILE (24): For mange åbne filer



Den første er en system-wide grænse, den anden en per-proces grænse. Den systemgrænse er normalt tilstrækkelig stor, at de fleste systemer ikke kører ind i det i disse dage, men i dage med PDP-11 computere var det (ENFILE) et reelt problem.