2009-06-02 8 views

Respuesta

7

Semáforos, bloqueos, variables de condición, etc. son conceptos de sistema operativo y deben implementarse normalmente en términos de características del kernel del sistema operativo. Por lo tanto, generalmente no es posible estudiarlos de forma aislada; también debe tener en cuenta el código del kernel. Probablemente la mejor manera de hacerlo es echar un vistazo al Kernel de Linux, con la ayuda de un libro como Understanding The Linux Kernel.

-2

puede ponerse al día con un montón de IPC (Inter Process Communication) Libros, que pueden explicar los pormenores de lo que necesitar. Hay un libro clásico. Unix Network Programming Inter Process Communication de Richard Stevens. obtendrás todo lo que necesitas :)

+4

Semáforos, bloqueos y variables de condición no son mecanismos de comunicación entre procesos y no tienen nada que ver con la red. –

+0

sí, lo sé y estoy de acuerdo con usted, pero solo lo menciono como un libro de referencia para el tema mencionado que vale la pena, mire el libro :) – Afridi

1

Para una comprensión básica, puede referirse libro Operating System Concepts, por Avi Silberschatz, Galvin Peter Baer, ​​Greg Gagne y es realmente bueno.

También puede visitar el sitio Dave Marshall's para obtener ayuda. Consulte la sección de semáforo allí.

2

En la planta baja, si desea implementar ese tipo de cosas, necesitará usar el lenguaje ensamblador. C y C++ simplemente no exponen el tipo de características necesarias para escribir código simultáneo, excepto mediante el uso de bibliotecas, que usan el ensamblador en su implementación.

3

Un buen punto de partida para aprender conceptos de sistema operativo es probablemente "Sistemas operativos modernos" de Andrew Tanenbaum. También tiene otro libro sobre su propio Sistema Operativo (Minix), que se llama "Sistemas Operativos: Diseño e Implementación", que entra más en detalle sobre la codificación. Debería poder encontrar esos libros en su biblioteca local.

Temas relacionados que quizás desee consultar para conocer cómo y por qué usar semáforos: condiciones de carrera, sincronización, multihilo, problema productor-consumidor.

2

Las cosas de minix son bastante buenas. Un ejemplo más simple es el material de MicroC/OS. Viene con un libro de texto que entra en buen detalle, toda la fuente está allí. Tiene los elementos básicos allí y el código es lo suficientemente pequeño como para que pueda entenderlo en un período relativamente corto de tiempo.

http://www.micrium.com/products/rtos/kernel/rtos.html

http://en.wikipedia.org/wiki/MicroC/OS-II

Otra cosa que puedes hacer, es hacer unos falsos cabo OS en una aplicación en Linux. Hice esto configurando el tic básico con un itimer, luego intercambiando hilos con la función llamada swapcontext (man 2 swapcontext) que guardará los regs en la pila. Eso saca lo feo del camino y te queda implementar los semáforos/mutexes/timers y todo eso. Fue muy divertido.

A pesar de lo que dicen algunas de las publicaciones, el ensamblador no es necesario. El conocimiento de eso siempre ayudará.Nunca está de más entender cómo funcionan las funciones internas/complementos/etc. cuando está escribiendo incluso aplicaciones de alto nivel.

1

Divertido, Stevens Book es uno de los textos clásicos para describir el uso de las primitivas de sincronización y sus usos. Ciertamente, parece pensar que se pueden usar para controlar la comunicación entre procesos. Tiendo a estar de acuerdo con él. Redes, no, IPC sí. sin duda sí.

Cuestiones relacionadas