eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPrzenośny, uproszczony filesystem › Przenośny, uproszczony filesystem
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
    e.net!feeder.erje.net!news.uzoreto.com!eternal-september.org!reader02.eternal-s
    eptember.org!.POSTED!not-for-mail
    From: heby <h...@p...onet.pl>
    Newsgroups: pl.comp.programming
    Subject: Przenośny, uproszczony filesystem
    Date: Thu, 14 Jan 2021 13:31:15 +0100
    Organization: A noiseless patient Spider
    Lines: 80
    Message-ID: <rtpdik$cge$1@dont-email.me>
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Injection-Date: Thu, 14 Jan 2021 12:31:16 -0000 (UTC)
    Injection-Info: reader02.eternal-september.org;
    posting-host="a0754113d6a558cd37a6112f9a477e51";
    logging-data="12814";
    mail-complaints-to="a...@e...org";
    posting-account="U2FsdGVkX1+0OEY1hnKVsvxS0CMxOJUt"
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
    Thunderbird/78.6.1
    Cancel-Lock: sha1:id5NQdi6NXt5ga8FIT+tvpG7K9E=
    Content-Language: en-US
    X-Mozilla-News-Host: news://news.eternal-september.org:119
    Xref: news-archive.icm.edu.pl pl.comp.programming:215333
    [ ukryj nagłówki ]

    Cześć.

    Poszukuje inspiracji a być może gotowca. Ale to trudno powiedzieć. A
    chodzi o coś takiego:

    Implementacja abstrkacyjnego filesystemu pracującego na urzeniau
    blokowym, do którego dostęp zapewniam ja, przez stosowane abstrkacje.
    Wykorzystać było by fajnie, ale najważniejsze to możliwośc podejrzenia
    rozwiązań.

    Wiec to tak powinno wyglądać:

    struct IFooFileSystem
    {
    std::shared_ptr< IFile > openFile( std::string cosnt& _fileName, Flags
    _flags );

    bool fileExist( std::string const& _fileName );

    [...]
    };

    struct IBlockDevice
    {
    std::shared_ptr< Block > readBlock( BlockIndes _index );

    void writeBlock( BlockIndes _index, Block& _block );
    };

    struct IFile
    {
    void read(...);
    void seek(...);
    [...]
    }

    std::shared_ptr< IFooFileSystem >
    createFileSystem( myBlockDevice );

    Coś w ten deseń, czyli to ja dostaczam abstrakcje robiącą I/O na
    poziomie block/cluster a kod realizuje wysokopoziomowe operacje plikowe.

    To nie musi być z czymkolwiek kompatybilne, nawet lepiej gdyby nie było.
    Musi być natomist komplenie nie zależne od czegokolwiek, czy to systemu
    czy zewnatrznych biblitek. I thread safe, będę jednoczesnie czytał i
    zapisywał wiele "plików" z róznych wątków. W zasadzie poza "plikami"
    reszta kompletnie zbędna, nie interesują mnie atrybuty czy nawet
    katalogi. Mocno uproszczony filesystem, coś w rodzaju wielu niezależnych
    strumieni w jednym kontenerze.

    Mogę to napisać samodzielnie, ale zanim to zrobie: ktoś widział taki
    projekt lub część jakiegoś projektu?

    Dla zastanawiajacych się po co mi to:

    Jest *prawdziwy* plik. W moim kodzie jest konwertowany do urządzenia
    blokowego i wystawiany do tego mechanizmu fiesystemu.

    Dzięki temu mogę w jednym pliku trzymac w środku wiele plików,
    bezustannie je czytajac i zmieniając. Ułatwi mi to pracę, ponieważ pliki
    te są trzymane razem, user nie może nic w nich popsuć, nie muszę
    bezustannie pakować/rozpakować jak robi np. OpenOffice (u nich
    kontenerem jest packer). Od razu gotowe do pracy.

    Katalog odpada: user może w nim coś popsuć.

    Ewentualne puchnięcie moża jakoś obejśc pisząc garbage collector
    trimujący ten "wirtualny filesystem" i przenoszący bloki w tle.

    Coś podobnego robi np. VirtualBox ale nie chodzi o taki poziom emulacji
    dysków, to ma byc mała pierdoła do kodu który mam pod kontrolą.

    Innymi słowy: czy ktoś widział tego typu wirtualny filesystem?
    Interesują mnie zagadnienia takie jak uproszczony wielodostęp czy
    realizacja kroniki. Chciałbym je poderzeć, ponieważ nie mam w tym
    doswiadczenia, pewnie napiszę to mało optymalnie.

    Projekt Fuse nie nadaje się bez bardzo poważnego wrapowania. Ponadto ja
    nie potrzebuje wielu filesystemów, potrzebuje tylko jeden, o mało ważnej
    kompatybilności ze światem zewnętrznym. Taki FooFS.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 05.02.21 19:42 M.M.
  • 07.02.21 12:55 heby
  • 07.02.21 15:34 M.M.
  • 07.02.21 19:04 heby
  • 07.02.21 19:35 M.M.
  • 07.02.21 20:03 M.M.
  • 07.02.21 20:57 heby
  • 07.02.21 21:19 M.M.
  • 07.02.21 22:01 heby
  • 07.02.21 22:53 M.M.
  • 08.02.21 07:39 heby
  • 08.02.21 11:08 M.M.
  • 08.02.21 12:12 heby
  • 08.02.21 14:24 M.M.
  • 08.02.21 14:57 heby

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: