Renaming all folders

This commit is contained in:
Fabio Scotto di Santolo
2025-08-22 16:21:42 +02:00
parent 331308b2d8
commit 538cb4559e
45 changed files with 9 additions and 9 deletions

View File

@@ -0,0 +1,45 @@
# Chapter 4 Advanced File I/O
## Scatter/Gather I/O
- Scatter/gather I/O allows reading or writing data to/from multiple buffers in a single system call.
- Uses `readv()` and `writev()`:
- `readv(fd, iov, iovcnt)`: reads into multiple buffers (`iov` array).
- `writev(fd, iov, iovcnt)`: writes from multiple buffers.
- Improves efficiency by reducing system calls.
## Event Poll (`select()`, `poll()`, `epoll`)
- Traditional multiplexing: `select()`, `poll()` (limited scalability).
- Linux-specific: `epoll` for efficient event notification.
- `epoll_create()`: create epoll instance.
- `epoll_ctl()`: control interest list (add, modify, remove fds).
- `epoll_wait()`: wait for events.
- Edge-triggered vs level-triggered modes.
## Memory-Mapped Files (`mmap()`)
- Maps files or devices into memory for direct access.
- System calls: `mmap()`, `munmap()`.
- Benefits: faster I/O, shared memory.
- Use `msync()` to synchronize changes.
- Resizing mappings, changing protections.
- Advisory calls:
- `posix_fadvise()`: give advice about expected I/O patterns.
- `readahead()`: prefetch file data.
- Pros and cons of memory mapping.
## Asynchronous I/O and I/O Scheduling
- Distinction between synchronous and asynchronous I/O.
- Linux AIO APIs for asynchronous operations.
- I/O schedulers:
- Manage disk request ordering.
- Examples: CFQ, noop, deadline.
- Optimizing I/O performance by choosing schedulers.
- Concepts of disk addressing and request life cycle.
## Miscellaneous
- `ioctl()`: device-specific operations.
- Zero-copy transfers: `sendfile()`, `splice()`.
---
> This chapter covers advanced Linux I/O techniques aimed at improving performance and flexibility in system programming.