¿Existe una buena descripción del mecanismo de “llamada al sistema” utilizado en los sistemas operativos?[cerrado]

StackOverflow https://stackoverflow.com/questions/126976

Pregunta

Estoy buscando una buena cartilla o descripción técnica del Llamada al sistema Mecanismo que utilizan los sistemas operativos para realizar la transición del espacio de usuario al kernel para invocar funciones como "abrir", "leer", "escribir", etc.

¿Hay algo más que el Wikipedia ¿entrada?Sitios web, archivos PDF, libros, código fuente, todos son bienvenidos :)

¿Fue útil?

Solución

Bueno, en cuanto al código fuente, hay muchos núcleos de código abierto en los que sumergirse.

En cuanto a los libros, El libro de Robert Love. sobre el kernel de Linux es muy informativo.

Otros consejos

El método exacto depende de la arquitectura del procesador y de las operaciones que define para transferir al modo kernel.Un enfoque, y el tradicional en x86, era utilizar una interrupción de software.Resulta que esto no fue muy rápido para el caso general, así que más tarde, agregó Intel. SYSCALL y AMD agregó SYSENTER.Windows XP y versiones posteriores elijan una técnica de llamada al sistema adecuada para la plataforma en el momento del arranque.

Puede optar por utilizar números de interrupción de software específicos para funciones específicas, pero generalmente el procesador no tiene suficientes interrupciones para cubrir todas las funciones del sistema, por lo que es necesario hacer que uno de los registros contenga el número de función requerido.Si está haciendo eso de todos modos, no es una gran dificultad usar solo la función de llamada al sistema.

Windows CE, antes de la versión 6.0, utiliza un modelo de dirección virtual de proceso en paralelo que en realidad permite que los procesos se llamen entre sí directamente.Las protecciones de la página están configuradas para que cuando se haga esto, se produzca una falla de infracción de acceso:el kernel toma el control, arregla el espacio de direcciones del proceso (moviendo el proceso llamado a la ranura 0), arregla los argumentos basados ​​en la ranura 0 para que apunten al proceso que llama y regresa al modo de usuario.Debido a que la dirección del remitente está en otro proceso, cuando regresa la llamada a la función, ocurre el proceso inverso.Desafortunadamente, este modelo sólo permite espacios de direcciones virtuales muy pequeños para cada proceso (32 MB) y una cantidad baja de procesos (32), por lo que Windows CE 6.0 vuelve a un modelo de llamada al sistema más tradicional.

Quizás quieras echarle un vistazo al kernel minix.Es de código abierto, está diseñado para ser simple y se utiliza en muchos cursos de SO de nivel único.Explore /usr/src/kernel/proc.c, especialmente la función sys_call y la funcionalidad circundante.Tenga en cuenta que minix es un microkernel, por lo que algunas cosas pueden ser sutilmente diferentes a lo que está acostumbrado.

Si desea adquirir un libro que sea extremadamente útil para la programación *nix.Recomendaría "Programación avanzada en el entorno UNIX" de Stevens y Rago.Tiene explicaciones detalladas y ejemplos de código.

Para obtener una buena explicación de las llamadas al sistema en Linux, consulte los controladores de dispositivo de muestra en Controladores de dispositivos Linux.

Depende de la arquitectura y requiere una comprensión de la arquitectura de la computadora.La "Organización informática estructurada" de Tanenbaum tiene un buen resumen de los conceptos básicos de una llamada al sistema.Para obtener más información, lea cualquier libro de texto sobre diseño de sistemas operativos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top