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

mai_yang for Go 夜读 · 2020年02月13日 · 197 次阅读

文章来自于:https://reading.developerlearning.cn/reading/34-2019-03-16-plan9-guide/

分享者: Xargin

观看视频

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

更多原创文章干货分享,请关注公众号

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册