system call시, I/O job을 관리하기 위한 data structure

kyungminLim·2024년 5월 24일
0

'struct io_job'

이 구조체는 I/O 작업을 관리하기 위한 구조체이다. 개별 I/O 작업의 세부 정보를 저장하며, io_submit으로 system call을 할 때, 중요한 역할을 한다.

struct io_job {
	struct iocb iocb;
    struct flist_head list;
    struct timeval start_time, stop_time;
    long long offset;
    size_t bytes;
    int rw;
    char *buf;
}
  1. 'struct iocb iocb'
  • I/O 제어 블록 (control block)이다.
  • 비동기 (Asynchronous) I/O 요청을 나타내고, 'libaio' library에서 사용된다.
  • I/O 작업의 구체적인 세부 사항을 포함한다. (e.g., file descriptor, offset, buffer , etc.)
  1. 'struct flist_head list'
  • linked list의 헤더이다.
  • I/O 작업을 list 구조로 관리하는 데 사용된다.
  • 여러 I/O 작업을 체인 형태로 관리할 수 있다.
  1. 'struct timeval start_time, stop_time'
  • I/O 작업의 시작/종료 시간이다.
  • I/O 작업의 latency 및 수행 시간을 측정하는 데 사용된다.
  1. 'long long offset'
  • I/O 작업의 byte 단위 offset이다.
  • file or device 내에서 I/O 작업이 시작되는 위치를 나타낸다.
  1. 'size_t bytes'
  • I/O 작업의 크기 (unit byte)이다.
  • read or write data의 크기를 나타낸다.
  1. 'int rw'
  • I/O 작업이 읽기인지 쓰기인지를 나타낸다.
  • read : 1, write : 0
  1. 'char *buf'
  • I/O 작업에 사용되는 buffer이다.
  • read 작업의 경우, data가 이 buffer에 저장된다.
  • write 작업의 경우, 이 buffer의 데이터가 disk로 전송된다.

0개의 댓글