# 作業系統工程-Memory ## Table Of Content ###### tags: `作業系統工程 Operating System Programming note`, `110-1`, `2021` [TOC] --- # Memory ## Memory 在 rtdef 中的定義 ```c= #ifdef RT_USING_HEAP struct rt_memory { struct rt_object parent; /**< inherit from rt_object */ const char * algorithm;/**< Memory management algorithm name */ rt_ubase_t address; /**< memory start address */ rt_size_t total; /**< memory size */ rt_size_t used; /**< size used */ rt_size_t max; /**< maximum usage */ }; typedef struct rt_memory *rt_mem_t; #endif ``` # Memory Heap ## Memory Item 在 rtdef 中的定義 ```c= struct rt_memheap_item { rt_uint32_t magic; /**< magic number for memheap */ struct rt_memheap *pool_ptr; /**< point of pool */ struct rt_memheap_item *next; /**< next memheap item */ struct rt_memheap_item *prev; /**< prev memheap item */ struct rt_memheap_item *next_free; /**< next free memheap item */ struct rt_memheap_item *prev_free; /**< prev free memheap item */ #ifdef RT_USING_MEMTRACE rt_uint8_t owner_thread_name[4];/**< owner thread name */ #endif }; ``` ## Memory Heap 在 rtdef 中的定義 ```c= struct rt_memheap { struct rt_object parent; /**< inherit from rt_object */ void *start_addr; /**< pool start address and size */ rt_size_t pool_size; /**< pool size */ rt_size_t available_size;/**< available size */ rt_size_t max_used_size; /**< maximum allocated size */ struct rt_memheap_item *block_list; /**< used block list */ struct rt_memheap_item *free_list; /**< free block list */ struct rt_memheap_item free_header; /**< free block list header */ struct rt_semaphore lock; /**< semaphore lock */ rt_bool_t locked; /**< External lock mark */ }; #endif ``` # Memory Pool ## Memory Pool 在 rtdef 中的定義 ```c= #ifdef RT_USING_MEMPOOL struct rt_mempool { struct rt_object parent; /**< inherit from rt_object */ void *start_address; /**< memory pool start */ rt_size_t size; /**< size of memory pool */ rt_size_t block_size; /**< size of memory blocks */ rt_uint8_t *block_list; /**< memory blocks list */ rt_size_t block_total_count;/**< numbers of memory block */ rt_size_t block_free_count; /**< numbers of free memory block */ rt_list_t suspend_thread; /**< threads pended on this resource */ }; typedef struct rt_mempool *rt_mp_t; #endif ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up