Consenso all'uso dei cookies

SITO1 -- SITO2 -- Forum2 -- CercaGlobale -- Informativa su Cookie e Privacy

Questo Forum1 è in sola lettura -- Usa il Forum2


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
sistemi operativi e c++
#1
ciao ragazzi, sapete togliermi queste curiosità? come vengono fatti i sistemi operativi, cioè con che procedimento?
un pc come fa ad eseguire un sistema operativo in c++ come windows se non ha nessun programma per leggerlo? grazie ciao
Cita messaggio
#2
Wow, ci vorrebbero un bel pò di trattati per rispondere a sommi capi Smile

Diciamo che tutti i sistemi operativi sono composti da un cuore (il kernel) che si occupa della gestione di tutte le risorse hardware del PC, e di vari programmi che lavorano in simbiosi con esso per sfruttare il suddetto hardware. Window manager, window decorator, gestore di filesystem, shell, scheduler... sono solo alcuni di questi software.

I linguaggi di programmazione utilizzati per i sistemi operativi sono molti e non solo il C++, il kernel linux è scritto in C ed in Assembly ad esempio.
Comunque, tutti i codici sorgente vengono compilati per essere letti ed interpretati dalla CPU, quindi possono essere eseguiti direttamente dalla macchina all'accensione... ma questo è valido per qualsiasi programma che si installi sul PC, non solamente per il kernel. Per quanto esso debba dialogare con il sistema operativo sottostante per funzionare (sfruttamento della scheda grafica, della scheda audio, stampanti, ecc..) alla fine deve essere sempre eseguito dalla CPU. E' per questo che software realizzati per CPU a 64bit non potranno funzionare su CPU a 32bit.
Ogni fallimento avvicina sempre più alla meta... Arrendersi subito equivale a non provare affatto.

Il bisogno di conoscere e scoprire, è la fiamma che alimenta la fornace che è il cervello umano.
Cita messaggio
#3
ma un sistema operativo come viene fatto? uno si mette lì e scrive il kernel poi cosa fa? il kernel com'è scritto? con che comandi?
Cita messaggio
#4
Ecco, come introduzione puoi cominciare a leggere questo libro:
http://www.amazon.com/Modern-Operating-S...0136006639
c'è anche in Italiano ma la traduzione è ferma alla 2° edizione.

Non si può rispondere alla tua domanda con semplicità, la struttura generale, con qualche esempio a casi particolari, si fa all'Università nei corsi dedicati. I libri, come puoi vedere sono belli grossi (arrivano facilmente alle 1000 pagine), e poi si fanno le esercitazioni di laboratorio. Non è che uno dalla sera alla mattina si mette lì e scrive un sistema operativo, probabilmente una delle cose più complicate in assoluto dello sviluppo software.
Il mio blog: http://zerozerocent.blogspot.it/
Legge di Murphy: SE QUALCOSA PUO' ANDAR MALE, LO FARA'
Cita messaggio
#5
Esattamente, magari fosse così semplice da ridurre ad un centinaio di righe di spiegazione ExclamationExclamationExclamation

BAT è stato molto più esaustivo di me Exclamation
Ogni fallimento avvicina sempre più alla meta... Arrendersi subito equivale a non provare affatto.

Il bisogno di conoscere e scoprire, è la fiamma che alimenta la fornace che è il cervello umano.
Cita messaggio
#6
grazie a tutti ragazzi, molto bravi anche su un campo così vasto e complesso
Cita messaggio
#7
Beh Nicoseven a parte il libro consigliato da BAT che di sicuro è interessante...diciamo che nonostante la tua curiosità (che andrebbe soddisfatta) hai chiesto qualcosa che non è semplice nemmeno da spiegare eheheh pensa te poi da fare eheh...soprattutto se non hai basi di programmazione...e dalla tua domanda iniziale si intuisce che non conosci nemmeno la differenza tra codice compilato e interpretato che è uno degli inizi...e anche differenza tra linguaggio ad alto e basso livello.....ci sarebbero poi anche differenziazioni in base al paradigma della programmazione e oggi sono per lo più strutturati o orientati ad oggetto (OOP, Object Oriented Programming)...questi ultimi vanno per la maggiore.

Se vuoi io in senso generico ti posso parlare a livello storico per quale motivo sono nati i sistemi operativi, ai primordi (anni 50/60) la loro funzione in molti mainframe era quella di avere un ambiente di gestione che supportasse determinati linguaggi di programmazione....in sostanza erano quasi solo ambienti di "esecuzione" che facevano da "intermediario" tra l'hardware disponibile e il linguaggio stesso di programmazione altro non facevano...molti di questi sistemi operativi "da laboratorio" nascevano proprio esclusivamente per lanciare un determinato linguaggio di programmazione, sempre proprietario....questi linguaggi avevano finalità mirate a singoli scopi...non erano quasi mai studiati per un senso generalista...ma proprio mirato a singole macchine o singole funzioni...spesso solo di calcolo o di database.....l'uso generalista della programmazione arriverà solo tempo dopo.
Questo legame tra linguaggio di programmazione e sistema operativo ha fatto nascere anche ambienti noti...tipo la nascita del Linguaggio C nel 1969 da parte di Dennis Ritchie alla fine impose la nascita anche di un OS su cui appoggiare tale linguaggio e così nacque Unix con l'aiuto di Ken Thompson nel 1972.
Persino durante la nascita di Java, i suoi sviluppatori inizialmente nel 1992 per testare il tutto svilupparono anche un OS che si chiamava GreenOS e a dire il vero Java si chiamava Oak ancora eheh
Potrei andare avanti con altri linguaggi....tipo...molti computer 8bit degli anni 80 avevano il basic come linguaggio ma questo non era a sé...ognuno di questi computer aveva un sistema operativo su cui poi si eseguivano programmi in basic ma anche in assembly (che è un linguaggio a basso livello)....devi sapere che per esempio anche ai primordi di Linux l'originale fu scritto interamente in parte in assembly e in parte in C...Torvalds adottò il GCC fin dall'inizio perché era free...molti compilatori del linguaggio C erano proprietari e quindi a pagamento, il GCC sviluppato da Stallman e quindi della comunità del Software Libero (FSF) invece era l'unico gratuito.

Ma non vorrei crearti casino...era solo per spiegarti che l'iniziale esigenza dei sistemi operativi era dovuto alla creazione di un ambiente su cui eseguire effettivamente lo sviluppo di determinati linguaggi, era un po' un circolo vizioso inizialmente, l'OS serviva per testare determinati linguaggi e alla fine sviluppando questi linguaggi progrediva anche l'OS eheh...il secondo passo fu quando l'hardware divenne diversificato e quindi singoli OS dovevano a loro volta adattarsi a varietà di macchine....sembra che uno dei primi OS a studiare questo problema fosse il CP/M della Digital Research nel 1974, in verità la modifica avvenne qualche anno dopo, quando appunto il CP/M che originariamente era fatto per le cpu intel 8080 dovette essere usato anche sulle zilog Z80 e sulle 8086...successivamente passò anche alle motorola 68000....questo è il nonno del Dos....per rendere compatibile tale OS con vari tipi di piattaforme diverse si decise di scinderlo in componenti chiave...la parte principale di gestione diretta all'hardware prese il nome di Bios, poi c'era la parte di base dell'os che si chiamava BDOS (Basic Disk Operating System), infine vi era la console per digitare i comandi che si chiamava CCP (un po' come una interfaccia terminale)...capisci da solo che variando il solo Bios per ogni tipo di hardware diverso il CP/M poteva essere eseguito senza problemi e con poco dispendio di tempo nelle modifiche....a fine anni 70 divenne uno degli OS maggiormente usati e che interessò per la prima volta una grande moltitudine di sviluppatori amatoriali che svilupparono per la prima volta su macchine diverse a casa propria con i loro "home" computer fino quasi a metà anni 80.
Tornando al legame detto inizialmente tra linguaggi di programmazione e OS, anche il CP/M nasceva originariamente come ambiente per il linguaggio PL/M, un linguaggio sviluppato all'interno dei laboratori IBM per cpu intel nel 1972 sempre dallo stesso sviluppatore che ha creato il CP/M.
Tale OS è discretamente rilevante perché è il primo che fa uso di un hardware abstraction layer (in parole povere uno strato che fa da interprete specificatamente con l'hardware).....da questo ripresero molti concetti strutturali sia il Dos (non solo quello di MS) e anche successivi OS...e siamo nei primissimi anni 80....il periodo proprio in cui IBM fa nascere il primo personal computer (che poi era solo una brutale copia di alcuni model S-100 del 1976/79 eheh ma lasciamo perdere :biggrin2: fa finta di non aver letto sta parentesi eheheh).
I moderni sistemi operativi hanno fatto oro di questi concetti tanto che come ti ha detto Dukko quelli odierni sono divisi in parecchie parti sviluppate anche in modo indipendente da singoli team specifici.

Mi fermo qui...tanta carne sul fuoco....la successiva evoluzione sono appunto il passaggio dalle interfacce testuali a quelle grafiche...altro capitolo a sé....in verità c'è un passaggio prima delle interfacce grafiche che alcuni uniscono insieme ed è la nascita del multitasking ma questo a differenza di quello che si crede non è nato con le interfacce grafiche.

Se hai dubbi chiedi...ma in rete troveresti molte spiegazioni....leggi i vari link che ti ho messo sparsi....e se vuoi richiedi Smile
Cita messaggio
#8
wow... grazie mille e intanto un bel +..... ho capito abbastanza. grazie....
mi avete tolto alcune curiosità.... grazie mille.
Altra domanda: una guida per iniziare a capire qualcosa di questo cose, cioè di programmazione, molto ma molto basilare? dove la trovo? grazie mille ciao
Cita messaggio
#9
Pensare da Informatico, testo introduttivo alla programmazione usando Python
http://web.econ.unito.it/terna/infsimeco...nk_ita.pdf

P.S
non conosco Python il libro è free e ne esistono versioni per C, C++ e Java, solo che non sono tradotte in Italiano.
Il mio blog: http://zerozerocent.blogspot.it/
Legge di Murphy: SE QUALCOSA PUO' ANDAR MALE, LO FARA'
Cita messaggio
#10
grazie mille, lo stampo
Cita messaggio


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)