2009-06-02 11 views

risposta

7

I semafori, i blocchi, le variabili di condizione ecc. Sono concetti del sistema operativo e in genere devono essere implementati in termini di funzionalità del kernel del sistema operativo. Pertanto, non è generalmente possibile studiarli da soli - è necessario considerare anche il codice del kernel. Probabilmente il modo migliore per farlo è dare un'occhiata al kernel di Linux, con l'aiuto di un libro come Understanding The Linux Kernel.

-2

Si può raggiungere con un sacco di IPC (Inter Process Communication) Libri, in grado di spiegare i pro ei contro di ciò che si bisogno. C'è un libro classico. Comunicazione di processo di programmazione di rete Unix di Richard Stevens. avrai tutto ciò di cui hai bisogno. :)

+4

Semafori, blocchi e variabili di condizione ans non sono meccanismi di comunicazione tra processi e non hanno nulla a che fare con il networking. –

+0

sì lo so e sono d'accordo con te, ma solo menzionarlo come un libro di riferimento per l'argomento di cui è qualcosa che vale la pena, dare un'occhiata a quel libro :) – Afridi

1

Per conoscenza di base, è possibile fare riferimento libro Operating System Concepts, da Avi Silberschatz, Peter Baer Galvin, Greg Gagne ed è veramente buono.

È inoltre possibile visitare il sito Dave Marshall's per ottenere supporto. Consultare la sezione Semaphore lì.

2

Al livello di terra, se si desidera implementare questo tipo di cose, sarà necessario utilizzare il linguaggio assembly. C e C++ semplicemente non espongono il tipo di caratteristiche necessarie per scrivere codice concorrente --- eccetto che usando le librerie, che usano l'assemblatore nella loro implementazione.

3

Un buon punto di partenza per l'apprendimento dei concetti del sistema operativo è probabilmente "Modern Operating Systems" di Andrew Tanenbaum. Ha anche un altro libro sul proprio sistema operativo (Minix), che si chiama "Sistemi operativi: progettazione e implementazione", che approfondisce i dettagli sulla codifica. Dovresti riuscire a trovare quei libri nella tua biblioteca locale.

Argomenti correlati che si potrebbero voler cercare per capire come e perché utilizzare i semafori: condizioni di gara, sincronizzazione, multithreading, problema produttore-consumatore.

2

La roba del minix è piuttosto buona. Un esempio più semplice è la roba MicroC/OS. Viene fornito con un libro di testo che va bene nei dettagli, tutta la fonte è lì. Ha gli elementi di base e il codice è abbastanza piccolo da poter essere compreso in un periodo di tempo relativamente breve.

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

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

Un'altra cosa che si può fare, è fare un sistema operativo false in un'applicazione su linux. L'ho fatto impostando il segno di spunta base con un itimero, quindi scambiando i thread con la funzione call swapcontext (man 2 swapcontext) che salverà i reg in pila. Questo fa sì che le cose brutte rimangano fuori e sei lasciato ad implementare i semafori/mutex/timer e tutto il resto. È stato abbastanza divertente

Nonostante ciò che alcuni dei post dicono, l'assemblatore non è richiesto. Una conoscenza di esso aiuterà sempre.Non fa mai male capire come funzionano internals/complilers/etc quando scrivi anche applicazioni di alto livello.

1

Funny, Stevens Book è uno dei testi classici per descrivere l'uso delle primitive di sincronizzazione e dei loro usi. Sicuramente sembra pensare che possano essere usati per controllare la comunicazione tra processi. Tendo ad essere d'accordo con lui. Rete, no, IPC si. sicuramente sì.

Problemi correlati