IL GARAGE

Finestra di pura tecnologia affacciata sul mondo informatico

                   Ideato e progettato da : Ragionier Maurizio SorrentinoF

Sistema operativo parte 2

 

Scheduler

Lo scheduler è il componente fondamentale dei sistemi operativi multitasking, cioè quelli in grado di eseguire più processi (task) contemporaneamente. Lo scheduler si occupa di fare avanzare un processo interrompendone temporaneamente un altro, realizzando così un cambiamento di contesto (context switch). Generalmente computer con un processore sono in grado di eseguire un programma per volta, quindi per poter far convivere più task è necessario usare lo scheduler. Esistono vari algoritmi di scheduling che permettono di scegliere nella maniera più efficiente possibile quale task far proseguire. Allo stato dell'arte, esistono scheduler O(1).

Gestore di memoria

Il gestore di memoria è la componente del sistema operativo che si occupa di gestire ed assegnare la memoria ai processi che ne fanno richiesta. La gestione della memoria è necessaria per tenere traccia di quanta memoria è impegnata e di quanta invece è disponibile per soddisfare nuove richieste: in mancanza di un sistema di gestione, si avrebbe prima o poi il caso di processi che ne sovrascrivono altri, con gli ovvi inconvenienti.

Un altro buon motivo per registrare la memoria usata dai vari processi è il fatto che in caso di errori gravi i processi possono andare in crash e non essere più in grado di comunicare al sistema che la memoria che occupano può essere liberata: in questo caso è compito del gestore di memoria, in caso di terminazione anomala del processo, marcare come libere le zone di memoria possedute dal processo "defunto", rendendole disponibili per nuove allocazioni.

Basic memory management

Questo tipo di tecnica è obsoleta sui portali attuali ma è la prima tecnica che permetteva il caricamento dei programmi nella memoria. Tuttavia è importante dato che viene attualmente utilizzata su sistemi embedded palmari o altri dispositivi. La tecnica si basa sul caricamento di un programma alla volta nella memoria.

Multiprogrammazione con partizioni fisse

Questa tecnica permette di suddividere la memoria in molte partizioni alle quali una coda di processi gestisce il caricamento o la lettura dalla memoria. Questo tipo di tecnica è semplice da realizzare ma presenta dei problemi per l'algoritmo di allocazione e per l'aumentare della frammentazione della memoria.

Swapping

Lo swapping è un metodo che permette di caricare in una memoria non abbastanza capiente un processo scaricando il processo caricato per primo in memoria. Lo spazio in memoria dedicato a queste operazioni si chiama appunto SWAP, questa porzione di memoria, ha le stesse caratteristiche della memoria RAM. Il traffico di processi provenienti dalla CPU è gestito dallo schedulatore a breve termine in quanto i tempi sono molto molto brevi. Le operazioni svolte sono in genere SWAP-IN, upload del processo in memoria e SWAP-OUT, download del processo dalla memoria alla coda dei processi in stato di pronto cioè pronti per essere eseguiti dalla CPU. Il fatto di togliere un processo temporaneamente dalla memoria può causare problemi dato che lo scheduler può far richiesta di un processo non più presente nella memoria. Così facendo i processi non utilizzano tutta la memoria che viene allocata. Un altro grosso problema è costituito dalla frammentazione che non permette di sfruttare a pieno la memoria. Per questo motivo, ove possibile, si preferisce utilizzare il sistema di memoria virtuale.

Gestore di memoria virtuale

Nel caso il sistema disponga di un meccanismo di memoria virtuale, il gestore della memoria si occupa anche di mappare la memoria virtuale offerta ai programmi sulla memoria fisica e sui dischi rigidi del sistema, copiando da memoria a disco rigido e viceversa le parti di memoria necessarie di volta in volta ai programmi, senza che i programmi stessi o gli utenti debbano preoccuparsi di nulla.

Protezione della memoria

la protezione della memoria è un sistema per prevenire la corruzione della memoria di un processo da parte di un altro. Di solito è gestito via hardware (ad esempio con una MMU, Memory management unit) e dal sistema operativo per allocare spazi di memoria distinti a processi differenti.

Interfaccia utente

Si tratta di un programma che permette all'utente di interagire con il computer. Esistono sostanzialmente due famiglie di interfacce utente: interfaccia a linea di comando e interfacce grafiche (GUI). Quando si parla di interfacce viene utile ricordare anche le Java Virtual Machine.

Spooler di stampa

Lo spooler di stampa è stato storicamente il primo modulo esterno del sistema operativo ad essere implementato, per risolvere il problema della gestione delle stampe su carta. Infatti, essendo le stampanti elettromeccaniche dei dispositivi molto lenti, i primi programmi per elaboratore dovevano necessariamente sprecare molto tempo di CPU, estremamente prezioso all'epoca, per controllare la stampante ed inviarle i dati. Quindi venne ideato un programma separato, che girava con una priorità molto bassa e che era visto dagli altri programmi come una normale stampante: in realtà invece lo spooler accumulava i dati che un programma doveva stampare in una apposita area di memoria RAM, e poi si faceva carico del processo di stampa vero e proprio lasciando gli altri programmi liberi di continuare la loro esecuzione.

Il meccanismo fondamentale dello spooler di stampa è rimasto sostanzialmente invariato dai suoi albori fino ad oggi: con gli anni e con il progredire della tecnologia le modifiche più rilevanti sono state la capacità di gestire più stampanti selezionabili a piacere, e la capacità di gestire anche stampanti remote, collegate cioè non direttamente al computer su cui gira lo spooler ma ad altri elaboratori connessi via rete.

I sistemi distribuiti in rete

Tra le varie ipotesi d'uso di un sistema operativo c'è anche la possibilità di sistemi distribuiti in rete . In tal caso la computazione viene distribuita tra più computer collegati in rete tra loro. In questo modo le risorse e il carico computazionale vengono condivise e bilanciate, si ottiene una maggiore affidabilità e i costi sono più contenuti nella scalabilità. Una configurazione funzionalmente simmetrica permette che tutte le macchine componenti abbiano lo stesso ruolo nel funzionamento del sistema e lo stesso grado di autonomia. Una approssimazione pratica di questa configurazione è il clustering.Il sistema viene suddiviso in cluster semiautonomi, dove ognuno di essi, a sua volta, è costituito da un insieme di macchine e da un server cluster dedicato.

Sistemi operativi noti o importanti

AcornOS

AmigaOS

AROS

BeOS

Haiku

Zeta

CP/67

CP/CMS

CP/M

DOS

DR-DOS

DOS/VS

DOS/VSE

FreeDOS

MS-DOS

PC-DOS

GEOS

GNU/Linux

ALT Linux

Arch Linux

CentOS

Damn Small Linux

Debian GNU/Linux

de:Dyne:bolic

Fedora Core

Fox Desktop

Gentoo Linux

Knoppix

Kororaa

Mandriva Linux, fino al 2004 nota con il nome "Mandrake Linux"

MEPIS

Pardus

en:Puppy Linux

Red Hat Linux

Rxart

Slackware (anche nella derivata (live) Slax)

en:Slamd 64

So.Di.Linux

SUSE Linux

Ubuntu Linux (anche nelle varianti Xubuntu, Kubuntu, Edubuntu, Ubuntu Lite)

GNU/Hurd

Mac OS

Menuet OS

MorphOS

MSX-DOS

MVS

OS/2

OS/400 ora I5/OS

OS/360

QNX

POSIX

TOS

Unix

AIX

BSD (puri)

FreeBSD

DragonFly BSD

NetBSD

OpenBSD

BSD (Derivati impropri)

SunOS

NEXTSTEP

Mac OS X

System III e System V

Solaris

AIX

HP-UX

IRIX

Sistema Operativo sviluppato sotto licenza GNU/GPL

OSF/1

Tru64

Minix

VM/CMS

VM/ESA

VM/SP

VM/XA

z/VM

VMS

OpenVMS

Sistemi operativi Microsoft

Windows

Ambienti grafici a 16/32 bit per sistemi operativi MS-DOS:

Windows 3.0

Windows 3.1

Windows 3.11 (Windows for Workgroups)

Sistemi operativi Windows a 32 bit

Windows 95

Windows 98

Windows ME

Sistemi operativi Windows a 32 bit su tecnologia NT

Windows NT 3.x (versioni client e server)

Windows NT 4 (versioni client e server)

Windows 2000 (versioni client e server)

Windows XP (versione client), Windows Server 2003 (versione server) e Windows XP x64 Edition (versione a 64 bit)

Windows Vista (versione client), Windows Longhorn Server (versione server, in fase di sviluppo)

Sistemi Operativi alternativi compatibili con varie versioni di windows

ReactOS (clone open-source con architettura NT)

Sistemi Operativi Online

eyeOS

YouOS

Wormix OS

Fine articolo