Does firmware of a device run in the device or the device's
controller?
When does firmware of a device run? Does it run if and only if the cpu
sends commands and/or data to the device's controller?
Dipende in modo entito dal dispositivo e non è né / né.
Ad esempio, la tua unità disco SATA di varietà da giardino ha uno o più processori a sé stanti e gran parte del firmware dell'unità disco viene eseguita su quelli. Tra le altre cose, i processori del disco rigido controllano costantemente il disco per eventuali errori e, quando richiesto, segnalano alle CPU host. Questa tecnologia si chiama Self-Monitoring, Analysis and Reporting Technology ( SMART ).
I dispositivi possono anche avere Option ROM che contengono il codice di supporto per il dispositivo che può essere eseguito dalle CPU dell'host.
For BIOS, is it firmware for the bare computer system. Does it run in
the cpu? Does it still run after the OS fully started?
Sì, funziona sulla CPU del computer, ma ho l'impressione che pensi che funzioni in un contesto di esecuzione separato. In realtà è solo una libreria di codice che il sistema operativo può chiamare se necessario per eseguire una sorta di IO di basso livello (BIOS sta per sistema di input / output di base). Il sistema operativo può o non può ignorare il BIOS se ha qualche libreria alternativa di codice per lo stesso compito.
Il firmware è in realtà solo un tipo di archiviazione. Può contenere codice per l'utilizzo da parte di una CPU host, può contenere codice per i controller di periferica integrati o può contenere solo dati.