Ostatnio zwróciło moją uwagę wywołanie systemowe sync(void). Zapisuje ono od razu wszystkie bufory czekające na zapisanie na dysku. Zresztą nieważne, bo osoba, która będzie w stanie mi odpowiedzieć na pytanie będzie też widziała jak działa sync() No więc przyszła mi do głowy pewna. Jeśli jakiś tam sobie użytkownik odpali program np. taki program:
Kod:
global _start
_start:
mov eax, 36
int 0x80 ; wywołanie sync()
jmp _start
mov eax, 1
mov ebx, 0
int 0x80
To wtedy wszystkie dane oczekujące w buforach jądra na zapis na dysk będą zapisywane od razu. Spowodowało by to, że cały mechanizm buforowania poszedłby się j*bać prawda? Wie ktoś może czy wywołanie sync jest "wyposażone" w jakieś zabezpieczenia przed czymś takim? Przejrzałem kod tego wywołania i niektórych funkcji z nim związanych, ale nic nie znalazłem. Może coś przeoczyłem?