리눅스커널

포스트: 154|조회수: 0|TERM
Items

Posts

154 posts

[리눅스커널][가상파일시스템] 파일 객체: fsync() 함수 연산 세부 동작 분석

Guillermo Austin Kim|2019년 3월 28일

파일 객체: fsync() 함수 연산 세부 동작 분석 유저 공간에서 쓰기 버퍼에 저장된 데이터를 디스크에 저장하고 싶을 때가 있습니다.이 때 fsync() 혹은 fdatasync() 함수를 호출합니다. fsync 명령어를 입력해서 리눅스 메뉴얼을 확인합시다.FSYNC(2) Linux Programmer's Manual NAME fsync, fdatasync - synchronize a file's in-core state with storage device SYNOPSIS #include int fsync(int fd); int fdatasync(int fd); 내용을 보면 파일의 내용을 스토리지 디바이스에 동기화하는 동작입

[리눅스커널][가상파일시스템] 파일 객체: lseek() 함수 연산 세부 동작 분석

Guillermo Austin Kim|2019년 3월 27일

파일 객체: lseek() 함수 연산 세부 동작 분석 유저 공간에서 lseek() 함수를 호출하면 파일 쓰기 포인터 위치를 조절할 수 있습니다. 다음 예제 코드를 보면서 lseek() 함수 동작에 대해 살펴보겠습니다. 1 #include 2 #include 3 #include 45 #define FILENAME_NAME "/home/pi/sample_text.text"67 int main() 8 { 9 int fd = 0;10 ssize_t read_buf_size;11 off_t new_file_pos; 12 13 fd = open(FILENAME_NAME, O_RDWR);14 new_file_pos = l

[리눅스커널][디버깅] 유저공간 abort 발생 시 커널 패닉 유발하는 패치

Guillermo Austin Kim|2019년 3월 24일

개발 도중에 유저 공간에서 abort가 발생합니다. 안드로이드 플렛폼에서는 tombstone이 생성돼 레지스터와 콜스택을 확인할 수 있습니다.Revision: '0'ABI: 'arm'pid: 16458, tid: 16513, name: thermal-engine >>> /system/vendor/bin/thermal-engine <<<signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0Cause: null pointer dereference r0 00000000 r1 a73a48c0 r2 8362dec4 r3 8362deec r4 80000000 r5 00000000 r6 83639000 r7 83c35

[리눅스커널][가상파일시스템] 파일 객체: read() 함수 연산 세부 동작 분석

Guillermo Austin Kim|2019년 3월 24일

파일 객체: read() 함수 연산 세부 동작 분석 유저 공간에서 read() 함수를 호출할 때 커널에서는 가상 파일시스템 관련 코드가 실행하는지 알아봅시다. 다음 그림과 같이 유저 공간에서 read() 함수를 호출하면 파일시스템별로 관리하는 파일객체에서 파일 오퍼레이션을 수행하는 방식입니다. 위 그림을 보면 유저 공간에서 read() 함수를 호출하면 각 파일시스템별 파일 오퍼레이션에 따라 다른 함수를 실행한다는 사실을 알 수 있습니다. 유저 공간에서 read() 함수를 호출하면 시스템 콜을 발생시키고 커널 공간에서 read() 함수에 해당하는 시스템 콜 핸들러인 sys_read() 함수를 실행합니다. 이제부터 sys_read() 함수부터 각 파일시스템 내 파일 종류별로 설정한 vfs_read()