Terminate and Stay Resident
In informatica sono detti Terminate and Stay Resident (abbreviato TSR), quei programmi che, una volta terminata la loro esecuzione, restituiscono il controllo al sistema operativo restando però residenti in memoria. I programmi TSR sono stati usati sui sistemi MS-DOS per simulare il multitasking trasferendo il controllo al programma in memoria in modo automatico oppure tramite eventi generati esternamente, come la pressione di un determinato tasto: alcuni programmi TSR erano driver per dispositivi hardware non supportati direttamente dal sistema operativo mentre altri erano applicazioni che offrivano funzionalità aggiuntive.[1][2]
Descrizione
modificaL'MS-DOS era un sistema operativo di tipo single-tasking, ossia era in grado di eseguire solo un programma alla volta. Questo era generalmente il prompt dei comandi, una shell gestita dal programma COMMAND.COM
con cui l'utente poteva interagire con il sistema o avviare un altro programma eseguibile. In quest'ultimo caso, quando il programma terminava esso restituiva il controllo al sistema, che liberava la memoria occupata rendendola nuovamente disponibile: quest'azione era svolta chiamando l'interrupt 21h nella versione 1.0 dell'MS-DOS[3] oppure l'interrupt 21h con funzione 4Ch nella versione 2.0 e successive.[4] Esisteva però un altro modo per restituire il controllo al sistema, che faceva sì che la memoria occupata dal programma non fosse segnata come libera: il programma restava così caricato in RAM, pronto ad essere rimandato in esecuzione. Per ottenere ciò bastava chiamare l'interrupt 27h, chiamato appunto "Terminate and Stay Resident";[5] con l'MS-DOS 2.0 fu introdotto un nuovo metodo, la chiamata all'interrupt 21h con funzione 31h che sortiva gli stessi effetti.[6] Con entrambi i metodi si otteneva di lasciare il programma residente in memoria. Questo poteva poi essere richiamato o in modo automatico, ad esempio agganciandolo ad un interrupt di sistema, oppure utilizzando un tasto speciale, il metodo usato da applicazioni tipo calendario ed agenda che venivano fatte comparire a video con questo sistema.[1][2]
Per agganciare un TSR ad un interrupt, il programma manipolava il vettore stesso dell'interrupt (l'indirizzo di memoria in cui si trova materialmente l'interrupt): esso leggeva questo indirizzo e lo inseriva nella porzione di codice residente in memoria in modo che al suo termine il TSR saltasse ad eseguire l'interrupt originale.[7]
I virus TSR
modificaLa tecnica di agganciarsi ad un interrupt era utilizzata anche per realizzare i virus di tipo TSR: il codice malevolo veniva caricato aprendo un file infetto oppure letto durante il boot dal master boot record di un disco e, una volta in esecuzione, esso installava in memoria un TSR che infettava poi gli altri file che venivano aperti oppure gli altri dischi che venivano inseriti. Spesso il virus TSR cercava di mascherare al sistema la sua presenza non facendo vedere la memoria che occupava.[7][8]
Note
modifica- ^ a b Terminate and Stay Resident (TSR), su whatis.techtarget.com, WhatIs, 04/2005. URL consultato il 09/05/2015.
- ^ a b Definizione di TSR, su webopedia.com, Webopedia. URL consultato il 09/05/2015.
- ^ Interrupt 21h/0, su stanislavs.org. URL consultato il 09/05/2015.
- ^ Interrupt 21/4c, su stanislavs.org. URL consultato il 09/05/2015.
- ^ Interrupt 27h, su stanislavs.org. URL consultato il 09/05/2015.
- ^ Interrupt 21h/31h, su stanislavs.org. URL consultato il 09/05/2015.
- ^ a b Spiegazione dei TSR (TXT), su academicunderground.org, AcademicUnderground. URL consultato il 10/05/2015 (archiviato dall'url originale il 4 marzo 2015).
- ^ Viruses Characteristics, su wowarea.com. URL consultato il 10/05/2015.
Voci correlate
modificaCollegamenti esterni
modifica- Programmazione di programmi TSR, su fysnet.net.