返回信息流系统调用究竟是一个怎样的过程?
我的理解是:用户进程通过某种机制(比如信号),请求内核中的某个进程来完成某个操作。感觉这像是进程通信(用户进程和内核进程)?
另外一个问题是:用户态和内核态是同一个进程的两种不同状态么?
请各位大佬指教[ema0]
这是一条镜像帖。来源:北邮人论坛 / cpp / #96036同步于 2017/8/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【问题】关于系统调用
liuyehcf
2017/8/19镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
个人理解:进程要请求操作系统提供的功能时,将请求的系统调用的id以及相应的参数拷贝到指定的存储区,然后执行自陷指令,陷入内核态,接下来由系统调用处理程序接收id和参数,转调用相应的过程,然后接收调用过程的返回值,回传到用户空间,最后再回到用户态。
通过『我邮2.0』发布
谢谢~~,也就是说在内核态的时候,真正执行处理操作的其实是内核中的某个进程而不是应用进程本身?
【 在 intmain 的大作中提到: 】
: 个人理解:进程要请求操作系统提供的功能时,将请求的系统调用的id以及相应的参数拷贝到指定的存储区,然后执行自陷指令,陷入内核态,接下来由系统调用处理程序接收id和参数,转调用相应的过程,然后接收调用过程的返回值,回传到用户空间,最后再回到用户态。
: 通过『我邮2.0』发布
起码linux没有“内核进程”这个概念。linux里的基本调度单元是作业(task),根据它和其它task共享的东西(如内存、文件系统等)的多少,可以模拟进程也可以模拟线程。系统调用的时候,是内核为某个用户task做事情,并没有一对一的内核task。内核task是有的,是内核自己要定期做事情用的。
【 在 liuyehcf 的大作中提到: 】
: 谢谢~~,也就是说在内核态的时候,真正执行处理操作的其实是内核中的某个进程而不是应用进程本身?
多谢暖神~,没学过操作系统好伤。那可以不可以这样理解:系统调用时,从用户态切换到内核态,内核将用户进程挂起,然后内核进行某些操作,完成后返回给用户进程并唤醒用户进程。
【 在 nuanyangyang 的大作中提到: 】
: 起码linux没有“内核进程”这个概念。linux里的基本调度单元是作业(task),根据它和其它task共享的东西(如内存、文件系统等)的多少,可以模拟进程也可以模拟线程。系统调用的时候,是内核为某个用户task做事情,并没有一对一的内核task。内核task是有的,是内核自己要定期做事情用的。
可以。
【 在 liuyehcf 的大作中提到: 】
: 多谢暖神~,没学过操作系统好伤。那可以不可以这样理解:系统调用时,从用户态切换到内核态,内核将用户进程挂起,然后内核进行某些操作,完成后返回给用户进程并唤醒用户进程。