Visualizzazione dei risultati da 1 a 3 su 3

Discussione: il pingu e l'hardware

  1. #1

    il pingu e l'hardware

    ed eccoci alla mia quotidiana rubrica "come diavolo funziona il nostro amato pingu?"

    ciò che so e che potrebbe essere messo in dubbio da voi con mio sommo dispiacere è quanto segue:

    - linux raggiunge l'hardware attraverso i file di tipo c e b (a caratteri e a blocchi)

    - questi file interfacciano il kernel con l'hardware attraverso due loro proprietà: il major e il minor, due numeri indicanti il tipo di periferica e una sorta di numero d'ordine di periferica del tal tipo. così il dispositivo a blocchi 3 0 è l'ide primary master, 3 1 la sua prima partizione primaria, 3 2 la sua seconda partizione primaria, ecc. ecc. ecc. per tutto il resto del mondo accessibile dal kernel

    - ad ogni major viene assegnato un certo driver, del quale verranno invocate le routine read, write, ioctl, ecc. quando si richiedessero operazioni sul file con quel dato major

    premesso ciò, le mie ansie sono generate dal seguente garbuglio mentale:

    con tutte le periferiche che esistono a questo mondo, e che possono essere create con poco sforzo (esempio una caffettiera), come possono 256 major a definire univocamente e completamente tali periferiche? nel file Documentation/devices.txt nell'albero dei sorgenti del kernel vengono indicati con precisione a che tipologia di hardware fanno riferimento i vari major (e minor). ora se io volessi creare il dev per la mia caffettiera di esempio dove lo attacco? presumo che non esisterà un major standardizzato apposta per le caffettiere.. insomma come possono 256 numeri stare dietro ad ogni immaginabile ed inimmaginabile periferica? inoltre ammettiamo che io attacco qualche device di tipo "cellulare". ne metto uno su un controller ide, uno su porta seriale, uno su bus usb e uno attaccato in qualche modo su una scheda di rete. ammettendo tali collegamenti possibili (il fornitore dei cellulari mi ha dato gli appositi cavi ed ha progettato i cellulari in questione per funzionare con i bus sopraelencati), come farà il mio pingu ad assegnare i minor? magari si farà dare un certo ordine dal bios..? ma soprattutto come farà ad usare quei cellulari, tutti uguali, quindi in teoria tutti pilotati dallo stesso driver, se magari gli mancano i driver per il bus usb, o per la scheda ethernet sulla quale volevo mettere il cellu? insomma non dovrebbero essere necessari PIU' driver (bus usb -> cellulare) per accedere ad una periferica identificata da UNA coppia major/minor?



    link link link, datemi tanti link
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

  2. #2

    Re: il pingu e l'hardware

    [QUOTE]Originariamente inviato da adarkar

    Quanto segue e` da considerarsi rigorosamente AFAIK/IIRC (forse dovrei aspettare di essere sveglio prima di rispondere... )

    con tutte le periferiche che esistono a questo mondo, e che possono essere create con poco sforzo (esempio una caffettiera), come possono 256 major a definire univocamente e completamente tali periferiche?
    Premesso che 256 major dovrebbero distinguere tra diverse classi di periferiche, e non periferiche stesse,
    infatti non possono bastare:
    codice:
    The major number is a small integer that serves as the index
    into a static array of char drivers; "Dynamic Allocation of 
    Major Numbers" later in this chapter explains how to select 
    a major number. The 2.0 kernel supported 128 devices; 2.2 
    and 2.4 increased that number to 256 (while reserving the 
    values 0 and 255 for future uses). Minor numbers, too, are 
    eight-bit quantities; they aren't passed to register_chrdev 
    because, as stated, they are only used by the driver itself.
    There is tremendous pressure from the developer community to
    increase the number of possible devices supported by the 
    kernel; increasing device numbers to at least 16 bits is a 
    stated goal for the 2.5 development series.
    ( http://www.xml.com/ldd/chapter/book/ch03.html#t2 )

    codice:
    ora se io volessi creare il dev per la mia caffettiera di esempio dove lo attacco?
    Se non esiste ancora un major per le caffettierie, dovresti accordarti con gli sviluppatori del kernel e deciderlo, altrimenti e` fatta

    insomma come possono 256 numeri stare dietro ad ogni immaginabile ed inimmaginabile periferica?
    Beh, come detto in realta` occore star dietro ad ogni classe di periferica, piu` precisamente ad ogni astrazione di classe di periferica scelta dal kernel:
    Per dire: i dischi EIDE o SCSI si accedono tutti uniformemente mediante gli stessi major number, indipendentemente dal controller cui sono connessi. E questa
    scelta ammazza di gia` la varieta` di dischi, e di controller.
    Comunque, come riportato, questo e` (era) effettivamente un problema.

    inoltre ammettiamo che io attacco qualche device di tipo "cellulare". ne metto uno su un controller ide, uno su porta seriale, uno su bus usb e uno attaccato in qualche modo su una scheda di rete.
    Nel primo e nel terzo caso avresti effettivamente bisogno di un nuovo device (probabilmente, almeno), se, ad esempio, il coso non si presenta di suo come disco EIDE (o memoria di massa USB, la quale a sua volta viene vista come unita` SCSI). Per la seriale scrivi su /dev/ttyS* e risolvi il problema, per l'eth non ci sono neanche device apposite...

    come farà il mio pingu ad assegnare i minor?
    Problemi dello specifico driver :P

    ma soprattutto come farà ad usare quei cellulari, tutti uguali, quindi in teoria tutti pilotati dallo stesso driver, se magari gli mancano i driver per il bus usb, o per la scheda ethernet sulla quale volevo mettere il cellu?
    Direi che non fara` del tutto, in questo caso...
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  3. #3
    ehilà! grazie mille x le delucidazioni!
    un bel po' di cose me le sn chiarite, avevo fatto un po' di casotto cn alcune cose.. poi se mi vengono altri dubbi amletici riposto

    w il pingu con le caffettiere
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.