【Go 夜读】第 34 期 plan9 汇编入门,带你打通应用和底层 by Xargin

yangwen13 · · 665 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

>文章来自于:https://reading.developerlearning.cn/reading/34-2019-03-16-plan9-guide/ 分享者: Xargin ## 观看视频 https://youtu.be/dPdXxex1v_4 2019.3.16 晚上 21 点 ~ 23点 ## 直播过程中的文字讨论 (如有涉及到隐私,请告知) ``` 21:08:32 From xiong hekuan : 几乎没有 21:08:47 From amatist Kurisu : 大佬开下麦... 21:09:02 From Laily Long : 能听到 21:09:02 From xiong hekuan : 可以 21:09:03 From 何翔宇 : 可以 21:09:06 From xiye : 能听到 21:09:09 From haoc7 : 听到了 21:09:12 From 星星 : 挺清楚的 21:11:01 From amatist Kurisu : ok 21:13:57 From panda : ???? 21:15:40 From albert’s iPhoneSE : 32位都差不多复杂 21:28:15 From 红红火火 : 不太好理解 21:28:24 From dongzerun : rax rbx ….. 一共六个,再多的才通过栈 21:32:09 From 红红火火 : 每个方法都有一个zhanma 21:32:22 From HLewis : 销毁就是sp等于bp吧 21:33:06 From albert’s iPhoneSE : 怎么修改栈大小? 21:33:10 From 红红火火 : 每个方法都有一个栈指针吗 21:33:19 From Flora Wong : C++里inline函数就没有栈吧 21:33:52 From xiaolong ran : 失效后还给操作系统它怎么处理 ? 21:34:35 From 红红火火 : 回收再利用吧 21:37:42 From 王耀峰 : 这是当时的值或者地址吧 21:37:49 From amatist Kurisu : 那cpu切换任务的话, 保存的上下文是指寄存器中的值么 21:38:08 From amatist Kurisu : ok 21:42:08 From 王耀峰 : 问个问题啊。系统条用,还会涉及到了内核态或者用户态切换吧,汇编有体现吗 21:42:42 From 王耀峰 : ok 21:42:45 From xiaolong ran : .bss 和 .rodata这两个和.text和.data是怎么交互的 21:43:30 From Laily Long : 就相当于系统调用的时候按要求把参数天刀对应寄存器,然后调用 syscall 进内核,内核就会自己拿参数然后执行对吧,返回的参数也写到固定寄存器? 21:43:32 From dongzerun : 这哪有交互的说法 21:43:46 From z : syscall 不属于体系架构的指令,而是操作系统提供的? 21:44:13 From dongzerun : 其它平台有的是不叫 syscall 21:46:59 From Laily Long : $ 表示数字? 21:47:45 From Laily Long : plan9 是另一个操作系统的项目,不过凉了 21:54:25 From Flora Wong : zhuji 码 是哪两个字? 21:54:30 From daniel : 不同的assembler 21:55:08 From atlas : 助记码 21:55:12 From 影子的 iPhone : 助记码 21:58:46 From 王耀峰 : 这种应该应该还有一种好处,所有栈信息都保存在协程的结构体里面,省去了好多上线文切换的开销了 22:01:58 From Laily Long : 是不是判断了之后 jmp 到不同的地方 22:05:01 From 卜邪 小 : SB代表什么? 22:05:45 From Flora Wong : SB是某个寄存器? 22:06:09 From daniel : SB: Static base pointer: global symbols. 22:06:13 From Odyssey : 所有的外部引用都需通过伪寄存器: PC(virtual Program Counter)/SB(Static Base register) 22:06:25 From Odyssey : 刚搜索的 :) 22:09:17 From HLewis : 尾递归讲的好,只是有人介绍过,自己没跟过,学习了 22:13:00 From daniel : 能否分析一个函数调用时stack的结构? 22:13:18 From 卜邪 小 : 不会被抢占? 22:14:23 From 王耀峰 : 那也就是说gc 没办法正常回收了 22:14:54 From 王耀峰 : 我记得Go 里面好像有一个兜底策略 22:15:37 From pingzheng : 那写gorouting感觉好危险 22:15:46 From liu : 纯运算的是抢占不了 22:15:51 From 王耀峰 : 好好 22:15:53 From 王耀峰 : 还好 22:17:43 From 卜邪 小 : 在听 22:18:17 From z : SB的作用是 22:19:03 From 王耀峰 : 一个G的栈初始化只有2k 22:19:42 From xiye : goroutine的初始分配的内存是2k吧 22:19:59 From 红红火火 : 4k 22:20:19 From 王耀峰 : 这个应该和操作系统,虚拟内存有关吧 22:20:44 From 王耀峰 : 物理不可能,虚拟的也不会 22:23:22 From HLewis : 等一下能讲讲,所有的goroutine都在同一个操作系统进程中吗? 22:23:30 From dingliu : 所以想到一个case,如果被调用的函数只有一个字符的变量还没超过2k,就不会触发morestack. 22:23:49 From 红红火火 : 去看gmp 22:30:23 From dingliu : +8是指8字节吗? 22:33:45 From z : textflag.h是什么 22:35:55 From Laily Long : 怎么知道 slice 在汇编里是传了三个参数进去的 22:36:05 From Laily Long : 去哪里查,比如我要知道 map 的 22:37:13 From Laily Long : 哦哦。。懂了。。 22:40:02 From 王耀峰 : 后面的值是什么意思 22:40:26 From 王耀峰 : 哈哈,我擦 22:40:41 From 王耀峰 : 这还得算内存对齐了,哈哈 22:41:03 From Flora Wong : 黑科技 太牛 22:43:17 From 榴莲 : ???? 22:43:41 From 红红火火 : 雨痕是不是很懂这些啊 22:46:01 From Flora Wong : 汇编有点意思 感谢大佬分享 22:46:29 From mai yang : ????汇编还给老师了。 22:46:33 From xiye : defer一般用来做资源解锁比较好 22:46:37 From HLewis : 所有的goroutine都处在同一个操作系统进程中吗? 22:46:42 From mai yang : defer 确实很尴尬的。 22:47:25 From 红红火火 : 线程队列里 22:47:51 From haoc7 : 上次有人线上defer没走到,前面崩了,找了半天是defer没走到。 22:48:11 From 王耀峰 : panic了 22:48:21 From z : go语言问题是追的github上issue么? 22:48:33 From mai yang : pgraph? 22:48:38 From Xargin : pprof 22:48:40 From mai yang : pprof 22:49:18 From mai yang : 太感谢老师今天的分享了 22:49:21 From 卜邪 小 : 有 22:49:23 From 卜邪 小 : https://github.com/golang/go/blob/master/src/runtime/asm_amd64.s#L253 22:49:32 From mai yang : 在群里面 22:49:35 From 卜邪 小 : 老师能帮忙翻译这段汇编吗? 22:49:40 From Feng Zhu : 谢谢大神分享 22:50:00 From hawken : 还有一个小小的问问,chrome 插件第三个是什么插件啊???? 22:50:13 From HLewis : 所有的goroutine都处在同一个操作系统进程中吗? 22:50:22 From haoc7 : 哈哈哈,我刚刚也搜了 22:50:23 From 红红火火 : jstogo 22:50:27 From Laily Long : 请问下 Plan9 的汇编优势在哪里,为啥 go 的开发者会抛弃其他的自己造这个轮子 22:50:28 From Flora Wong : 哈哈 你的插件看起来都很棒 22:51:00 From mai yang : 这些插件都可以总结一波。 22:51:22 From Flora Wong : 回头分享一下插件名称哈 大佬 22:52:02 From 星星 : 我看到油猴了 22:52:15 From 王耀峰 : G应该是个宏封装吧 22:52:23 From HLewis : go协程和操作系统进程啥关系? 22:52:46 From Flora Wong : 一个go程序执行的时候就是一个进程 肯定goroutine都在一个进程里啊 22:52:52 From Flora Wong : 你是想问线程吧? 22:52:55 From 王耀峰 : 可以从网上看看经典的go的 GMP 22:52:57 From Laily Long : 这个你需要去看 gmp 模型 22:53:10 From HLewis : 好的我先搜一下 22:55:36 From William的 iPhone : 比较迷惑的是协程都在一个进程里面,那他怎么用满多核服务器的 22:56:18 From 王耀峰 : 中间层? 22:56:30 From HLewis : 对 22:56:48 From HLewis : 系统级别只有进程 22:57:03 From HLewis : 线程是提供的库比如pthreads 22:57:56 From HLewis : 如果协程都在一个进程中,那么就意味着所有协程共享同一个虚拟内存空间, 22:58:37 From HLewis : 那么操作系统提供的进程间ipc跟Go就没有毛关系了? 22:59:55 From daniel : 比较迷惑的是协程都在一个进程里面,那他怎么用满多核服务器的 22:59:59 From daniel : 多线程呀 23:01:03 From 王耀峰 : 不一定是一个进程,其实G的存在就减少了上下文切换,底层还是多喝都绑定到P上相当于多核了吧 23:01:06 From William的 iPhone : 协程之间走进程间通信吗? 23:01:54 From William的 iPhone : 多个线程之间的goroutine 怎么通信? 23:02:08 From 王耀峰 : channel 23:03:02 From William的 iPhone : 说错了是多个核上的多个进程上面的goroutine 之间的通信 23:03:34 From daniel : 啥,一个Go程序跑起来是单进程的呀 23:03:48 From 王耀峰 : Go其实弱化了这些进程线程概念,你遵循mpg这种用就行了 23:03:51 From wangriyu : 不同进程得走系统ipc了吧 23:04:07 From William的 iPhone : 单进程能用满多个核心么 23:04:12 From William的 iPhone : 迷糊了 23:04:14 From Xargin : debug.xxxstack() 23:04:41 From wangriyu : 进程是资源分配的基本单元,线程才是执行单元 23:04:54 From 王耀峰 : 对 23:05:07 From wangriyu : 你多线程跑就能跑满cpu了 23:05:08 From daniel : 一个进程可以搞出来n个线程,这n个线程会执行m个goroutine 23:05:24 From 王耀峰 : 在linux 下层其实进程线程好像不太严格。弱进程 23:06:39 From daniel : 同一个进程下的线程共享很多资源 23:06:48 From William的 iPhone : 这m个在一个核心里面?我理解的一个进程只能用满一个核心吧 23:07:04 From tanrongxian : 峰哥牛鼻 23:07:07 From mai yang : 非常感谢 23:07:07 From luckybear : 多谢大佬 23:07:07 From pingzheng : 感谢大佬 23:07:08 From HLewis : 学习了,谢谢分享 23:07:09 From Laily Long : 辛苦大佬 23:07:14 From Flora Wong : 感谢 @Xargin 23:07:16 From hawken : 非常感谢 23:07:18 From Odyssey : 谢谢分享 23:07:18 From wangriyu : 感谢 23:07:18 From doujiapeng : 感谢感谢 23:07:18 From qclaogui : 辛苦大佬 23:07:21 From 星星 : 感谢 23:07:22 From tanrongxian : 感谢分享 23:07:24 From 饶全成 : 感谢 23:07:24 From Flora Wong : 辛苦大佬 23:07:25 From Feng Zhu : 大佬 23:07:25 From 卜邪 小 : 谢谢 23:07:32 From daniel : 感谢,睡觉了 23:07:33 From amatist Kurisu : 感谢分享 23:07:34 From doujiapeng : 多谢 23:07:36 From haoc7 : 谢谢大佬 23:07:38 From qclaogui : good night 23:07:41 From Odyssey : 谢谢大佬 23:07:46 From 鹏飞 : 6 23:07:49 From mai yang : 晚点分享出来给大家 23:07:50 From HLewis : gnight ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

665 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传