venerdì 16 maggio - 15:50
Google
 
Menù
  Home
  Come nasce IRC-Zone
  Glossario Informatico
  Servizio FreeBot
  News
  I nostri progetti
  I nostri servizi
  Partners
  Diventa un Partner

IRC
  Cos'è IRC
  Storia di IRC
  Netiquette su IRC
  Emoticons
  Gergo della chat
  Lista Servers
  RFC 1459
  Shell Hosting

mIRC
  Cos'è il mIRC
  FAQ mIRC
  Configurazione mIRC
  Download mIRC
  Novità
  Script Stranieri
  Script Italiani
  MTS
  MTS Engine

mIRC Addon
  mIRC addon Audio
  mIRC addon SMS
  mIRC addon Grafica
  mIRC addon Utility
  mIRC addon Uso Bot

Client IRC
  Client IRC Linux
  Client IRC Mac
  Client IRC Win

XChat
  Cos'è XChat
  XChat per Win
  XChat per Unix

KVirc
  Cos'è KVirc
  FAQ KVirc
  Installazione su Linux
  KVirc Scripting
  KVirc per Mac
  KVirc per Win
  KVirc per Unix
  KVirc addon

Eggdrop/Windrop
  Cos'è un Eggdrop
  Download Eggdrop
  Configurazione Eggdrop
  Download Windrop
  Installazione Windrop

Tcl
  Download TCL
  Tutorial TCL scripting
  Documenti/Guide

BNC
  Cos'è un psyBNC
  Download psyBNC
  Configurazione psyBNC
  Download sBNC
  Configurazione sBNC

Linkaci!

Credits


Statistiche
Ip: 38.103.63.16
Downloads: 248584 files
Totale: 290381 MB




OS Kernels

Autore: PUOJACKZData: 2005-12-03
Modificato: Documento non modificato Letture: 570
Torna indietroStampa articoloInvia ad un amico

Questo articolo è tratto da WikiPedia ENG, tradotto e rielaborato da PUOJACKZ

In sistemistica, il kernel è il nocciolo del sistema operativo. Quest'ultimo è la parte di software responsabile nel fornire un accesso sicuro, all'hardware del computer, da parte dei vari processi attivi in esso (cioè ad un programma in esecuzione).
Siccome vi possono essere più applicativi avviati, nello stesso box, l'accesso, alla componentistica hardware, dev'essere limitato. Tale sistema di "accodamento" e decisione delle precedenze è una delle funzioni del Kernel, il quale, inoltre, decide per quanto tempo una determinata risorsa viene riservata ad un processo. Questa attività è detta "Scheduling".
Inoltre, l'accesso diretto all'hardware può essere molto complesso, in quanto, i componenti (anche dello stesso tipo), possono esser stati progettati diversamente. Il Kernel, solitamente, per facilitare le operazioni ai coders di applicativi, implementa un sistema di astrazione dell'hardware (cioè una serie di istruzioni universali usate da tutti i dispositivi di un certo tipo). Questo diluisce la complessità sia a livello di ambiente operativo di sistema, sia garantendo un interfaccia chiara e uniforme per il colloquio con la componentistica, utile qualora un programmatore debba scrivere un applicativo per tale OS, in quanto, ne garantisce il funzionamento. Tale parte del software di sistema è detta "Hardware Abstraction Layer" (HAL) e si basa sui drivers software di un determinato componente hardware, i quali contengono le istruzioni specifiche dichiarate dal produttore del dispositivo stesso.

Introduzione

Non è necessario che un computer esegua un Kernel. I programmi possono esser caricati ed eseguiti direttamente da boot. Per far ciò, però, occorre che l'autore di questi applicativi provveda nel gestirsi tutto il colloquio con le periferiche e i componenti del computer, senza possibilità di sfruttare il supporto offerto, di norma, dall'OS e dall'astrazione hardware. Tale metodo operativo era comune in passato, ove il box veniva resettato, qualora si necessitasse di eseguire più programmi differenti. In caso, eventuali software particolari (es. i caricatori di applicativi o i debuggers) venivano mantenuti all'interno di un area del computer, oppure, caricati, ogni volta, da una memoria a sola lettura. Nello svilupparsi, tali quest'ultimi han gettato le basi per la creazione dei primi kernels per OS.
Oggigiorno, l'approggio "diretto" all'hardware viene applicato nelle console videoludiche o nei sistemi "embedeed", anche se, in genere, questi computers iniziano a supportare delle loro versioni di kernel.

Le 4 categorie principali di Kernel

Tutt'ora esistono 4 tipi principali di Kernel:

- I Kernel Monolitici, i quali offrono un astrazione completa e performante, riguardo lo strato hardware sottostante.
- I Microkernels, che forniscono un piccolo set di astrazioni hardware semplici, sfruttando delle particolari applicazioni, dette "Servers", per offrire maggiori funzionalità.
- I Kernel Ibridi (cioè microkernels modificati), i quali, implementano del codice aggiuntivo, nel KernelSpace, al fine di aumentare le performance disponibili.
- Gli Exokernels, che forniscono un minimo di astrazione, permettendo, quindi, un accesso all'hardware, a basso livello. Nei sistemi Exokernel, le librerie offrono lo stesso supporto hardware presente nei Kernels Monolitici.

I Kernel Monolitici

L'approccio monolitico definisce un interfaccia virtuale ad alto livello, sull'hardware, con un set di primitive (o chiamate del sistema) per implementare i servizi dell'OS (es. gestione dei processi, della memoria e concorrenza alle risorse), in più moduli eseguiti in modalità supervisore.
Anche se ogni modulo che offre il servizio a queste operazioni è separato dagli altri, l'integrazione del codice è difficile ,e, siccome tutti questi componenti vengono eseguiti nello stesso spazio d'indirizzamento, un errore in un modulo può far inceppare e crashare l'intero sistema. Tuttavia, quando l'implementazione avviene completamente e con affidabilità, l'integrazione interna legata ai componenti permette, alle features a basso livello del sistema sottostante, nell'essere utilizzate efficacemente, rendendo il kernel monolitico altamente efficiente.
Kernel monolitici moderni quali Linux, FreeBSD e Solaris possono caricare dei moduli eseguibili in runtime, permettendo una facile estensione delle capacità del kernel su richiesta. Inoltre, ciò aiuta il mantenere al minimo l'ammontare di codice eseguito nel Kernelspace.

Sono Kernel monolitici:

I Kernel tradizionali di UNIX (es. quelli di BSD)
Il Kernel di Linux
Il Kernel di Solaris
Alcuni Kernel creati a scopi educativi, es. Agnix

I Microkernels

L'approccio del Microkernel consiste nel definire delle astrazioni molto semplici, riguardo l'hardware, con dei set di primitive (o chiamate del sistema) per implementare dei servizi OS minimali (es. gestione dei thread, dello spazio indirizzabile e delle comunicazioni interprocessore). Tutti gli altri servizi, incluso quelli normalmente offerti dal Kernel (es. il Networking), sono implementati negli spazi utente per programmi, riferiti come "Servers".
Quest'ultimi son dei programmi, come tutti gli altri, i quali permettono all'OS di essere modificato semplicemente avviando o spegnendo applicativi. Per i piccoli box, senza supporto di networking, basta non accendere il networking server.
Questo, nei sistemi tradizionali, richiederebbe la ricompilazione del Kernel, attività, spesso, che và ben oltre le conoscenze medie dell'utente finale. In teoria, il sistema è, inoltre, molto più stabile, in quanto, qualora un server s'inceppi, questo blocca un semplice programma, piuttosto che comportare l'intero crash del kernel.
Tuttavia, parte dello stato operativo viene perduto e, genericamente, è difficile poter continuare con l'esecuzione dei processi legati, oppure, il recupero dei servers inceppati. Ad esempio, se il server responsabile delle connessioni TCP/IP viene riavviato, gli applicativi potrebbero identificare una disconnessione anomala, procedendo nella ri-connessione. Purtroppo, però, altri oggetti di sistema, come, ad es., i files, non supportano questa logica di ricollegamento casuale, bensì, si suppone che, durante una trasmissione, vi sia un certo grado di affidabilità, nelle operazioni.

Esempi di Microkernels ed OS basati su questi:

AIX
AmigaOS
Amoeba
Chorus microkernel
EROS
K42
LSE/OS (Nanokernel)
KeyKOS (Nanokernel)
La famiglia Microkernel "L4"
Mach, usato in GNU Hurd, NEXTSTEP, OPENSTEP, e Mac OS X
MERT
Minix
MorphOS
NewOS
QNX
Phoenix-RTOS
RadiOS
Spring OS
VSTa
Symbian OS
OSE

Kernel Monolitici Vs. Microkernel

Agli inizi degli anni 90, i kernel monolitici vennero considerati obsoleti. A causa di ciò, il design di Linux, con tale tipologia di core interno, invece che di un'implementazione a microkernel, generò non pochi flames tra Linus Torvalds e Andrew Tanenbaum.
I kernel monolitici tendono ad essere più semplici da progettare correttamente. Inoltre, possono crescere più velocemente di quelli basati su un sistema a microkernel.
Quest'ultimi, invece, vengono spesso usati in ambienti "embedeed" per computer in ambiti di robotica o medicina. Tale decisione è stata attuata, in quanto, molti dei componenti dell'OS risiedono nello spazio di memoria protetto assegnato, cosa non possibile nei kernel monolitici, anche in presenza di versioni a dotate di caricamento-moduli.
Tuttavia, il modello monolitico tende nel gestire, in modo più efficiente, l'uso della memoria kernel condivisa, rispetto alla comunicazione inter-processo (più lenta) presente nei microkernel.
Sebbene il Mach sia il microkernel generico più conosciuto, questo tipo di progettazione è stata utilizzata per creare dei kernels per scopi specifici. L'L3 venne creato per dimostrare che i microkernels non sono, necessariamente, lenti. La versione successiva L4 e la popolare implementazione chiamata "Fiasco", è capace di eseguire Linux, in aree d'indirizzamento separate.
Il QNX è un OS creato ancora agli inizi degli anni 80 e ha un design a microkernel minimo. Tale sistema, però, è stato molto più soddisfacente rispetto il Mach, nel raggiungere i traguardi del paradigma d'implementazione. Solitamente, è utilizzato in tutti quegli ambienti ove il software non deve, assolutamente, esser soggetto a malfunzionamenti (es. braccia robotiche negli space shuttle, oppure, in quei macchinari per la lavorazione di precisione (es. per tagliare le lenti per i telescopi spaziali).

Kernel Ibridi

I kernel ibridi, essenzialmente, si basano sulla struttura dei microkernel, i quali, inoltre, presentano del codice "non essenziale", nel KernelSpace, al fine di velocizzare l'esecuzione del codice, come se fosse eseguito nell'User-Space.  Tale "drogaggio" venne introdotto prima che si dimostrasse la possibilità, per un microkernel puro, di poter raggiungere delle alte performance.
Ad esempio, il Kernel di Mac OS X "XNU", nonostante sia basato sul microkernel Mach 3.0, include del codice ottenuto dal core del BSD, presente nello stesso spazio d'indirizzamento, al fine di tagliare l'eventuale latenza presente nei design dei microkernel tradizionali. Gli OS più moderni, oggi, ricadono in tale categoria e Microsoft Windows NT (e successori), sono gli esempi più popolari.
Nella tecnologia NT, il microkernel è la parte del core dell'OS, mentre i servizi a più alto livello sono implementati nell'esecutivo NT. Vari server comunicano attraverso un meccanismo di spazio d'indirizzamento incrociato detto "Local Procedure Call" (LPC), oltre all'uso della memoria condivisa, al fine di ottimizzare le performance.
Il "DragonFly BSD" è il primo BSD OS non basato su Mach, il quale adotta un architettura del kernel ibrida.

Esempi di Kernel Ibridi sono:

ReactOS kernel
BeOS kernel
Haiku kernel
NetWare kernel
Kernel di tecnologia NT presenti su Windows 2000, Windows XP e Windows Vista

Alcune persone confondono il termine "Kernel Ibrido" con i kernel monolitici che caricano moduli operativi dopo il boot.
Ciò è sbagliato. In questo caso, l'ibrido significa che il kernel, in questione, condivide i concetti o i meccanismi d'architettura sia monolitici che delle tipologie micro. Specificatamente il passaggio messaggi e la migrazione del codice "non essenziale" dall'UserSpace, all'interno del kernel stesso, per motivi di performance.

Microkernel Atipici

Ci son alcuni microkernels non considerati propriamente puri, in quanto, implementano, di tale tipologia, solo alcuni concetti. Questi kernel "Atipici" son caratterizzati da un vasto numero di features, le quali contrassegnano come facenti parte della famiglia dei "microkernel", anche se in realtà, non vi sarebbe una presenza pura di tale design. Un esempio è il Exec, Kernel presente nell'AmigaOS e il suo diretto discendente ExecSG (o "Exec Second Generation").

Gli Exokernels

Un exokernel è un tipo di kernel che non effettua l'astrazione dell'hardware in modelli teorici. Principalmente, quest'ultimo allocca le risorse fisiche (es. l'uso del processore, le pagine di memoria, i blocchi dei dischi) a vari programmi. Quando uno di questi viene eseguito, vi è la possibilità di collegarsi alle librerie dell'OS, al fine di simulare un astrazione di un OS maggiormente conosciuto, oppure, sviluppandone delle versioni specifiche al programma, in modo da migliorarne la performance.





Links utili

Newsletter
Iscriviti
Cancellati

Ci sono 57 iscritti

In rilievo..
  JackSMS v3
  Venom Script Lite

Documenti/Guide
  Sicurezza in rete
  Cos'è SSL
  FAQ Bot
  Documenti su IRC
  FAQ Ident
  RFC 2810
  RFC 2811
  IRCx RFC

Informatica libera
  Gli Hoaxes
  Hoaxes report
  Documenti vari
  CensorWare
  Windows
  Linux

mIRC Scripting
  Codice ASCII
  Snippet mIRC scripting
  Tutorial mIRC scripting
  Dll per mIRC
  Utilities

IRCd
  Cos'è un IRCd
  Download Unreal
  Download Hybrid 6
  Download Hybrid 7
  Download Ultimate
  Download Bahamut
  Configurazione IRCd

IRC Services
  Cosa sono i Services
  Download Anope
  Download Epona
  Ircservices 5.0
  Ircservices 5.1
  Configurazione Epona
  Configurazione Anope
  Comandi ChanServ
  Comandi NickServ
  Comandi MemoServ

NeoStats
  Cosa sono i NeoStats
  Download NeoStats
  Configurazione NeoStats
  Download Moduli

IPv6
  Cos'è IPv6
  IPv6 su Win2000
  IPv6 su WinXP
  IPv6 su Linux
  IPv6 su mIRC e Xchat

Programmazione
  Tutorial C++
  Tutorial C
  Compilatori C/C++

Altro
  Contatti
  Banners Gallery

RSS Feed




Progetti
Starlight
Linux

Sponsor
Eushells.net
TradeShell.it
EasyShell.org



©2004+ IRC-Zone | Webmaster | Sitemap
Created by Cesare 'Kaesar83' Lasorella
Designed by Manuel 'erkokki' Cabras
IRC-Zone non è responsabile del contenuto dei siti linkati
Pagina creata in: 0.024 sec con 26 queries