리눅스 커널 파일 시스템 [5] Write
리눅스 커널 파일 시스템 Read [1] 리눅스 커널 파일 시스템 Read [2] 리눅스 커널 파일 시스템 Read [3] 리눅스 커널 파일 시스템 Read [4] Now, let's take a look at the write process. We'll examine what happens when a write system call is invoked and which kernel functions are called along the way. 나중에 영어로 바꾸는 작업을 해야겠다. 자 이제 write 시스템콜이 불렸을 때 커널의 어떤 함수들이 호출되는지 알아보자. 여전히 ext4 기준으로 살펴볼 것이다. SYSCALL_DEFINE3(write, ...) --> ksys_write() --> vfs_write() --> rw_verify_area() (유저 포인터 유효성, 파일 모드 검사) -- file->f_op->write_iter 가 있는지 검사 여기서 잠깐 write()가 있고 write_iter()가 있다. 무슨 차이일까? write()는 전통적인 방식이며 write_iter()는 보다 일반화되고 유연한 인터페이스이다. 비동기 I/O (AIO, 즉 write가 끝날 때까지 기다리지 않고 다음 작업 수행하도록 함), vectored I/O (scatter/gather I/O) 등을 지원한다. ext4에서는 write에 해당하는 함수가 없기 때문에 write_iter()가 불릴 것이다. 하지만 그 전에 다양한 I/O를 지원하기 위해 new_sync_write() 함수가 먼저 불려 AIO, vectored I/O 등을 위한 준비를 한다. -- new_sync_write() (중간 레이어) --> file->f_op->write_iter() == ext4_file_write_iter() --> ext4_buffered_write_iter() --> generic_perform_...