리눅스커널
Posts
154 posts[리눅스커널][가상파일시스템] 슈퍼블록 객체란 무엇인가 - (struct super_block, struct super_operations)
슈퍼블락 객체란 무엇인가? 슈퍼블록 객체는 파일시스템에 대한 메타 정보와 각 파일시스템 별 슈퍼블락 함수 오퍼레이션으로 구성돼 있습니다. 구체적으로 슈퍼블록 객체는 파일시스템 마운트 정보와 실행 플래그를 저장합니다. 예를 들면 디스크 저장 기반 ext4 파일시스템과 시스템 정보를 램에서 출력하는 proc 파일시스템은 서로 다른 슈퍼블록 마운트와 실행 플래그 정보를 확인할 수 있습니다. 슈퍼 블록에 대한 이해를 돕기 위해 간단한 테스트를 해보겠습니다. 다음 경로에 가서 touch 명령어로 파일을 하나 생성합시다.root@raspberrypi:/home/pi# cd /procroot@raspberrypi:/proc# touch RPi_VFS.ctouch: cannot touch 'RPi_VFS.c': No
![[리눅스커널][가상파일시스템] 프로세스는 파일객체 자료구조를 어떻게 관리할까?](https://img.zoomtrend.com/2019/04/08/c0246238_5c936507e5dc2.png)
[리눅스커널][가상파일시스템] 프로세스는 파일객체 자료구조를 어떻게 관리할까?
프로세스는 파일객체 자료구조를 어떻게 관리할까? 이전 절에서 파일을 오픈하면 프로세스가 파일 디스크립터와 파일 객체를 관리한다고 언급했습니다. 이번 소절에서는 프로세스 입장에서 파일 디스크립터와 파일 객체를 어떻게 관리하는지 살펴보겠습니다 패치 코드 소개이해를 돕기 위해 다음 어플리케이션 코드를 소개합니다.1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 89 #define FILENAME_NAME "/home/pi/s
[리눅스커널][디버깅] 편하게 커널 코드를 수정할 수 있는 디버깅용 Debugfs 드라이버 코드 소개
편하게 커널 코드를 수정할 수 있는 디버깅용 Debugfs 드라이버 코드 소개 이전 절까지 리눅스 커널 코드를 수정해서 ftrace나 커널 로그를 출력하는 방법을 소개했습니다. 리눅스 드라이버를 처음 접하거나 커널 코드에 익숙하지 않은 분은 커널 로그를 수정해 커널 빌드를 하는 것은 굉장히 낯선 일입니다. 왜나면 코드를 잘못 입력해 커널이 오동작하면 어떨지 걱정이 앞설 수 있기 때문입니다. 그런데 실수로 커널 코드를 잘못 입력하면 라즈베리파이가 부팅을 못할 수도 있습니다. 필자도 실수로 커널 코드를 잘못 수정한 후 컴파일한 적이 있습니다. 결과 라즈베리파이가 부팅이 안됐습니다. 처음 이런 상황을 겪으니 조금 당황스러웠습니다. 임베디드 리눅스 실전 개발자는 코드를 수정한 다음 커널 부팅이 안 되는 상황
[리눅스커널][시그널] 커널에서 시그널을 전달하는 진입점은 어디일까?
시그널 전달 진입점 시그널 생성 과정에서 스케줄러에게 시그널을 받을 프로세스 실행 요청을 했습니다. 리눅스 커널은 언제 시그널을 타겟 프로세스에게 전달할까요?출발점은 두 가지 실행 흐름입니다.1> 시스템 콜 핸들러 실행 마무리 후 ret_fast_syscall 레이블2> 인터럽트 핸들링 후 __irq_usr 레이블 이 동작은 리눅스 커널보다 ARM 프로세스가 많은 관여를 합니다. ret_fast_syscall 레이블 분석 유저 프로세스가 시스템 콜 핸들러 실행을 마치면 ret_fast_syscall 레이블로 복귀합니다. ret_fast_syscall와 slow_work_pending 레이블에서 프로세스에게 시그널이 전달됐는지 점검합니다. 해당 코드 분석을 시작하겠습니다.[https:/
![[일상] Eave 65와 목새 택타일 | 토프레 무접점 느낌 | 타건 영상 있음](https://img.zoomtrend.com/2026/06/07/1780838085-SE-77297eb3-90bf-43a7-9629-75fd8530e370.jpg)



