본문 바로가기

분류 전체보기59

0. 공부를 시작하며... 해당 도서를 가지고 공부를 하기 전 공부하는 이유와 마음가짐에 대하여 끄적여보려고 한다. 이직 23년에 들어서면서 이직을 마음먹고, 이직을 하게되었다. 물론 연봉이나 좀 더 나은 환경을 원했던 것도 있지만 업무적, 커리어 적으로 발전이 필요하고 원했던 시점이었다. 이직하기 전 업무는 주로 HAL단과 SDK platform 일을 하다가 좀 더 H/W, SoC와 가까운 커널에 대한 업무를 하고 싶었다. 출근 첫 주 원래 하던거보다 한 단계 아랫단인 커널을 주 업무로 하여금 일을 할 줄 알았는데, 첫 출근하여 일주일 정도 업무 파악을 해보니, 좀 더 core하고 h/w적인 펌웨어 업무를 한다는 것을 알게되었다.(학생 때 좋아했던 마이컴 수업이 생각나는...!) 물론 학생때 마이크로프로세서 수업과, 이전 회사에.. 2023. 5. 16.
[Kernel] Timer jiffies 커널에서 시간은 타이머 인터럽트를 통해 관리되는데, 타이머 인터럽트는 1초당 n번 발생하는 빈도가 HZ로 정의되어 있음. 이 HZ값은 아키텍처마다 다르게 정의되어 있다. 만약 100HZ라고 하면 1초당 100번의 타이머 인터럽트가 발생함 해당 커널 시스템의 HZ 값은 .config에 CONFIG_HZ로 정의되어 있다. 커널에는 시스템이 시작한 후, 해당 타이머 인터럽트 발생횟수를 저장하는 jiffies라고하는 전역변수가 정의되어 있는데 extern unsigned long volatile __cacheline_aligned_in_smp __jiffy_arch_data jiffies; 만약 HZ가 100인 시스템에서 시스템이 시작된 뒤 1초 후 jiffies는 값은 100이다. 해당 jiff.. 2023. 2. 11.
Device Driver 개요 디바이스 드라이버는 특정 H/W 장치(Device)에 대한 제어를 위해 커널에서 동작하는 프로그램으로서, 시스템과 H/W 장치 간 인터페이스 역할 특성 커널에 포함되어 동작(built-in)하거나 런타임에 적재(module)되어 사용 됨. 커널의 일부분으로 동작함으로 error 발생 시 시스템이 critical한 영향을 끼칠수 있음 표준 인터페이스를 제공해야 하며, 커널 Service(memory allocation, IRQ, wait, etc...)를 이용할 수 있다. 종류 Character(문자) 디바이스 드라이버: buffer를 거치지 않고 direct로 raw data에 대하여 read/write 가능한 장치(ex. 키보드, 마우스, 시리얼포트 etc) Block(블록) 디바이스 드라이버: .. 2022. 9. 14.
runtime에 target board kernel의 config 확인 커널을 빌드하는 host 환경이 아닌 실행중인 target board에서 해당 kernel image에 적용된 config를 확인할 수 있는 방법 /proc 디렉토리 아래 config.gz로 해당 커널 image의 config가 압축되어 config.gz파일로 존재 이를 압축 해제하게 되면 해당 image의 kernel config를 확인할 수 있음 하기 명령은 압축해제한 config를 running.config에 저장 cat /proc/config.gz | gunzip > /tmp/running.config 압축 해제한 config 확인 vi /tmp/running.config # # Automatically generated file; DO NOT EDIT. # Linux/arm64 4.14.202 .. 2022. 9. 14.
[Case] 특정 프로세스가 실행되고 있는지 확인하는 script 특정 프로세스가 실행되고 있는지 확인을 위한 스크립트 ps 명령어를 통해 현재 실행되고 있는 프로세스 정보를 출력한다음, grep을 통해 원하는 프로세스를 검색 while true do check=`ps -ef | grep "sampleApp" | grep -v "grep"` if [ "$check" != "" ]; then echo sampleApp Running sleep 0.1 else echo sampleApp Quit break fi done 2022. 9. 14.
User Space와 Kernel Space User Space와 Kernel Space 응용 프로그램은 유저 영역에서, 커널 모듈은 커널 영역에서 실행 됨. 이와 같이 메모리 영역을 나눔으로서 응용 프로그램이 OS가 load되어 있는 커널 영역에 침범하여 시스템에 critical한 에러 등을 발생시키는 일을 방지. 커널 영역에 접근하기 위해서는 커널 모드(or 관리자 모드)로 전환되어야 함 System Call(시스템 콜) 위와 같은 이유로 인해 응용 프로그램에서 H/W나 커널의 리소스에 접근하여 사용할 수 있도록 System Call 방식을 이용 응용프로그램이 직접 커널의 기능을 호출할 수 없으므로 커널은 유저공간에 추상화된 인터페이스인 System Call을 제공하며 이를 통해 유저 영역에서 커널 기능을 호출. 시스템 콜이 호출 되면 유저 모.. 2022. 8. 17.
728x90