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 |