Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505

    system calls - dubbio

    salve a tutti! sono nuovo nel forum, e lo trovo assai interessante sotto molti aspetti.

    ho iniziato all'università un corso chiamato Sistemi operativi. (si tratta prevalentemente linux).
    si parla (ovviamente) di OS nel dettaglio.
    fatto stà che il docente l'altro giorno ha introdotto il concetto di system calls (che lo trovo assai interessante).

    da quanto ho capito il ragionamento è il seguente :

    tramite API (user-mode, win32api per win e posix per unix/linux/mac) invoco la relativa system call (interfaccia user/kernel, definita tramite tabella indicizzata) la qualche chiamerà a sua volta la relativa funzione implementata nel kernel (kernel-mode) che interagirà (per esempio) con l'hw.

    tutto questo si fà per la protezione di accesso all'hw e sicuramente per semplicità di interagire con esso.

    ora, sapendo che comunque il kernel è scritto in c, quello che mi chiedo è :
    potrei (avendo sicuramente un'esperienza enorme) implementare una system call all'interno di un mio programma (sempre in user-mode) scritto in c? o il compilatore (che è appoggiato "sopra" al kernel) mi impedisce categoricamente di eseguire determinate istruzioni?

    aspetto una risposta, perchè in base a questa domanda, sorgono ulteriori dubbi

    grazie a coloro che mi aiuteranno a capire questa incomprensione! ciao \o

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    calmi non spingete... c'è posto per tutti!!!!

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Probabilmente non c'e' la fila per rispondere perche' il tuo non e' un problema specifico di programmazione (non hai un codice che non funziona ...).

    E anche perche' la domanda non e' affatto chiara ...

    Cosa vorresti fare con precisione?

    Se vuoi scrivere a livello di kernel, lo puoi fare con Windows scrivendo un device driver (a condizione di avere quell'esperienza di cui parli) con cui interfacciare da un lato un tuo hw specifico e dall'altro un codice user-mode ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    ma infatti non è quello che vorrei fare!

    quello che mi fà pensare è che se il kernel lavora con l'hw... e pur essendo scritto in c, non potrei a livello user-mode bypassare il kernel e lavorare direttamente sull'hw. perchè questo? è il compilatore che non mi dà i permessi o è il kernel che esclude questo?

    essendo in c, dovrai avere le stesse possibilità che ha il kernel...

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il linguaggio non ha alcun collegamento con il kernel mode o l'user mode.

    Non e' che se scrivi in C allora "automaticamente" scrivi in kernel mode ...

    Il kernel mode e' una modalita' particolare di funzionamento del codice in esecuzione (gira a ring 0, ovvero con permessi elevati per quanto riguarda i meccanismi di protezione della CPU ...)

    Quindi il compilatore/linguaggio non c'entra nulla.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    uhm no non ci stiamo capendo mi sà heheh.
    stò discutendo il fatto che essendo entrambi scritti in c, hanno lo stesso "potenziale". mi spiego :

    se nel kernel c'è l'implementazione della funzione per una determinata system call, allora la stessa implementazione la potrei fare su un mio programma scritto a livello user-mode (visto che il linguaggio è lo stesso). quindi la mia domanda è : posso implementare queste funzioni? e se la risposta è no (sicuramente è no, sennò ognuno potrebbe interfacciarsi direttametne con l'HW da user-mode) cosa è che mi impedisce di farlo? è il kernel che mi blocca o è il compilatore che (magari) non riconosce certe librerie visibili solo (per esempio) in "kernel-mode"?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il compilatore non ti impedisce nulla: prende quello che scrivi e lo traduce in codice eseguibile.
    Ciò che ti viene impedita è l'esecuzione di quel codice. Per scrivere una funzione che interagisce direttamente con l'hardware devi obbligatoriamente andare ad indirizzare alcune risorse (tipicamente tradotte tramite indirizzi di memoria). Questi indirizzi di memoria non sono direttamente accedibili da un programma eseguito in user-mode (non fanno parte dello user-space). Quindi quel programma, semplicemente, non funzionerà e verrà terminato con un codice d'errore che indica il tentativo di accesso ad una zona di memoria non disponibile.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    ecco, è quello che volevo sapere! allora è l'esecuzione che viene impedita...quindi a livello di compilazione non dà nessun errore!

    potrei allora definirmi la funzione come modulo per il kernel e inventarmi "così" una system call... che sicuramente è un azzardo non conoscendo pienamente il kernel e l'architettura dell'elaboratore!!!

    grazie per il chiarimento! arrivederci \o

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da markzzz
    ecco, è quello che volevo sapere! allora è l'esecuzione che viene impedita...quindi a livello di compilazione non dà nessun errore!
    Mi pareva d'averti gia' detto che il linguaggio non c'enta nulla ... non era chiaro?

    potrei allora definirmi la funzione come modulo per il kernel e inventarmi "così" una system call... che sicuramente è un azzardo non conoscendo pienamente il kernel e l'architettura dell'elaboratore!!!
    Mi sa pero' che hai ancora confusione e non hai capito ...

    Non puoi definire o inventare proprio nulla che acceda al kernel in usermode.

    Se vuoi scrivere codice in kernel mode, scarica il DDK e scrivi un device driver.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    no no, intendevo propio scrivere in c un modulo e ricompilare il kernel (integrando così il nuovo modulo)... (che è più o meno quello che dovremmo fare per l'esame di sistemi operativi)

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.