AmigaCori ha scritto:@ShInKurO
Ma per avere qualcosa di serio per gestire i processi, come accade su tutti gli altri OS a diffusione maggiore, cosa bisognerebbe fare?, riscrivere il kernel???

la memoria protetta credo che serva per impedire un crash del sistema in determinate situazioni, ma non credo che averla attivata possa risolvere il problema di isolare i processi "cattivi" e killarli

1) Tutte le risorse allocate dai programmi devono essere tracciabili: AmigaOS4 ha il resource tracking, ma si deve saper usare e si deve abilitare. Per dirti su NoWinED porte e messaggi sono tutte tracciate, ma non sono riuscito a rendere tracciabili nodi e liste nella ricerca all'interno dei file che coinvolge due processi, inoltre tutti gli hook che uso non sono tracciabili perchè le SDI non supportano questa API di OS4 (ancora). Potrei anche riscrivere ogni hook in modo che utilizzi il resource tracking, ma è davvero un gran lavoro... sugli altri OS non devi curare tu questi aspetti, ma è il sistema che si occupa di tutto;
2) La memoria dev'essere protetta, e dunque dev'essere cambiato il modo con cui i processi si scambiano i messaggi: sugli AmigaOS i processi si passano messaggi per riferimento (con i puntatori), mentre sugli altri OS se li passano per copia. Dunque se per esempio io comincio a scrivere su un messaggio di un altro processo è possibile che faccia danno, in quel caso va tutto in crash, ed è perfettamente legale su AmigaOS e derivati;
Se questi due punti sono stati implementati allora ti puoi permettere di killare un processo perchè sai che anche se stava comunicando con un altro non si porterà giù nulla perchè stava lavorando su copie dei dati dell'altro processo. Il resource tracking invece serve al sistema per individuare, quando killi un processo o va in crash, tutte le cose che aveva allocato e quindi deallocarle per metterle a disposizione degli altri programmi.
Insomma è tutto collegato. Anche se su AmigaOS4 c'è il resource tracking, il sistema non si può permettere la libertà di killare un programma con sicurezza, perchè non sa se stava scambiando informazioni con un altro processo (cioè se stava scrivendo sulla memoria di un altro processo)
. Per ottenere tutto questo c'è bisogno della memoria protetta e di un nuovo standard per lo scambio messaggi.
Riassumento, per fare quello che chiedi devi riscrivere il kernel e tutti i programmi vecchi non gireranno mai più a meno che non li fai girare su una macchina virtuale che permette il passaggio dei messaggi alla vecchia maniera.