>文章来自于: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
```
有疑问加站长微信联系(非本文作者)