`
LeslieWei
  • 浏览: 14106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
链接:http://blog.sina.com.cn/yumingleslie
4. Erlang虚拟机的进程创建 在第三节中我们分析了Erlang虚拟机的进程调度和指令集(threaded-code)的执行过程,这一节我们分析Erlang虚拟机的进程创建过程。 首先,创建一个需要调用内建函数(BIF)erlang:spawn或者spawn_opt,spawn_link等,这里我们分析spawn函数的调用过程。所有spawn函数最后都会调用spawn/3这个BIF,这个内建函数被编译成字节码,在加载到erlang虚拟机后对应的threaded-code
3. Erlang虚拟机的调度 在这一部分中我们来重点分析Erlang虚拟机的调度策略。 由第一分部的介绍可以得知,在ERTS_SMP模式中,erl_start()函数在创建好第一个进程后最后调用的两个函数分别为erts_start_schedulers()和erts_sys_main_thread()。在单核模式下,erl_start()函数在调用set_main_stack_size()进行一些栈区设置后调用了process_main()函数,然后进入了单核模式下的进程切换调度。这里我们重点讨论在ERTS_SMP
2. Erlang虚拟机的指令集 在具体分析erlang进程的调度和执行过程前,我们需要简单的了解下erlang虚拟机的指令集的几种形式。 2.1. Erlang程序的内存结构     Erlang程序beam文件是需要虚拟机解释执行的字节码文件,因此Erlang的进程结构不同于普通的操作系统进程,Erlang的所有进程数据包括代码,堆栈结构都是存放在数据区里,Erlang进程并没有普通进程拥有的代码区。
去年在北京一个互联网公司实习,当时项目组需要使用和erlang相关的东西,然后给我一个任务,和另外两个同事一起阅读erlang虚拟机的源码,然后给老大写一份报告,我主要阅读的是启动,指令,进程创建以及调度这块的代码。阅读笔记是早就写好了,却一直没有同步到博客上,本来自己资质尚浅,笔记里面也有诸多错误;再则这份阅读笔录也不是完全原创,也借鉴了诸多大牛和官网上的东西。到现在突然想将其开放到博客上,也主要是觉得目前erlang虚拟机相关的资料太少,而现在云计算技术的兴起,却使得这门语言备受青睐,所以编程需求量是蛮大的。由于自己资质尚浅,笔录中的诸多错误,也希望大牛们多多指正,在此感谢你们的宝贵意见 ...
      博客好久没更新了,一直说自己要坚持写博客的,却老是觉得自己很忙,鲜有更新这上面的东西。确实挺忙的,从大方面来说,事情都重叠到一堆了,烦心事天天有,总觉得时间不够用,想放个长假,什么事都不去想, ...
从CPU角度来说的栈指的是CPU有个积存器SS,这个寄存器的低16 bit连同ESP一同指向下一次堆栈操作(push和pop)所要使用的堆栈地址。这个寄存器也可以被装入任意数值,你可以通过入栈和出栈操作来给他赋值,不过由于堆栈对于很多 ...
先看下面一段代码:   1/*******************************************   2 * Author: Leslie Wei   3 * Created Time: 2012年04月22日 星期日 21时35分58秒   4 * File Name: nullObj.cpp   5 * Description:   6 * @Copyright reserved   7 ********************************************/   8 ...
昨晚写了个关于Memcached和Mysql的数据存储与读取的数据对比,然后让服务器跑了一晚上,一直担心把电脑跑崩溃,还好没有,测试结果和预测的差不多。       测试的平台是Memcached-1.4.13和MySql-14.14;       访问数据库工具是 ...
Global site tag (gtag.js) - Google Analytics