일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Git
- 커널 프로그래밍
- Intel
- memory
- overflow
- 키워드
- Cache
- framework
- USENIX
- Operating System
- 시스템 프로그래밍
- hardware
- storage system
- Machine Learning
- Flash Memory
- kernel
- core dumped
- rocksdb
- github
- Samsung
- linux
- deep learning
- software
- performance
- 시스템 소프트웨어
- FTL
- ssd
- 포트 번호 변경
- Today
- Total
목록커널 프로그래밍 (4)
Happy to visit my research note ^^
" stdarg.h 헤더파일에 있는 기능들 " stdarg.h 헤더파일에는 va_list, va_start(), va_end()가 정의되어있는데 해당 함수와 구조체는 stdarg.h 해더 파일에서 정의되는 @가변 인자 함수를 사용하기 위한 메크로와 타입이다. @ 가변 인자 함수란 매개 변수의 개수가 정해져 있지 않고 호출될 때마다 다른 개수의 인자를 받을 수 있는 함수를 의미한다. 가변 인자 함수는 va_start, va_arg, va_copy, va_end와 같은 매크로를 사용하여 가변 인자를 처리한다. va_start 매크로는 가변 인자 목록에서 첫 번째 가변 인자를 가리키는 포인터를 초기화하고, va_arg 매크로는 다음 가변 인자를 가져온다. 예를 들어 printf 함수는 가변 인자 함수의 대표적..
kernel에 대한 간략한 소개를 하자면, kernel은 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 간의 interface 역할을 한다. kernel은 컴퓨터 resource를 관리하고 응용 프로그램이 application이 하드웨어를 직접 제어하는 것을 마고, 시스템 resource에 대한 효율적인 접근을 가능하게 한다. 또한, kernel은 사용자와 하드웨어 간의 상호작용을 처리하며, 시스템의 안정성과 보안을 유지하기 위한 여러 기능을 제공한다. 즉, 운영체제의 핵심이라고 할 수 있습니다. 이러한 kernel을 개발을 할 때 사용되는 알아두면 편리한 각 keyword에 대해 이번 글에서 알아볼까 합니다. " inline keyword " W(저자)가 사용하는 c lang에서 inline 키워드는..
상위 레이어와 하위 레이어 함수 간에 코드를 공유하는 방법으로는 공통으로 사용하는 구조체나 함수들을 헤더 파일에 정의해서 include하는 방법을 사용한다. 이것을 통해 여러 파일에서 공유하는 코드를 중복해서 작성하지 않고도 간편하게 사용할 수 있다. 또한, 공유하는 코드가 많고 복잡한 경우에는 독립적인 모듈로 작성하고 이를 다른 파일에서 include해서 사용할 수도 있다. 이렇게 모듈화된 코드는 유지 보수 및 관리가 편하고, 재사용성도 높아지는 결과를 얻을 수 있다. W(`나`)는 kernel에서 callpath를 분석하여 각 레이어간의 code execution latency를 분석하기 위해 이 방법을 사용한다. 예시 코드 틀 #ifndef SHARED_H #define SHARED_H ... ....
sprintf와 printk는 모두 문자열을 출력하는 함수입니다. 그러나 둘은 매우 다른 용도로 사용됩니다. sprintf 함수는 문자열을 생성하여 버퍼에 저장하는 역할을 합니다. 버퍼는 메모리에 할당되어 있어야 하며, 생성된 문자열은 이후 프로그램에서 필요한 곳에서 사용될 수 있습니다. sprintf 함수는 메모리 할당과 해제, 문자열 생성 등을 처리하기 때문에 시스템 오버헤드가 발생할 수 있습니다. 반면에 printk 함수는 커널 디버깅에 사용되는 함수입니다. 따라서 printk는 커널 공간에서만 사용할 수 있으며, 사용 시에는 커널 모듈의 로그에 출력됩니다. printk 함수는 메모리 할당이나 해제 없이 출력을 수행하며, 장치 드라이버나 커널 모듈 개발 시 디버깅 목적으로 매우 유용합니다. 따라서,..