Hanging er et computerfænomen, hvor et eller flere programmer eller hele operativsystemet holder op med at reagere på brugerhandlinger [1] , eller begynder at udføre den samme (ikke nødvendigvis nyttige eller meningsfulde) handling uden at stoppe, ikke reagere på beskeder fra andre programmer [ 2] [3] . På dette tidspunkt kan billedet, der vises af programmet på skærmen (hvis nogen), fryse, i modsætning til en runtime-fejl, hvor en meddelelse vises på skærmen.
En fastfrysning skal skelnes fra en fastfrysning, hvor computeren holder op med at reagere i et vist tidsrum og derefter genoptages uden nogen handling fra brugeren. Det er ikke nødvendigt at genstarte computeren [1] .
I et multitasking-operativsystem er det muligt for en individuel proces eller tråd at hænge , såsom at låse en ressource eller blive fanget i en uendelig løkke. I et samarbejdende multitasking-system vil enhver tråd, der hænger, men ikke opgiver kontrollen, få systemet til at hænge, fordi det forhindrer andre tråde i at køre.
I modsætning hertil bruger moderne operativsystemer primært forebyggende multitasking , såsom Windows 2000 og dets efterfølgere, og Apple Inc.s Linux og macOS . I disse tilfælde vil hængning af en tråd ikke nødvendigvis få systemet til at hænge, da operativsystemet vil foregribe det, når dets tidsinterval udløber, hvilket tillader en anden tråd at køre. Hvis en tråd hænger, kan planlæggeren skifte til en anden gruppe af indbyrdes afhængige opgaver, så alle processer ikke hænger [4] . En tråd, der sidder fast, vil dog stadig forbruge ressourcer: i det mindste en planlagt indgang, og hvis den kører (f.eks. sidder fast i en uendelig løkke), vil den forbruge processorcyklusser og strøm, når den er planlagt, hvilket bremser systemet, selvom det ikke forårsager at hænge systemet som helhed. Flytning af et vindue over et hængt program, mens det svæver, kan medføre, at vinduessporet bliver tegnet igen [5] .
Men selv med forebyggende multitasking kan selve operativsystemet hænge, og en forkert eller ondsindet opgave kan få systemet til at hænge, primært ved at monopolisere en anden ressource, såsom I/O eller hukommelse, selvom CPU-tiden ikke kan monopoliseres. For eksempel får en proces, der låser filsystemet, ofte systemet til at hænge.
Efter skala:
Ved repeterbarhed:
Nogle gange kan det virke som om computeren fryser, når den faktisk bare kører meget langsomt eller udfører en meget lang operation. Dette kan være forårsaget af for mange programmer, der kører på samme tid, utilstrækkelig hukommelse (RAM) eller hukommelsesfragmentering, langsom hardwareadgang (især eksterne enheder), langsomme system-API'er osv. Det kan også være forårsaget af skjulte programmer, der er blevet installeret hemmeligt, såsom spyware .
I mange tilfælde kan programmer se ud til at sidde fast, men i virkeligheden kører de bare langsomt, og hvis du venter et par minutter, kan opgaven fuldføres.
Moderne operativsystemer giver en mekanisme til at afslutte ophængte processer, såsom brug af kill -kommandoen på Unix, eller brug af grafiske værktøjer såsom knappen "Afslut opgave" i Task Manager på Windows (vælg en specifik proces fra listen, og klik på "Afslut" Opgave"). Windows tilføjer teksten "(Reagerer ikke)" til vinduets titellinje. Fra Windows Vista vil et gennemsigtigt hvidt lag dække vinduets indhold, når brugeren forsøger at interagere, så det er tydeligt, at programmet ikke reagerer (programmet hænger ikke nødvendigvis, der kan være lange beregninger eller ventetid på et svar fra databaser/netværksressourcer osv.) [10] .
Ældre systemer, såsom dem, der kører MS-DOS, tidlige versioner af Windows eller klassiske Mac OS, krævede ofte en hård genstart i tilfælde af en frysning.
I mange tilfælde vil et programstop resultere i tab af alle ikke-gemte data i programmet [3] , selvom nogle programmer forsøger at forhindre dette gennem dokumentets automatiske lagringsmekanisme [11] .
På indlejrede enheder , hvor menneskelig interaktion er begrænset, kan vagthunden genstarte computeren i tilfælde af en frysning.
Du kan kun fortsætte programmet ved at fjerne det fra hukommelsen og køre det til udførelse igen. De fleste moderne operativsystemer giver mulighed for at afbryde programkørsel, for eksempel kill -kommandoen og forskellige grænseflader til den i GNU/Linux-systemer , eller task manager eller taskkill -konsolkommandoen i Microsoft Windows . I tilfælde af en fuldstændig fastfrysning af operativsystemet, når det ikke reagerer på tastatur- eller musinput, kan arbejdet kun fortsættes efter en fuldstændig genstart af operativsystemet eller ved at bruge Magic SysRq i Linux ( REISUB ).
Eliminering af stabile fryser er relateret til at identificere deres årsager - opdatering af drivere og et fryseprogram, rengøring af computeren for støv, udskiftning af termisk pasta, strømforsyning, fjernelse af virus og så videre [1] [2] .