Názor ke článku Mazání dat uprostřed souboru od Miloslav Ponkrác - Protože diskový soubor je sekvence bloků pevné délky....

  • 14. 9. 2014 13:43

    Miloslav Ponkrác (neregistrovaný)

    Protože diskový soubor je sekvence bloků pevné délky. Potřeba smazat soubor by jen zřídkakdy vycházela tak, aby to padlo na hranici bloků. Tudíž by to nebyla efektivnější operace, než to udělat z user programu pomocí zkopírování soubory za mazaným oknem.

    Pokud je třeba častěji mazat uprostřed souboru, dělá se to tak, že soubor se myšlení rozdělí do sekvence kratších binárních kousků, tzv. chunků. Ty se uloží do jednoho souboru, nebo každý zvlášť do zvláštního souboru. A na začátku, nebo uvnitř chunku je mapa, jak za sebou pokračují. Smazání chunku uprostřed souboru je pak triviální operace, jednouše změna jednoho pointeru (32, nebo 64 offsetu) v mapě jako ukazatele na další chunk v pořadí.

    Operační systém obvykle neimplementuje věci, které se stejně efektivně dají udělat z user space. Stejně jako linux kernel neimplementuje třeba Newton-Rapsonovu metodu pro hledání kořenů rovnic.

    Operační systémy zkrátka implementují takovou množinu operací se soubory, které dovolí efektivní práci z programu.

    Funkci nazvanou třeba:

    int ferase(int handle, off_t start, off_t size)

    si můžete velmi snadno naprogramovat sám a používat.

    Kromě toho operace smazání části souboru uprostřed se používá minimálně. Při návrhu struktur a algoritmů programu se lidé snaží takové operaci maximálně vyhnout, protože je velmi neefektivní a nedá se udělat rozumně zaručeně atomicky.

    Miloslav Ponkrác