home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: de.comp.os.unix
- Path: sparky!uunet!gatech!darwin.sura.net!Sirius.dfn.de!ira.uka.de!Germany.EU.net!isaak.isa.de!omega!av
- From: av@omega.ssw.de (Andreas Vogel)
- Subject: Re: Teile des Heaps r/o machen? Aufsetzen nach SIGSEGV? (was: Hat Linux shared memory und se)
- Message-ID: <1992Dec26.104939.11407@omega.ssw.de>
- Date: Sat, 26 Dec 1992 10:49:39 GMT
- References: <1992Dec19.085535.2402@black.toppoint.de> <1992Dec25.060711.3783@oops.zigzag.hanse.de>
- Organization: Omega Softlab
- Lines: 42
-
- In article <1992Dec25.060711.3783@oops.zigzag.hanse.de> fs@oops.zigzag.hanse.de (Frank Seitz) writes:
- >Kristian Koehntopp (kris@black.toppoint.de) wrote:
- >: Installiere eine lokale Speicherseite, die Du als "shared
- >: memory" bezeichnest. Die Speicherseite ist von der MMU her so
- >: aufgesetzt, dass Lesezugriffe moeglich sein, aber
- >: Schreibzugriffe einen Trap ausloesen. Installiere einen
- >: Traphandler, der den Schreibzugriff ausfuehrt und zugleich die
- >: geschriebenen Daten ueber den Socket rauskopiert.
- >:
- >: Auf der anderen Seite dieselbe Installation.
- >:
- >: Kompliziert, langsam, aber transparent.
- >
- >Eine wirklich interessante Idee, Kristian. Ich habe aber
- >offengestanden keinen Schimmer, wie das programmtechnisch gehen soll.
- >Weder, wie ich einen Teil des Heaps (?) r/o machen soll, noch,
- >wie ich nach Behandlung eines SIGSEGV (?) ohne core dump neu aufsetzen kann.
- >Ich wills nicht ernsthaft realisieren (die Idee, Shared Memory durch
- >Sockets zu emulieren war eh nicht von mir), aber eine genauere
- >Skizze wuerde mich jetzt doch interessieren. Dass es portabel geht,
- >erwarte ich nicht ;-) Sagen wir fuer eine SysV/386er Architektur?
-
- Ueber die Emulation von shared memory via Sockets kann ich mich kaum auessern.
- Aber was die zwei Punkte betrifft, von denen du einen programmtechnischen
- Hinweis moechtest, kann ich weiterhelfen. Auf Unixen, die mmap() koennen,
- ist das oben erwaehnte Vorgehen leicht zu realisieren. Eine Seite holt
- man sich mit mmap(), und den SIGSEGV behandelt man in einem Signal Handler.
- Nach Abarbeitung des Handlers geht die Programmausfuehrung ganz normal weiter,
- wo ist da das Problem?
-
- Ich habe diese Art von Demand Paging in meinem System Monitior svr4mon
- implementiert und es funktioniert sehr gut. Der Code, der das Demand Paging
- behandelt ist ca. 50 Zeilen lang. Wenn du Interesse hast, dann schau ihn dir
- einfach mal an (paging.c). Svr4mon wurde vor einiger Zeit in alt.sources
- geposted.
-
- Gruesse,
-
- --
- Andreas Vogel Bahnhofstr. 13 / D-7300 Esslingen / Germany
- Voice: +49-711/357613
- E-Mail: av@ssw.de
-