Luxur el kernel que comenze a desarrollar hace bastante tiempo...ya esta avanzando de a poco....ahora se pueden crear aplicaciones tal como se harian para windows o linux..pero muy basicas...por ejemplo...
printf,scanf,sleep,fopen,fread,fwrite....todo igual que en windows....y para adaptar la aplicacion a luxur...simplemente deben agregar el nombre de la funcion (en ves de main) el nombre de su funcion en el archivo handle.sys hubicado en la carpeta programas...y listo...compilamos y tenemos el kernel con nuestro programa.
se mejoro el file system de tal manera que se permitio a las aplicaciones que corren a nivel usuario...interferir con el file system mediante la apertura con fopen y modificacion con fwrite ...asi como la lectura con fread.
se mejoro el bucle de la shell() para una mejor velocidad...y se separo los comandos de la shell para ser tratados como aplicacion a nivel usuario.
Hace tiempo, vi el código de tu "kernel". Te comento unas cosas:
- Un kernel, tiene una GDT, IDT y LDT para tratar las interrupciones. Se empieza por aquí, no pases a otra cosa si no tienes una GDT e IDT decentes. - Necesitas controlar los IRQ´s Interrupt Requests. Hay una IRQ específica para el teclado, de esta manera detectas cuando se pulsa una tecla. - Paging, Heap, etc..
Y eso de que tus aplicaciones corren en modo nivel de usuario, no te lo crees ni tu xD. Para cargar un ejecutable en memoria necesitas: GDT, IDT, LDT, IRQ´s, Paging, Heap, un schedule (sistema para ejecutar threads), etc..
no sigo las leyes de los demas s.o...mi sistema no es una copia o clon de otros s.o...el que no alla implementado una gdt y idt es solamente porque no quise...fijate en mi primera version del kernel...yo cargue la GDT pero ya en la segunda version..se lo quite.
el manejo de las interrupciones solo te lleva 2 archivos...con respecto a la irq es solo un handle de interrupciones y no necesariamente tiene q manejarse de esa forma el teclado. en mi kernel en el cual manejo perfectamente el teclado..solo capturo la interrupcion que se realiza al soltar la tecla.
con respecto a la paginacion...yo en mi kernel no pagino la memoria ya que toda la memoria se la lleva la aplicacion que se esta ejecutando...por lo tanto cualquier aplicacion puede acceder a cualquier direccion de memoria...incluso la de video 0xB8000...el teclado 0x60, etc..
porque entonces? el hecho es simple....los programas hechos para Luxur se ejecutan sin limites..por lo tanto en Luxur cualquiera puede usar su Programa como si fuera el kernel...siempre como root.
Para cargar un ejecutable en memoria necesitas: GDT, IDT, LDT, IRQ´s, Paging, Heap, un schedule (sistema para ejecutar threads)
Saludos.
error...las aplicaciones son simplemente codigos.que no necesariamente tienen que cargarse asi..desarrolla una aplicacion para mi kernel en la cual uses fopen y luego intenta ejecutarla sin ser root...Fail.
cualquiera puede cargar lo que quiera en memoria...sin una gdt, idt, irq...sino el bootloader no podria cargar tu kernel sin una gdt, idt y irq.
te recomiendo el libro...Diseño e implementacion de un SO...del famoso andres.
Yo mismo pense el Desarrollo de mi sistema y como debe funcionar...No sigo tutoriales para su creacion.
aca un video de Luxur...0.0.6
y aca esta cuando tenia un entorno manejable desde el teclado...es la version 0.0.4 pero se lo quite por la cantidad de errores q me tiraba al ejecutarlo en la pc real.
Y ahora es cuando te digo.. ¿quien querría desarrollar aplicaciones en un sistema monotarea? Porque digo yo, que en alguna de tus aplicaciones tendrás la necesidad de hacer dos cosas a la vez y para eso te hará falta un sistema de threads.
Esta bien que hagas algo fuera de lo común pero hay que ser realistas. Un kernel básico para la plataforma x86 debe tener todo lo que te mencioné, y no se trata de que la gdt o idt sean sólo un archivo, se trata de comprender como funcionan y para que sirven.
Y otra cosa, ¿que harías si un programa necesita memoria dinámica utilizando malloc() o new(), por ejemplo?
Saludos.
« Última modificación: 9 Agosto 2011, 01:04 am por Khronos14 »
Y ahora es cuando te digo.. ¿quien querría desarrollar aplicaciones en un sistema monotarea? Porque digo yo, que en alguna de tus aplicaciones tendrás la necesidad de hacer dos cosas a la vez y para eso te hará falta un sistema de threads.
Esta bien que hagas algo fuera de lo común pero hay que ser realistas. Un kernel básico para la plataforma x86 debe tener todo lo que te mencioné, y no se trata de que la gdt o idt sean sólo un archivo, se trata de comprender como funcionan y para que sirven.
Y otra cosa, ¿que harías si un programa necesita memoria dinámica utilizando malloc() o new(), por ejemplo?
Saludos.
Exacto...pero yo no deseo que Luxur sea "EL kernel" o que llegue a mayores..de hecho esta pensado para ser bien basico y poder comprender su Funcionamiento en tan solo unas Horas.
mas que para utilidad esta pensado para el estudio..del desarrollo de un kernel bien de 0.
De todas formas se pueden hacer lindos programas para Luxur...ya que tienen completo acceso al hardware. sin limitaciones...Luxur se encarga de que tu programa arranque bien y finalize bien..nada mas.
Igual gracias por tu opinion...Todas las opiniones son bien recibidas
« Última modificación: 10 Agosto 2011, 03:18 am por taul »
Me gusta tu idea. He corrido tu kernel en virtual box, he leido tus PDF's y he mirado tu codigo, bueno mi preguntas es si se podria hacer en c++ igual de fácil.
Salu2 y Feliz año nuevo!
En línea
"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana. Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas" The knowledge is free
Pues yo te felicito y lo mas importante, esque aprendas mientras lo desarrollas. De todas formas creo que el tema de las IRQ's es fundamental.
Otra cosa, se que no es de vital importancia pero arregla un poquito la web de éste, Haz unas secciónes basicas, algún screen mas y el redactado con las mayusculas donde toque.
No le veo malo a la senzillez de la web, pero intenta añadir información.
Hey taul, luxur me ha inspirado para poder empezar a crear mi propio sistema operativo, de hecho he tenido que 'tomar prestado' la funcion scanf() de luxur 0.0.2 pero la adapte para mis funciones printf() (tengo alrededor de tres printf para distintos propositos) y todas las funciones de mi sslib (que esta pensada para ser utilizada por cualquier programa que desee ejecutarse bajo la arquitectura x86 y ademas sin depender de ningun so) Leyendo el codigo de distintas versiones te luxur y del kernel de linux 0.0.1 estoy aprendiendo como funciona un so de verdad. En estos momentos estoy programando la v0.02 de NuOS (mi so ) que ya posee una shell (inspirada en el cmd de luxur) Aca dejo los enlaces a mi proyecto, que poseen recursos para los que deseen aprender a crear sistemas operativos y una wiki del proyecto en sourceforge, que resume como funciona mi kernel. https://sourceforge.net/projects/nuos/ http://nuosdeveloper.blogspot.com/ Me parece excelente tu SO. Adios.
Hey taul, luxur me ha inspirado para poder empezar a crear mi propio sistema operativo, de hecho he tenido que 'tomar prestado' la funcion scanf() de luxur 0.0.2 pero la adapte para mis funciones printf() (tengo alrededor de tres printf para distintos propositos) y todas las funciones de mi sslib (que esta pensada para ser utilizada por cualquier programa que desee ejecutarse bajo la arquitectura x86 y ademas sin depender de ningun so) Leyendo el codigo de distintas versiones te luxur y del kernel de linux 0.0.1 estoy aprendiendo como funciona un so de verdad. En estos momentos estoy programando la v0.02 de NuOS (mi so ) que ya posee una shell (inspirada en el cmd de luxur) Aca dejo los enlaces a mi proyecto, que poseen recursos para los que deseen aprender a crear sistemas operativos y una wiki del proyecto en sourceforge, que resume como funciona mi kernel. https://sourceforge.net/projects/nuos/ http://nuosdeveloper.blogspot.com/ Me parece excelente tu SO. Adios.
HOSTIAS! tú por aquí! que pequeño es el mundo hacker
PD: taul, yo le recomendé Luxur, cobro alguna comisión?
HOSTIAS! tú por aquí! que pequeño es el mundo hacker
PD: taul, yo le recomendé Luxur, cobro alguna comisión?
hehe gracias a tu recomendacion he podido entender este mundillo de los so por cierto, has visto ya el screenshot de mi blog? muestra lo poco que se puede hacer con mi kernel en desarrollo saludos a todos