diff --git a/lab/vtpc/README.md b/lab/vtpc/README.md index 6d6dfce..6f5fefd 100644 --- a/lab/vtpc/README.md +++ b/lab/vtpc/README.md @@ -16,21 +16,21 @@ предоставляющий пользователю следующие возможности (по аналогии с системным API): 1. Открытие файла по заданному пути файла, доступного для чтения. Процедура - возвращает некоторый хэндл на файл. Пример: `int lab2_open(const char *path)`. + возвращает некоторый хэндл на файл. Пример: `int vtpc_open(const char *path)`. -2. Закрытие файла по хэндлу. Пример: `int lab2_close(int fd)`. +2. Закрытие файла по хэндлу. Пример: `int vtpc_close(int fd)`. 3. Чтение данных из файла. - Пример: `ssize_t lab2_read(int fd, void buf[.count], size_t count)`. + Пример: `ssize_t vtpc_read(int fd, void buf[.count], size_t count)`. 4. Запись данных в файл. - Пример: `ssize_t lab2_write(int fd, const void buf[.count], size_t count)`. + Пример: `ssize_t vtpc_write(int fd, const void buf[.count], size_t count)`. 5. Перестановка позиции указателя на данные файла. Достаточно поддержать только абсолютные координаты. - Пример: `​​​​​​​off_t lab2_lseek(int fd, off_t offset, int whence)`. + Пример: `​​​​​​​off_t vtpc_lseek(int fd, off_t offset, int whence)`. -6. Синхронизация данных из кэша с диском. Пример: `int lab2_fsync(int fd)`. +6. Синхронизация данных из кэша с диском. Пример: `int vtpc_fsync(int fd)`. Операции с диском разработанного блочного кеша должны производиться в обход страничного кеша операционной системы. @@ -40,6 +40,9 @@ использование кэша. Запустите программу и убедитесь, что она корректно работает. Сравните производительность до и после. +Точкой входа в ваш модуль являются файлы `vtpc.h` и `vtpc.c`. Именно этот API +вызывается тестовым фреймворком, сравнивающим поведения вашего `vtpc` и `libc`. + ## Ограничения 1. Программа (комплекс программ) должна быть реализован на языке C. @@ -48,9 +51,9 @@ предоставить пользователю возможность подсказать page cache, когда будет совершен следующий доступ к данным. Это можно сделать либо добавив параметр в процедуры `read` и `write` (например, - `ssize_t lab2_read(int fd, void buf[.count], size_t count, access_hint_t hint)`), + `ssize_t vtpc_read(int fd, void buf[.count], size_t count, access_hint_t hint)`), либо добавив еще одну функцию в API (например, - `int lab2_advice(int fd, off_t offset, access_hint_t hint)`). `access_hint_t` + `int vtpc_advice(int fd, off_t offset, access_hint_t hint)`). `access_hint_t` в данном случае – это абсолютное время или временной интервал, по которому разработанное API будет определять время последующего доступа к данным. @@ -97,4 +100,4 @@ [what-every-programmer-should-know-about-memory]: https://www.akkadia.org/drepper/cpumemory.pdf -[page-preemtion-algo-slides]: https://se.ifmo.ru/documents/10180/1505608/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B.+%D0%A7%D0%B0%D1%81%D1%82%D1%8C+3.pdf/188c34ff-f76c-1d42-b3cb-f9314b5898d8 \ No newline at end of file +[page-preemtion-algo-slides]: https://se.ifmo.ru/documents/10180/1505608/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B.+%D0%A7%D0%B0%D1%81%D1%82%D1%8C+3.pdf/188c34ff-f76c-1d42-b3cb-f9314b5898d8