操作を実行するためにオペレーティングシステムを必要としないデータベースはありますか?はいの場合、サイズや詳細とのリンクなどの詳細を提供してください。
プログラミング言語はCです。
組み込みシステムのプログラミングに必要です。
操作を実行するためにオペレーティングシステムを必要としないデータベースはありますか?はいの場合、サイズや詳細とのリンクなどの詳細を提供してください。
プログラミング言語はCです。
組み込みシステムのプログラミングに必要です。
それは、「オペレーティング システム」をどのように定義するかによって異なります。
ARM ベースのデバイスには、ほぼ確実に、ツールチェーンに同梱されている C 標準ライブラリがあります。 Newlibは、深く組み込まれたシステムの一般的な選択肢です。たとえば、無料の CodeSourcery および YARTGO ツールチェーンにデフォルトで含まれています。ただし、それが機能する前に、いくつかのシステムコールを実装する必要があります。printf()
コンソールにテキストを表示したり、発言したりできますか? どうmalloc()
ですか?これらの機能やその他の機能が機能しない場合は、それらを実装することをお勧めします。Newlib が想定する基本的なシステムコールは次のとおりです。
int _system (const char *);
int _rename (const char *, const char *);
int _isatty (int);
clock_t _times (struct tms *);
int _gettimeofday (struct timeval *, struct timezone *);
void _raise (void);
int _unlink (void);
int _link (void);
int _stat (const char *, struct stat *);
int _fstat (int, struct stat *);
caddr_t _sbrk (int);
int _getpid (int);
int _kill (int, int);
void _exit (int);
int _close (int);
int _open (const char *, int, ...);
int _write (int, char *, int);
int _lseek (int, int, int);
int _read (int, char *, int);
これらのほとんどはスタブにすることができますが、たとえば、_write()
printf() (およびその他の書き込み操作)、_read()
読み取り操作、および_sbrk()
malloc やその他のメモリ管理関数に必要です。たとえば、最小限の実装についてはhttp://wiki.osdev.org/Porting_Newlibを参照してください。これらの関数の定義によって、データベースの動作が決まります。_write() が文字を UART に送信すると、データベースはあまり役に立ちません。
標準ライブラリが機能していれば、sqliteやその他のデータベースが機能するはずです。彼らは、sqlite 合併の shell.c で次のようなことを行います。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
#include "sqlite3.h"
#include <ctype.h>
#include <stdarg.h>
#include <signal.h>
#include <pwd.h>
#include <unistd.h>
#include <sys/types.h>
それらの実装が必要です。これには、オペレーティング システムは必要ありません。C ライブラリがあれば動作しますが、C ライブラリがないと自力で作業できます。