Bonjour,
Es-ce que l'on peut m'expliquer ce que c'est exactement une primitive du noyau ?
Merci ! !
Bonjour,
Es-ce que l'on peut m'expliquer ce que c'est exactement une primitive du noyau ?
Merci ! !
je pense que c'est une fonction que le noyau (le systeme) te fourni et qui permet generallement d'acceder a une partie restreinte de l'ordi.
Par exemple, sur certain systeme la primitive get_mem (j'invente mais bon) te permet de reserver de la memoire. De cette maniere, le systeme peut controler les processus et eviter que n'importe qui fasse n'importe quoi.
Ceci permet d'unifier et de simplifier les programmes.
J'espere etre assez clair, mais on ne sait jamais...
c'est trés clair merci !!! mais... avec get_mem par exemple, es-ce qu'on y accede par programme C++ par exemple ?
Generallement, on accede pas directement aux primitives du systeme.
Pour allouer de la memoire en c++, c'est new qui fait appel aux primitives system.De meme en C, c'est malloc.
Si tu desassemble un code, ca donne :
pour l'appel a malloc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 08048460 <mm>: 8048460: 55 push %ebp 8048461: 89 e5 mov %esp,%ebp 8048463: 83 ec 08 sub $0x8,%esp 8048466: 83 ec 0c sub $0xc,%esp 8048469: 6a 10 push $0x10 804846b: e8 ac fe ff ff call 804831c <_init+0x38> 8048470: 83 c4 10 add $0x10,%esp
et si tu regarde le _init+0x38 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 void mm(void){ int *t=(int *)malloc(4*sizeof(int));
et enfin, si on regarde 0x8049538T:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 804831c: ff 25 38 95 04 08 jmp *0x8049538T
on a des valeurs, qui doivent rediriger vers le noyan. (les parametres etant passes sur la pile (push $0x10).
je crois que cela me suffit pour l'instant
merci bcp !!
voila une bonne explication (en anglais) sur les notions de primitives d'un noyau :
http://www4.ncsu.edu:8030/~abdudani/...erization.html
a+
JB
Partager