2010-06-15 27 views
55

La mia domanda è:In che modo software/codice comunica effettivamente con l'hardware?

Quando si preme il pulsante "Arresta il sistema" in Windows/Linux, il computer si spegne . In che modo il comando "Spegni" ha effettivamente reso il computer inattivo?

a fare il mio punto chiaro:

Quando abbiamo calciare un pallone, non v'è contatto fisico tra la palla e la nostra gamba, per la palla a move.So come si ottiene la connessione fisica tra software e hardware ? In che modo un semplice testo di codici fa fare al computer quello che fa?

+4

curiosamente, sia l'interfaccia hardware fisica che l'interazione delle sfere nel tuo esempio sono basate su forze elettromagnetiche. –

+0

Bella domanda .. –

+0

Come ha detto Pavel, considera che tutta la materia è composta principalmente di spazio vuoto! – Alan

risposta

38

Al livello di base, il codice di testo semplice alla fine si traduce in 0 e 1. Questi 0 e 1 rappresentano livelli di bassa e alta tensione. A questo punto, i livelli di tensione controllano i vari circuiti.

Pensa a una ventola alimentata a batteria. La corrente fornita dalla batteria alimenta un motore elettrico che, all'interno, utilizza l'elettricità per creare un campo magnetico che fa ruotare un albero, che fa ruotare le pale della ventola. Questo è un esempio di come la tensione può diventare fisica.

Si potrebbe creare un "interruttore" che, data la tensione corretta, alla fine otterrà l'alimentazione per interrompere il prelievo di corrente dal muro.

Ovviamente è molto più complicato di così, ma questo è il senso.

Per semplificare le cose, i computer sono composti da strati di astrazione.

Al livello più basso sono le tensioni, i circuiti, i transistor e il silicio. Lo strato successivo sopra l'hardware è il sistema operativo. Piuttosto che riscrivere il codice per ogni tipo di accesso hardware più e più volte, il sistema operativo gestisce l'hardware e fornisce "ganci" per utilizzarlo. Questi hook o "interfacce" consentono al tuo codice di avere un metodo comune per accedere a hardware eterogeneo. Quindi, utilizzando le interfacce fornite dal sistema operativo, puoi scrivere la tua applicazione.

In ciascuno di questi livelli, ci sono sottostrati, ad esempio l'hardware potrebbe avere il firmware - una sorta di set di istruzioni di basso livello che stabilisce come deve essere eseguito l'hardware, memorizzato in EEPROM e caricato quando l'unità è alimentata su. Un altro sottolivello è il modo in cui un linguaggio di livello superiore come python fornisce una libreria per scrivere software di rete senza dover programmare direttamente l'API del socket raw fornita dal sistema operativo.

Il sistema operativo gestisce la maggior parte dell'interazione hardware/software. I produttori di hardware scrivono "plug-in/moduli/driver" che consentono al sistema operativo di controllare il proprio hardware specifico.

Così si dovrebbe scrivere un'applicazione software che si avvale di queste interfacce fornite dall'OS all'hardware. Ad esempio, se si desidera spegnere il computer, Windows fornisce un'interfaccia per arrestare il computer. Il tuo software chiamerebbe questa interfaccia, e su compilazione/interpretazione, trasformato in codice che chiamerà un'interfaccia per il sistema operativo. Questa interfaccia, a sua volta, eseguirà una ben nota serie di istruzioni per istruire il computer a spegnersi. Queste istruzioni sono 0 e 1, basso e alto volt, che accedono a una parte specifica del computer progettata per gestire powerup/shutdown/standby e, dato il segnale giusto, faranno proprio questo.

1

Esistono diverse interfacce tra i programmi PC e il mondo reale esterno.

Alcuni si collegano alla CPU. Esempi di questi sono porte e interruzioni hardware (IRQ). Ciò consente l'invio di piccole quantità di dati (per richiesta del programma host) e funzioni di chiamata (gestori di interrupt) in base a trigger hardware (linea discreta che va da bassa ad alta).

Ci sono interfacce più veloci per il trasferimento di enormi quantità di dati che ignorano la CPU. Questo è chiamato DMA (accesso diretto alla memoria). Questi sono usati per trasferire dati su disco, rete, adattatori di visualizzazione, ecc.

Per la porta IO (codici IN e OUT) il software è l'iniziatore. Per IRQ, l'hardware parla per primo per attivare la risposta del software.

Solo i driver di periferica sono autorizzati a fare tutto ciò. Se provi a farlo dall'applicazione, il sistema operativo lo distruggerà all'istante. Le applicazioni si connettono a questo mondo attraverso le API presentate dai driver di dispositivo. Molte API sono standardizzate, quindi è possibile sostituire il dispositivo reale senza dover interagire in modo diverso (un interruttore di alimentazione per stampante, disco, tastiera, mouse, CRROM, ATX nell'esempio).

5

Bene, lo spegnimento non è in realtà fisico, tutti i circuiti del computer non sono completamente spenti finché non si scollega fisicamente la corrente.

Il software utilizza l'interfaccia APM (Advanced Power Management) nel BIOS per controllare i circuiti di alimentazione nel computer.

Quando il computer è spento, può ancora essere acceso senza tirare fisicamente un interruttore, ad esempio da un segnale Wake on LAN da una scheda di rete nel computer.

+1

la domanda di potere era solo un esempio. Penso che l'OP volesse sapere come qualcosa di astratto come "testo" potrebbe essere usato per controllare qualcosa di fisico come potere, o espellere il vassoio del CD ... – Alan

+2

Sì, questo è esattamente quello che voglio sapere. – AbyJames

1

Confrontiamo le soluzioni fisiche e software.

Quando si preme il pulsante, si invia effettivamente un segnale da 5 volt all'alimentatore. Questo 5 volt di potenza non si spegne mai (anche quando pensi che il tuo computer sia spento). Servono questi 5 volt per quando si preme il pulsante per accendere il computer - a quel punto vengono inviati altri 5 volt all'alimentatore per dire di riaccenderlo.

Quindi, in realtà, la pressione fisica del pulsante viene convertita in un segnale elettronico affinché l'alimentatore possa fare qualcosa.

Quando pensi alle cose in questi termini, ti rendi improvvisamente conto che il computer non ha bisogno di trasformare il suo segnale elettronico in un pulsante fisico per spengere il potere - questo è qualcosa che hanno aggiunto a beneficio degli umani (es. se pensavate che c'era un piccolo motore che spingeva un pulsante interno "spento" segreto - non esiste).

Quindi tutto il software deve fare è istruire un segnale elettronico, che attiva l'alimentazione per entrare in modalità standby 5 volt.

0

In realtà, il semplice testo di codici non rende l'arresto del computer direttamente. Chiama una procedura del sistema operativo sottostante. Il sistema operativo a sua volta richiama l'ACPI/APM sulla scheda madre. Questo farà quindi spegnere il computer.

Come il piccolo 1 e 0 interagiscono con i circuiti del vostro hardware è un argomento abbastanza complesso che si poteva leggere almeno un libro per capire completamente ...

3

La gamba calci una palla è una buona esempio. È abbastanza simile in una macchina. La CPU è collegata a tutte le altre parti del sistema, ma a differenza del sistema nervoso che è un cablaggio fisico, con tutti i nervi connessi contemporaneamente, la CPU non mantiene una connessione permanente con il resto del sistema.Si connette alla parte desiderata su richiesta - simile a fare una telefonata - tutti i telefoni hanno connessioni, ma solo pochi sono collegati in qualsiasi momento.

La CPU funziona seguendo le istruzioni di esecuzione: il programma software. Ci sono codici di istruzioni che istruiscono la CPU per comporre alcune parti del sistema. Ogni parte ha un numero e la CPU ha un'istruzione per comporre un numero. Una volta che la cpu compone quel numero, invia un messaggio a quella parte - il messaggio è semplicemente dati - da un bit fino a qualsiasi blocco di dimensione arbitrario. L'hardware in quella posizione agisce quindi sul messaggio codificato.

In questo modo, la CPU può controllare qualsiasi componente hardware utilizzando lo stesso meccanismo. L'unica cosa che cambia per ogni dispositivo è il numero che la CPU deve comporre e i dati che la cpu invia al dispositivo - i dettagli che sono messi nel software è in esecuzione la cpu.

Pertanto, per spegnere la macchina, la CPU compone il numero per il dispositivo di risparmio energia e invia le istruzioni per entrare in uno stato di alimentazione appropriato. L'hardware risponde e l'alimentatore interrompe l'invio di alimentazione primaria alla scheda madre.

Quando si scrive softare, non è necessario conoscere tutti questi dettagli da soli. Di solito sono preconfezionati come codice pronto all'uso, quindi il tuo software deve solo dire "shutdown" e i codici già pronti per questo (solitamente nel BIOS) vengono eseguiti per eseguire l'arresto, come descritto sopra.

0

Se nel caso si sta cercando in generale come viene fatto qualsiasi dispositivo per eseguire la sua azione, il dispositivo viene fornito con i firmware memorizzati nella ROM/CHIP della scheda di controllo. La scheda di controllo è utilizzata per controllare il dispositivo tramite segnali elettrici.

Sopra il firmware, si dispone di driver/fornitore di servizi. L'applicazione utilizzerà questi provider di servizi/driver per comunicare o istruire il dispositivo per eseguire alcune azioni.

Click here per saperne di più su come-firmware-comunicare-ai-dispositivi-elettronici-per-eseguire-le sue operazioni?

0

Ho riflettuto sulla stessa domanda per un po 'di quiete e mi sono reso conto che in realtà esiste una connessione dal mondo del software (fantastico) al mondo dell'hardware (reale).

Pensa a qualcosa di semplice come circuiti e interruttori, quindi pensa a qualcosa di più astratto come un sommatore o una ALU. Nel tempo l'astrazione si è costruita su se stessa e diventa complessa nella prossima rom. Poi arrivano il microcodice, Opcodes, il linguaggio macchina e infine l'assemblaggio e C. Successivamente sono arrivati ​​BIOS, OS, driver e GUI e tieni premuto il pulsante "Chiudi".

3

Il software è archiviato nell'hardware come domini magnetici sul disco rigido o sul dischetto o come tensioni basse e alte nei chip del computer. Quando si digita su una tastiera, ogni carattere viene convertito in una serie elettrica di 0 e 1 che vengono quindi memorizzati come tensioni basse e alte nei chip del computer chiamati RAM. Le basse e alte tensioni nella RAM vengono quindi convertite nei domini magnetici sul disco rigido o sul dischetto per essere successivamente letti dalle testine del disco in tensioni, o vengono memorizzati come tensioni basse e alte in chip di computer non volatili per la successiva lettura. . Le tensioni basse e alte rappresentano gli 0 e gli 1 elettrici che sono stati generati dai caratteri della tastiera.

0

Semplice: i codici/software che scriviamo sono segnali elettrici rappresentati da 0 (OFF) e 1 (ON) sulla CPU effettiva. Da quel punto pensiamo a correnti e motori.

4

Se pensi che il software sia una creatura diversa rispetto all'hardware, nessuna spiegazione ti soddisferà. Pensa al software come una sequenza di cariche elettriche.Tutto il codice che scrivi verrebbe memorizzato come una sequenza di cariche elettriche su RAM o su disco. Quindi NON stai scrivendo testo ma la sequenza di cariche elettriche. La tua scheda video sta disegnando le cose sul monitor in inglese per aiutarti a capire cosa stai scrivendo. In un certo senso, forse veramente, qualunque cosa tu faccia sul computer è fisica.

Problemi correlati