Когда буферный кеш ядра пуст для дискового ввода-вывода? - PullRequest
0 голосов
/ 12 июня 2019

Когда буферный кеш ядра пуст?Это не похоже на LINE Buffering.Если я пишу () строку без символа новой строки, она немедленно выводится в файл.

Кроме того, буферы ввода и вывода файла сокета также используют буферный кеш ядра, такой как Disk I / O?Кроме того, существуют ли входные и выходные буферы пространства ядра, используемого для read () и write () для каждого открытого файла (fd)?

#include <stdio.h>
#include <string.h>
#include <sys/fcntl.h>
#include <unistd.h>

int main()
{
    int fd = open("text", O_RDWR | O_CREAT);

    write(fd, "message", strlen("message"));

    // I can check the string in the file without fsync(fd).
    sleep(30);

    close(fd);
    return 0;
}

1 Ответ

0 голосов
/ 12 июня 2019

Когда обходится кеш страниц?

Кэш страницы должен быть обойден с помощью прямого ввода-вывода, при условии, что

  • открывается с флагом O_DIRECT
  • соблюдены определенные ограничения на выравнивание смещения / адреса
  • не выполняются расширенные записи

См. эту ссылку для получения дополнительной информации.

...