Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    65

    [C] differenza tra system call e non

    Potete aiutarmi a togliere un dubbio? la reale differenza tra una system call e non qual'è? cioè ad esempio la differenza tra una 'fopen' ed una 'open' (a parte i parametri che vengono passati)... grazie!

  2. #2
    Di base si parla di syscall se viene eseguita in kernel space e non direttamente all'interno del tuo processo in user mode.
    Poi in realtà la distinzione si è sfumata, visto che molte API di sistema (specialmente su Windows, dove c'è una marea di funzionalità fornite dalle librerie di sistema fondamentali) sono di fatto implementate almeno in parte in user-mode, o che diverse syscall su Linux sfruttano meccanismi particolari per fare il loro lavoro evitando il trapping in kernel mode (che tende ad essere costoso in termini di performance).

    Sulla distinzione read/fread, sono due oggetti molto diversi; fread è una funzione dello standard C, normalmente implementata completamente in user-mode e che lavora sugli stream della libreria C (i FILE *); implementa le specifiche dello standard C e può fornire buffering in user-mode. Alla fin della fiera, poi, delega il lavoro di lettura vero e proprio al sistema operativo.
    La read invece è una syscall POSIX, che opera sugli stream di file POSIX, e che è implementata in kernel mode; su sistemi POSIX normalmente la fread è di fatto implementata usando la read, ovvero tutto il sistema di stream del C risulta essere un'astrazione sulle varie syscall POSIX (sui sistemi POSIX) o sulle corrispondenti API di Windows (su sistemi Windows).

    Ergo, le funzioni di IO del C forniscono sostanzialmente due vantaggi sull'uso diretto delle syscall corrispondenti: sono indipendenti dal sistema operativo (ad esempio le posso usare sia su Linux che su Windows che su Mac OS X) e fanno buffering in user mode (il che consente di evitare di fare continue syscall per ogni lettura/scrittura, ottenendo così potenzialmente migliori prestazioni).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    65
    grazie per la risposta MItaly, è stata molto esaustiva...

  4. #4
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.