当前位置: 首页 > news >正文

网站虚拟主持人代码建设银行第三方网站鉴权

网站虚拟主持人代码,建设银行第三方网站鉴权,wordpress模板使用,设置wordpress文章标题高亮的代码上图 此图着重描述的是子线程#xff0c;一个heap#xff08;由heap_info结构体描述#xff09;用完#xff0c;需要另一个的情况。 子线程内存特点 1. 第一个heap物理内存上从低地址到高地址依次是#xff1a;heap_infomalloc_state(arena)chunks /* arena.c #0 new_…上图 此图着重描述的是子线程一个heap由heap_info结构体描述用完需要另一个的情况。 子线程内存特点 1. 第一个heap物理内存上从低地址到高地址依次是heap_infomalloc_state(arena)chunks /* arena.c #0 new_heap (sizesizeentry6328, top_pad131072) at arena.c:528 #1 0x00007ffff7895c2a in _int_new_arena (size4096) at arena.c:720 #2 arena_get2 (a_tsda_tsdentry0x0, sizesizeentry4096, avoid_arenaavoid_arenaentry0x0) at arena.c:871 #3 0x00007ffff78963b6 in __GI___libc_malloc (bytes4096) at malloc.c:2856 *//* Create a new arena with initial size size. */static mstate _int_new_arena(size_t size) {mstate a;heap_info *h;char *ptr;unsigned long misalign;h new_heap(size (sizeof(*h) sizeof(*a) MALLOC_ALIGNMENT),mp_.top_pad);if(!h) {/* Maybe size is too large to fit in a single heap. So, just tryto create a minimally-sized arena and let _int_malloc() attemptto deal with the large request via mmap_chunk(). */h new_heap(sizeof(*h) sizeof(*a) MALLOC_ALIGNMENT, mp_.top_pad);if(!h)return 0;}a h-ar_ptr (mstate)(h1); 2. 第二个heap没有malloc_state(arena)其heap_info.ar_ptr指向第一个heap里的arena /* #0 new_heap (sizesizeentry4176, top_pad131072) at arena.c:528 #1 0x00007ffff7894ad1 in sysmalloc (av0x7ffff0000020, nb4112) at malloc.c:2390 #2 _int_malloc (avaventry0x7ffff0000020, bytesbytesentry4096) at malloc.c:3718 #3 0x00007ffff78963d2 in __GI___libc_malloc (bytes4096) at malloc.c:2859 */ static void *sysmalloc(INTERNAL_SIZE_T nb, mstate av) ... else if ((heap new_heap(nb (MINSIZE sizeof(*heap)), mp_.top_pad))){/* Use a newly allocated heap. */heap-ar_ptr av;heap-prev old_heap;av-system_mem heap-size;arena_mem heap-size;/* Set up the new top. */top(av) chunk_at_offset(heap, sizeof(*heap));set_head(top(av), (heap-size - sizeof(*heap)) | PREV_INUSE); 3. 每个heap都是调用mmap分配的内存大小为HEAP_MAX_SIZE。使用mprotect使得只有几百KB可读可写以后不够用时再割一块使得更多内存对用户可用grow_heap。 //new_heap(size_t size, size_t top_pad)if(aligned_heap_area) {p2 (char *)MMAP(aligned_heap_area, HEAP_MAX_SIZE, PROT_NONE,MAP_NORESERVE);aligned_heap_area NULL;if (p2 ! MAP_FAILED ((unsigned long)p2 (HEAP_MAX_SIZE-1))) {__munmap(p2, HEAP_MAX_SIZE);p2 MAP_FAILED;}}if(p2 MAP_FAILED) {p1 (char *)MMAP(0, HEAP_MAX_SIZE1, PROT_NONE, MAP_NORESERVE);...if(__mprotect(p2, size, PROT_READ|PROT_WRITE) ! 0) 4. 每个heap的起始地址与HEAP_MAX_SIZE对齐64M # define HEAP_MAX_SIZE (2 * DEFAULT_MMAP_THRESHOLD_MAX) //64M #define DEFAULT_MMAP_THRESHOLD_MAX (4 * 1024 * 1024 * sizeof(long)) 两个问题 1. 如何由任意要free的地址找到其对应的arena arena是线程相关的可以通过线程找到arena。但是malloc可能发生在线程A而free不一定非要发生在同一个线程A。那free时如何找到对应的arena哪 ar_ptr arena_for_chunk(ptr);free(ptr) - get chunk pointer chunkptr by ptr-0x10  - get heap_info by chunkptr  ~(HEAP_MAX_SIZE-1) - get arena by heap_info.ar_ptr 2. 如何确保“每个heap的起始地址与HEAP_MAX_SIZE对齐” 向mmap申请分配两倍的HEAP_MAX_SIZE只要中间部分两头unmap回系统。 arena.cp1 (char *)MMAP(0, HEAP_MAX_SIZE1, PROT_NONE, MAP_NORESERVE);if(p1 ! MAP_FAILED) {p2 (char *)(((unsigned long)p1 (HEAP_MAX_SIZE-1)) ~(HEAP_MAX_SIZE-1));ul p2 - p1;if (ul)__munmap(p1, ul);elsealigned_heap_area p2 HEAP_MAX_SIZE;__munmap(p2 HEAP_MAX_SIZE, HEAP_MAX_SIZE - ul);} 读者可通过cat /proc/[pid]/maps查看内存的变化。 一个例子 提供一个c程序例子帮助读者调试。你可以给new_heap, grow_heap, 或者free下断点。 #include stdio.h #include stdlib.h #include pthread.h// Function executed by the sub-thread void* thread_function(void* arg) {// Allocate memory for an integervoid* ptr;int i0;while(i16*1024){ //HEAP_MAX_SIZE/409664M/4096ptr malloc(4096);if (ptr NULL) {perror(Memory allocation failed);pthread_exit(NULL);}}free(ptr);return NULL; }int main() {pthread_t tid;int ret;// Create a sub-threadret pthread_create(tid, NULL, thread_function, NULL);if (ret ! 0) {perror(pthread_create failed);return 1;}// Wait for the sub-thread to finishret pthread_join(tid, NULL);if (ret ! 0) {perror(pthread_join failed);return 1;}void* main malloc(20);return 0; }
http://www.w-s-a.com/news/983524/

相关文章:

  • 江西建设部网站wordpress弹出式广告
  • 工商年检在哪个网站做中国建设银行个人登录
  • seo做网站郑州巩义网站建设
  • 建设银行网站机构特点业务发展网站推广工作计划
  • 国家信用信息系统年报seo推广赚钱
  • 公司建设网站价格表广州免费拍卖公司
  • 知行网站建设wordpress文章半透明
  • 建设网站的虚拟机配置建设银行宁波分行招聘网站
  • 济南网站开发xywlcn网络推广服务合同模板
  • 品牌网站制作流程图用asp做网站题目
  • 兰州市建设厅网站河南网站建设问一问公司
  • 高档网站建设前端网站大全
  • 深圳电力建设公司网站互联网网站有哪些
  • 淅川网站建设如何在百度上做自己的网站
  • 网站制作 南通有学给宝宝做衣服的网站吗
  • 做西式快餐店网站网络营销的含义是什么
  • 网络销售代理加盟南京seo排名扣费
  • 赤峰中国建设招标网站网站开发投标文件
  • 域名抢住网站婚庆网页设计
  • 公司网站建设的通知南宁怎么做网站
  • 搜狐快站建站教程电子商务网站后台模板
  • .gs域名做网站怎么样做网站有没有用
  • 肇庆住房和城乡建设局网站广州seo公司排名
  • j2ee网站开发买什么书网络媒体有哪些
  • 江西省住房建设部官方网站用多说的网站
  • 云课堂哪个网站做的好网站 集约化平台建设方案的通知
  • 撰写网站栏目规划怎么建自己的平台
  • 中国建设银行巴黎分行网站建设银行忘记密码网站首页
  • 网站左侧树形导航怎么做像wordpress一样的网站吗
  • 做网站用的书公司做网站 需要解决哪些问题