라즈베리파이
Posts
191 posts[라즈베리파이] 시스템 콜 - 시스템 콜 핸들러 실행을 마무리하면 어떤 동작을 할까?
시스템 콜을 수행하면 시스템 콜 핸들러를 통해 가상 파일시스템이나 커널 프로세스 함수를 실행합니다. 이후 시스템 콜 종류에 따라 시스템 콜 핸들러 하부 루틴을 수행하고 유저 공간 복귀합니다. 시스템 콜 실행 후 복귀할 때 ret_fast_syscall 레이블에서 리눅스 커널 시그널 및 스케줄링 관점에서 중요한 동작을 실행합니다. 시스템 콜 테이블을 통해 시스템 콜 핸들러를 분기하기 직전 다음 1번째 줄 코드와 같이 복귀 레지스터(r14, lr)에 ret_fast_syscall 레이블을 지정했습니다. [https://elixir.bootlin.com/linux/v4.14.70/source/arch/arm/kernel/entry-common.S]1badrlr, ret_fast_syscall@ retu
[라즈베리파이] 시스템 콜 - 매개 변수 점검(시스템 콜 핸들러)
리눅스 커널 시스템 콜 핸들러 인터페이스 함수를 열어 보면 수 많은 예외 처리 코드를 볼 수 있습니다. 유저 모드에서 시스템 콜을 호출할 때 잘못된 인자(스트링 갯수, 메모리 주소)를 전달할 수 있기 때문입니다. 먼저 write() 이라는 리눅스 시스템 저수준 함수를 살펴보겠습니다. write() 함수를 호출할 때는 다음 6번 째 줄 코드와 같이 세 가지 인자를 전달해야 합니다.[https://android.googlesource.com/platform/system/core/+/master/init/uevent_listener.cpp]1 ListenerAction UeventListener::RegenerateUeventsForDir(DIR* d,2
[라즈베리파이] 시그널 - 유저 프로세스 입장에서 시그널이란
시그널이란 무엇일까요?커널 입장에서 시그널은 프로세스에게 보내는 단순한 형태의 메시지라고 할 수 있습니다.시그널 정보와 PID를 프로세스에게 전달하는 것입니다. 유저 프로세스 입장에서 프로세스는 무엇일까요? 유저 프로세스 관점으로 시그널은 실행 흐름을 제어하는 비동기적인 중단입니다. 이렇게 유저 프로세스와 커널 입장에서 시그널은 약간 다른 관점에서 볼 수 있습니다. 이번에 먼저 유저 프로세스 관점으로 시그널을 살펴보겠습니다.여러분이 너무 보고 싶은 책이 있다고 가정하겠습니다. 3시간 동안 읽을 수 있는 책 분량이라 주말에 책을 읽기 시작했습니다. 3시간 동안 아무런 방해를 받지 않고 책을 읽을 수 있으면 좋겠지만 이런 상황은 이상적인 환경입니다. 집에서 인터폰 벨리 울리던가 전화가 온다던가 여러 종류 중
[라즈베리파이] 시스템 콜 - 시스템 콜 핸들러는 어떤 동작을 할까?
유저 공간에서 시스템 콜을 발생하면 커널 공간으로 모드가 스위칭된 다음 vector_swi 이란 소프트웨어 인터럽트 벡터를 실행하는 부분까지 살펴봤습니다. vector_swi 레이블에서 시스템 콜 테이블에 접근해서 시스템 콜 핸들러를 호출합니다. 시스템 콜 핸들러에서는 어떤 동작을 수행할까요?시스템 콜 핸들러는 시스템 콜 종류에 따른 처리를 합니다. 가상 파일 시스템 계층에 접근하거나 프로세스 관리 함수를 실행하는 것입니다. 하지만 시스템 콜 핸들러에서 공통으로 처리하는 패턴이 있습니다. 그것은 시스템 콜 핸들러 함수 인자로 전달된 인자를 점검하는 예외 처리 루틴입니다. 다음 시간에서는 시스템 콜 핸들러에서 매개 인자를 점검하는 코드를 살펴보겠습니다.
![[일상] Eave 65와 목새 택타일 | 토프레 무접점 느낌 | 타건 영상 있음](https://img.zoomtrend.com/2026/06/07/1780838085-SE-77297eb3-90bf-43a7-9629-75fd8530e370.jpg)



