首页 > 编程语言 >Qemu源码分析(5)—Apple的学习笔记

Qemu源码分析(5)—Apple的学习笔记

时间:2023-09-17 16:32:15浏览次数:44  
标签:4215 00 Apple rcu 链表 源码 线程 qemu Qemu

一,前言

前言本节主要看线程什么时候创建的及创建的线程有什么作用。

二,源码分析

第一次进入断点仅主线程4215.

root@ubuntu:/home/applecai# ps -T -p 4215
 PID SPID TTY TIME CMD
 4215 4215 pts/8 00:00:00 qemu-system-gnu
  1. 通过搜索文件名pthread关键字,然后找到qemu-thread-posix.c直接在err = pthread_create(&thread->thread, &attr, start_routine, arg);打断点第一次进入断点的调用关系,不是main开始的,因为rcu_init函数被__attribute__((__constructor__))修饰,所以在main前就进行了执行。

Qemu源码分析(5)—Apple的学习笔记_qemu

  1. 第二次进入断点。主要是cm_object_realize一直调用,最后调用qemu_init_vcpu的时候创建了一个线程。

Qemu源码分析(5)—Apple的学习笔记_qemu_02

总的来说cpu是单核的,所以仅一个线程,那么总共就是3个线程了。

root@ubuntu:/home/applecai# ps -T -p 4215
 PID SPID TTY TIME CMD
 4215 4215 pts/8 00:00:00 qemu-system-gnu
 4215 4344 pts/8 00:00:00 qemu-system-gnu
 4215 4514 pts/8 00:00:08 qemu-system-gnu
  1. 虚拟cpu创建线程来运行传入的elf这个功能比较好理解,但是一开始rcu_init创建的线程干嘛用的?

看了下rcu.h文件,外部确实有调用call_rcu的,然后看着这个rcu关键字好熟悉啊,网上搜索了下linux也用这种锁,就是read-copy-update,主要用于写的线程少,执行次数少,而读取的线程多,执行次数多的情况。这样读取的时候需要加锁,仅写的时候加锁,可以提高并行效率,写的时候加锁更新为一个新的链表,而读取正在执行就的链表不删除,而将要读取的就用新链表了,等旧的链表引用着都消失了,就把这个old链表删除。这样看对象好像仅是链表节点。其中synchronize_rcu函数就是用来释放资源的,看了下rcu.c代码感觉比较复杂,但是主要逻辑就是这样的。

三,小结

rcu.txt中也有相关rcu的使用描述。只是我在想,干嘛不用linux中自带的rcu api,qemu要自己写一个呢?然后我网上搜索了下linux自带的rcu,那么更加复杂了,还要关注休眠唤醒热插拔什么的,怪不得qemu这个应该是简单版本。看来qemu的rcu.c和h中的源码我要做个小专题专门学习下,这样是否我也可以开发一个简单版本的rcu了,哈哈~

标签:4215,00,Apple,rcu,链表,源码,线程,qemu,Qemu
From: https://blog.51cto.com/u_16247275/7502695

相关文章

  • 失物招领系统的设计与实现-计算机毕业设计源码+LW文档
    题目的意义、目的:随着互联网的飞速发展,学校也进入了信息化时代。校园中大学生丢失物品的现象较为普遍,虽然目前国内有一些网上校园寻物平台或者是QQ群之类的,但是都不是很成熟,使得失主不能及时甚至找不到失物,给生活带来了极大的不便。通过互联网为在校师生搭建一个发布信息的平台,可......
  • 基于web的客户管理系统-计算机毕业设计源码+LW文档
    一、选题的目的及意义随着商业银行规模的发展,公司业务越来越多,客户和人员的管理也变得越来越困难。在传统的客户管理中,公司往往通过大量的人力和物力进行管理,通过手工记录客户,统计客户订单信息。这种传统的管理方法容易出错,而且不能适应现代化、信息化的发展过程。因此,本基于web的......
  • 基于Python的鲜花在线销售系统-计算机毕业设计源码+LW文档
    摘 要随着信息技术的发展,基于web模式的购物系统逐渐普及,网上购物是一种新型的商务模式,其工作流程和经营模式受到了欢迎。电子商务可以适应现代化快节奏的生活方式,满足各类人群足不出户的在线购物,利用商城使得买卖双方完成线上交易,提高了购买效率。然而像鲜花这种传统的行业,由于......
  • 基于Java Web的陕西旅游网站的设计与实现-计算机毕业设计源码+LW文档
    一、研究的背景和意义研究背景:本文主要是基于旅游业是我国现阶段发展的重要产业,旅游可以推动经济上的发展,通过深入的对当前旅游行业的研究,也随着网络技术的发展,传统的旅游方式游客已经无法满足,游客不再满足于单一路线的线路,无法进行更多的选择,每天日常的行程安排丧失了一定......
  • 基于JavaWeb的校园社团平台设计与开发-计算机毕业设计源码+LW文档
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于JavaWeb的校园社团平台的开发全过程。通过分析基于JavaWeb的校园社团平台管理的不足,创建了一个计算机管理基于JavaWeb的校园社团平台的方案。文章介绍了基于JavaWeb的校园社......
  • 《STL源码剖析》 - 侯捷 2002年
    我们的第一个c++stlapplication。什么是容器?什么是迭代器?什么是算法?什么是分配器?什么是适配器?什么是仿函式?1.容器就是装数据的容器,等于是数据结构?不应该吧?数据结构不应该是自定义的吧?为什么说容器是数据结构搞不懂。2.分配器,用于给容器分配内存。3.迭代器,用于从容器中......
  • Qemu源码分析(4)—Apple的学习笔记
    一,前言本节主要分析option的搜索API。二,源码分析时常看到如下的opts使用API。那么就来分析下。qemu_opts_foreach(qemu_find_opts("device"),default_driver_check,NULL,NULL);最开始搜索QemuOptsList比较容易理解,就是从vm_config_groups数组中找。此list是初始化的时候通过qemu......
  • vb源码收集站点
    vb源码收集站点大全http://AllAPI.net  http://vbCity.com  http://www.vbgood.com  http://www.applevb.com  http://jinesc.6600.org    http://www.a1vbcode.com  http://www.codeguru.com/  http://www.codetools.com/  http://www.easthot.net  http://......
  • Qemu源码分析(3)—Apple的学习笔记
    一,前言本次主要分析object_new,也就是了解最关键的object类对象。二,源码分析看上去就是通过TypeImpl来创建Object。Object*object_new(constchar*typename){TypeImpl*ti=type_get_by_name(typename);returnobject_new_with_type(ti);}主要调用初始化object,把type中的......
  • [SpringSecurity5.6.2源码分析十]:HeaderWriterFilter
    前言• 为了安全考虑,添加启用浏览器保护的某些头是很有用的,比如X-Frame-Options,X-XSS-Protection和X-Content-Type-Options• 而HeaderWriterFilter就支持往响应头写入各种响应头1、HeadersConfigurer• HeadersConfigurer是HeaderWriterFilter对应的配置类,是在获取HttpSecur......