系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。 从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。 系统服务之所以需要通过系统调用来提供给用户空间的根本原因是为了对系统进行“保护”,因为我们知道Linux的运行空间分为内核空间与用户空间,它们各自运行在不同的级别中,逻辑上相互隔离。所以用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间函数。比如我们熟悉的“hello world”程序(执行时)就是标准的用户空间进程,它使用的打印函数printf就属于用户空间函数,打印的字符“hello word”字符串也属于用户空间数据。 但是很多情况下,用户进程需要获得系统服务(调用系统程序),这时就必须利用系统提供给用户的“特殊接口”——系统调用了,它的特殊性主要在于规定了用户进程进入内核的具体位置;换句话说,用户访问内核的路径是事先规定好的,只能从规定位置进入内核,而不准许肆意跳入内核。有了这样的陷入内核的统一访问路径限制才能保证内核安全无虞。我们可以形象地描述这种机制:作为一个游客,你可以买票要求进入野生动物园,但你必须老老实实地坐在观光车上,按照规定的路线观光游览。当然,不准下车,因为那样太危险,不是让你丢掉小命,就是让你吓坏了野生动物。 原文地址:http://blog.21ic.com/user1/3155/archives/2006/24090.html
什么是系统调用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
kube-vip高可用k8s群
hiningrise
2024-06-10 14:29:12
Mac 安装 Node Error: Could not symlink include/node/common.gypi
根據提示,賦權限,刪除文件等 jimmy@MacBook-Pro ~ % brew link node Linking /usr/local/Cellar/node/20.0.0... Er
阿 軍
2024-06-10 14:17:51
EDGE浏览器新用户配置登录Microsoft账户出现0x80190001错误代码
-帥
2024-06-10 14:13:51
hosts文件丢失或更改后如何还原
-帥
2024-06-10 14:13:51
python gdal 安装使用(Windows, python 3.6.8)
emanlee
2024-06-10 14:13:11
研发高阶能力之「技术规划」
kidney
2024-06-10 14:11:51
Vue TypeScript 实战:掌握静态类型编程
Amd794
2024-06-10 14:05:40
Python: two dimensional array
# 假設puzzle是一個包含多個字符串的列表,每個字符串都是同一長度的,代表字母網格的一行 puzzle = [ "JGJGDDAOYD", "IDGFHSPOSA", "FGDIOSAFSC
®Geovin Du Dream Park™
2024-06-10 14:03:20
从零手写实现 nginx-13-nginx.conf 配置例子解释 + nginx 配置文件要如何解析?
葉止水
2024-06-10 14:02:20
【MySQL】查询以A字符开头以B字符结尾的数据
翎野
2024-06-10 13:52:19
Web Page Marker Pen All In One
xgqfrms
2024-06-10 13:51:29
2024 上海市居民小区的电动自行车使用共享充电服务的充电收费标准和依据 All In One
xgqfrms
2024-06-10 13:51:29