1) et tu vas t'en servir pour quoi faire?
2) ok, mais il faudra aussi stocker d'autres choses, comme la taille/le handle de la pile...
3) par thread, même, ça pourrait être utile
4) a) pourquoi 2 maximum? b) et pourquoi pas juste 1?
5) oui évidemment (et d'ailleurs tu pourrais réfléchir à quel niveau d'interruption tu vas choisir, la 5 peut être plus intéressante...), mais ma question portait sur la gestion des sémaphores et autres verrous : est-ce que tu intégreras un support spécial dans ton task switcher ou est-ce que ce sera "démerdez-vous" ?
6) parce que c'est pas du (GNU-)C valide

Tu peux essayer :
proc->name=(char[16])"MCP"
mais je ne suis pas sûr du tout que ça marche, de toute façon The Right Thing serait de faire strcpy(proc->name,"MCP"); (et si tu tiens à padder avec des 0, tu peux utiliser strncpy, ou encore prendre une structure intermédiaire du style *(struct foo{char bar[16];}*)proc->name=(struct foo){"MCP"} mais c'est très gore)
Pour la deuxième, (struct flags){0,0,RUNNING} marche peut-être (à moins que ça foire avec les bitfields).