亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

go語言簡單入門--并發

標簽:
Go

系统调用过程中的CPU状态切换和流程控制

1、用户空间:

用户进程中的程序 ->发出系统调用->封装例程

||

2、内核空间(CPU状态切换  用户态=>内核态)

系统调用处理程序->系统调用服务例程->系统调用处理程序

||

3、用户空间(CPU状态切换 内核态=》用户态)

封装例程->用户进程中的程序。

封装例程语系统调用时一一对应的,实际上他就是我们所说的内核暴露给用户编程的接口。另外,系统调用处理程序和系统调用服务例程可以看做是内核为了响应用户进程的系统调用而执行的一系列函数,前面将其统称为内核函数。!!只有当CPU切换至内核态之后,才可以执行内核空间中的函数,而在内核函数执行完毕后,CPU状态也会被及时切换回用户态


go线程实现模型(M、P、G)

M:machine的缩写,一个M代表一个内核线程或称工作线程

P:processor的缩写,一个P代表g代码片段执行所需要的必要资源(或称上下文环境)

G:goroutine的缩写,一个G代表一个go的代码片段。前者是对后者的一种封装。


go语言实现并发采用的线程模型是类似于两级线程模型。即一部分由操作系统内核承担,一部分由go的调度器承担。调度器主要的工作就是对M、P、G进行管理。

附上一张调度器的工作流程图:

https://img1.sycdn.imooc.com//5c330dcb0001baa213161407.jpg

點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
9109
獲贊與收藏
2572

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消