ToB企服应用市场:ToB评测及商务社交产业平台

标题: linux体系调用第一篇 [打印本页]

作者: 慢吞云雾缓吐愁    时间: 2024-5-17 09:38
标题: linux体系调用第一篇
体系调用

体系调用,顾名思义,说的是操作体系提供给用户程序调用的一组“特别”接口。用户程序可以通过这组“特别”接口来得到操作体系内核提供的服务,比如用户可以通过文件体系相关的调用请求体系打开文件、关闭文件或读写文件,可以通过时钟相关的体系调用得到体系时间或设置定时器等。
从逻辑上来说,体系调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理效果送回给用户空间。

体系服务之所以必要通过体系调用来提供给用户空间的根本原因是为了对体系进行“保护”,因为我们知道 Linux 的运行空间分为内核空间与用户空间,它们各自运行在差异的级别中,逻辑上相互隔离。所以用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间函数。
实现

体系调用是属于操作体系内核的一部分的,必须以某种方式提供给进程让它们去调用。CPU 可以在差异的特权级别下运行,而相应的操作体系也有差异的运行级别,用户态和内核态。运行在内核态的进程可以毫无限定的访问各种资源,而在用户态下的用户进程的各种操作都有着限定,比如不能随意的访问内存、不能开闭中断以及切换运行的特权级别。显然,属于内核的体系调用一定是运行在内核态下,但是怎样切换到内核态呢?
答案是软件中断。软件中断和我们常说的中断(硬件中断)差异之处在于,它是通过软件指令触发而并非外设引发的中断,也就是说,又是编程人员开发出的一种非常(该非常为正常的非常)。操作系同一般是通过软件中断从用户态切换到内核态。
体系调用(system call)和库函数(library function)是编程中常用的两种调用方式,它们之间有以下几点区别:

C库IO函数工作流程


后续提供具体代码
虚拟地点空间

每个进程都会分配虚拟地点空间,在32位机器上,该地点空间为4G:


代码里体现的都是用户区的数据段。

在进程里平时所说的指针变量,保存的就是虚拟地点。当应用程序使用虚拟地点访问内存时,处理器(CPU)会将其转化成物理地点。
这样做的利益在于:
具体对于虚拟地点空间的理解我看的这一篇

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4