• [^] # Re: Pas sûr de tout comprendre

    Posté par . En réponse au journal Pourquoi Windows. Évalué à 4.

    Windows propose beaucoup des fonctions aux signatures complexes sans consistance dans les types ni l'ordre des arguments avec des doublons (tous ces problèmes pour des raisons de compatibilité avec les anciennes versions).

    Il y a le même type de problème dans toute API un peu vieille qui continue à évoluer, par exemple POSIX (certes, POSIX n'évolue pas énormément, ce qui est un autre problème...).

    il y'a un mélange d'appels systèmes et de fonctions en userland dans l'API Win32 et il n'est pas toujours facile de savoir si une fonction fera un appel système ou non ni quel sera son coût

    C'est pas évident sous POSIX non plus (sem_wait, ça fait un appel noyau ou pas ? c'est rapide ou lent ? sous Linux, c'est probablement rapide, sous OS X, c'est probablement lent...). La seule façon sûre de connaître le coût d'un appel, c'est de faire des benchmarks. Après, il y a quelques primitives Windows qui sont documentées comme « rapides » (comme les critical sections).

    Exemple typique des avantges du cloisonnement: comment faire un serveur web light avec windows ? Avec linux on peut le faire en 500MB sans problème. Et avec Windows 10 ?

    La question est imprécise. Tu veux dire qu'un « serveur Web » (j'imagine un serveur HTTP) nécessite plus de 500 Mo de RAM sous Windows ?

    C'est pas difficile de tester, en fait avec Python, ça se fait en un clin d'oeil :

    (35) c:\>python -m http.server
    Serving HTTP on 0.0.0.0 port 8000 ...
    127.0.0.1 - - [06/Jan/2017 19:41:18] "GET / HTTP/1.1" 200 -
    127.0.0.1 - - [06/Jan/2017 19:41:18] code 404, message File not found
    127.0.0.1 - - [06/Jan/2017 19:41:18] "GET /favicon.ico HTTP/1.1" 404 -
    127.0.0.1 - - [06/Jan/2017 19:41:18] code 404, message File not found
    127.0.0.1 - - [06/Jan/2017 19:41:18] "GET /favicon.ico HTTP/1.1" 404 -
    127.0.0.1 - - [06/Jan/2017 19:41:28] "GET /Users/ HTTP/1.1" 200 -
    127.0.0.1 - - [06/Jan/2017 19:41:30] "GET /Users/desktop.ini HTTP/1.1" 200 -
    

    Et hop, voilà un processus servant des requêtes HTTP. Après quelques requêtes depuis mon navigateur envoyé sur l'adresse http://localhost:8000, le gestionnaire de tâches Windows m'indique que le processus Python bouffe 11 Mo. Il y a peut-être quelques structures noyau en plus à prendre en compte, mais je doute que ça atteigne les 500 Mo :-)

    Concernant l'optimisation mémoire d'un système Windows tout entier, j'imagine que ça se fait, mais ce n'est pas vraiment mon rayon. Personnellement, j'utilise une VM « de bureau » :-)