GO语言的系统调用

本文探讨了Go语言如何进行系统调用,以及内核态、用户态的切换。详细介绍了中断上下文的上半部和下半部,强调了软中断的并发执行特性,并提及内核线程和内核守护进程ksoftirqd的作用。同时,文章阐述了Go语言库对系统调用的封装,包括直接调用和封装后的函数。
摘要由CSDN通过智能技术生成

内核态

内核态:
 通常一个内核由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络,进程间通信等系统服务程序共同组成。其独立于普通应用程序,一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限,这种系统态和被保护起来的内存空间统称为内核空间。

用户态:
 应用程序在用户空间执行,它们只能看到允许它们使用的部分系统资源,并且只能使用某些特定的系统功能,不能直接访问硬件,也不能访问内核划给别人的内存范围。
 当内核运行时,系统以内核态进入内核空间执行,而执行一个普通用户程序时,系统将以用户态进入用户空间执行。

从用户态切换到内核态的三种方式:
(1).系统调用:

     首先我们都知道应用程序通过系统调用界面陷入内核,这是应用程序完成其工作的基本行为方式;
(2).中断进入内核:

     当外围设备完成用户的请求操作后,会像CPU发出中断信号,此时,CPU就会暂停执行下一条即将要执行的指令,转而去执行中断信号对应的处理程序,如果先前执行的指令是在用户态下,则自然就发生从用户态到内核态的转换。
(3).异常进入内核:

     当CPU正在执行运行在用户态的程序时,突然发生某些预先不可知的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值