| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- overflow
- 커널 프로그래밍
- Intel
- github
- 포트 번호 변경
- 키워드
- memory
- ssd
- kernel
- Git
- deep learning
- core dumped
- Operating System
- 시스템 프로그래밍
- 시스템 소프트웨어
- hardware
- linux
- storage system
- FTL
- USENIX
- Samsung
- software
- rocksdb
- performance
- framework
- Cache
- Flash Memory
- Machine Learning
- Today
- Total
목록kernel (10)
Happy to visit my research note ^^
Xiaolu Li† , Keyun Cheng‡ , Kaicheng Tang‡ , Patrick P. C. Lee‡ , Yuchong Hu† , Dan Feng† , Jie Li∗ , and Ting-Yi Wu∗ †Huazhong University of Science and Technology ‡The Chinese University of Hong Kong ∗Huawei Technologies Co., Ltd., Hong Kong February 21–23, 2023 • Santa Clara, CA, USA USENIX Association 21st USENIX Conference on File and Storage Technologies Abstract Minimum-storage regenerati..
Saurabh Kadekodi∗ , Shashwat Silas∗ , David Clausen, Arif Merchant Google February 21–23, 2023 • Santa Clara, CA, USA USENIX Association 21st USENIX Conference on File and Storage Technologies Abstract Large-scale storage clusters의 대부분 data는 # erasure coding이 사용된다. # Exascale에서는 # low storage overhead, efficient reconstruction, and easy deployment를 위해 erasure code를 최적화하는 것이 중요하다. (+참고 1) Locally..
1. Definition Cache Block The basic unit for cache storage. May contain multiple bytes/words of data. Cache Line Same as cache block. Note that this is not the same thing as a "row" of cache Cache Set A "row" in the cache. The number of blocks per set is determined by the layout of the cache (e.g., direct mapped, set-associative, or fully associative) Tag A unique identifier for a group of data...
C lang으로 이루어진 프로그램을 컴파일할 때 " core dumped "는 일반적으로 컴파일된 프로그램이 실행 중에 예기치 않은 동작이 발생하여 프로그램이 비정상적으로 종료되는 것을 의미한다. 대표적인 경우들이 있는 데 예를 들면, 1. memory overflow / unterflow : 배열의 크기를 초과하거나, 0으로 나누는 등의 잘못된 메모리 접근으로 인해 발생할 수 있다. 2. 포인터 문제 : NULL 포인터를 역참조하거나, 할당되지 않은 메모리에 접근하는 등의 포인터 문제로 인해 발생할 수 있다. 3. 무한 루프 : 조건문의 조건이 항상 참이거나 거짓일 경우, 무한 루프에 빠져서 core dumped가 발생할 수 있다. 4. 라이브러리 문제 : 호출한 라이브러리가 제대로 작동하지 않는 경우..
Linux Kernel 개발에 도움되는 라이브러리들을 정리하는 글을 쓰게 되었습니다. " glib.h 라이브러리 " glib.h 헤더파일은 GLib 라이브러리를 사용하기 위해 필요한 헤더파일이다. GLib은 C 언어를 사용하는 개발자들이 자료구조와 관련된 기능들을 쉽게 구현할 수 있도록 도와주는 라이브러리이다. Glib.h 헤더파일 안에는 대표적인 자료구조들과 관련된 함수들이 포함되어 있다. 예를들면 .. 1. GArray : 동적 배열을 구현하기 위한 자료구조이다. #include GArray* array = g_array_new(FALSE, FALSE, sizeof(int)); ' g_array_new '함수는 새로운 ' GArray ' 구조체를 생성하고 초기화하는 함수이다. ' GArray '는 동..
저자는 linux kernel에서 각 layer간의 latency를 측정할 때, printf 혹은 printk로 인한 overhead를 최대한 출이기 위해 buffer에 기록 후 일정 크기가 차면 지정 file로 log들을 flush해주는 프로그래밍을 하였다. 모든 연구에서는 성능을 개발하기 전에 정확한 측정이 먼저 되어야하는 것과 같이 최대한 각 성능에서만 소모되는 시간을 측정하기위해 노력했다. 그 과정 속에서 썼던 파일 입출력에 대해 작성해보겠다. " 파일 입출력 " C Lang 측 linux에서 사용하는 파일 입출력은 stdio.h 헤더파일에 정의되어 있으며, fopen, fwrite, fread, fclose 등을 이용하여 파일을 생성, 읽고 쓰고 닫을 수 있다. FILE *fopen (const..
" 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에서 함수를 정의할 때 static 키워드를 사용하는 경우가 많은 이유는 크게 두 가지로 나누어본다. 첫째, static 함수는 컴파일러에 의해 해당 함수가 선언된 파일내에서만 사용 가능하도록 제한된다. 따라서, 다른 파일에서 해당 함수를 호출하는 것을 방지할 수 있다. 이것은 global namespace를 오염시키지 않아서 code maintenance 와 stability를 향상시킬 수 있다. 둘째, static 함수는 다른 파일에서 호출되지 않으므로, 함수 호출 시 발생하는 오버헤드가 없어져서 실행 시간이 빨라질 수 있다. 이는 특히 커널 내에서 자주 호출되는 함수에서 유용하다. 고로! static 키워드를 사용하여 함수를 정의하는 것은 compiler optimization 과 cod..