为了账号安全,请及时绑定邮箱和手机立即绑定

金沙娱乐城开户,博彩国际公司

/ 猿问

系统调用和C语言库函数

一只甜甜圈 2018-11-26 15:13:59

本文地址:http://www.bgel.cn/wenda/detail/459540
文章摘要:金沙娱乐城开户,博彩国际公司,澳门ewin,扎金花棋牌游戏官网

最近学习操作系统,有些东西不是很明白。c语言的库函数有些是利用系统调用实现的,有些不是.我就想问下不是利用系统调用的那部分,在执行时硬件是怎么知道的呢?最后语言代码被编译成二进制,执行时仍然是由寄存器硬件什么执行的吧,既然没利用系统调用,alu这些东西是怎么懂这些库函数要求的操作是干嘛的啊?不是说系统调用是软硬件的接口吗?还有系统调用和驱动程序的关系是什么?


查看完整描述

2 回答

?
慕少1208348

调用系统调用,代码跳入内核态,可以执行任何指令,包括 受保护的指令
在用户态,很多指令是受保护的,不能直接执行,或者执行会出错。
例如 286 以上的X86 系列及兼容CPU
IO指令,就是受保护的。
实际上,硬件之间是通过总线相连的,并通过,IO读写指令,内存读写指令,DMA 方式,等等相互通讯。
程序代码,被CPU取到,然后逐一执行
你写的代码,加载到内存后,操作系统用一个跳转指令(call,jump,ret,iret 等等,都属于跳转类指令)
转到你的代码中执行的

除非受到保护的指令,都是可以在用户态执行的,例如加法指令
数学库
math.h,的函数
string.h
就大部分代码都属于,非保护指令

而 IO库中的许多函数
例如
stdio.h
io.h 
中的很多函数,都会调用系统调用的


查看完整回答
反对 回复 2018-11-30
?
料青山看我应如是

说说我的理解,C语言里的库函数在编译后都是生成的二进制指令,就包含了对硬件的操作。
举一个例子,“+”是对两个数进行操作,这两个数既可能是数字,也可能是变量。如果是数字,在汇编语言中对于的就是立即数,编译成二进制指令时直接利用无符号数加法指令就可以;而如果是变量的话,就会编译成多条指令,首先是从内存里读取变量到寄存器,再在寄存器中进行加法运算,运算完再保存到内存中。


查看完整回答
反对 回复 2018-11-30

添加回答

回复

举报

0/150
提交
取消
意见反馈 去赚学费 常见问题 扎金花棋牌游戏官网 官方微信
网站地图 博天堂 fun 神州国际娱乐app 天天娱乐大厅下载安装 澳门美高梅乐城
优乐国际娱乐 优德w88app官方登录 真人888 app
申博娱乐 亚虎app客户端下载 最新欧洲国家队排名 尚博娱乐下载
扑克王app推广 12博手机网址 天天正版娱乐 大桨娱乐城
玛雅娱乐官方登录 利澳国际彩票平台一 最新欧洲国家队排名 金花棋牌游戏
大量偷拍情侣自拍视频 成人在线视频
五月丁香六月综合缴情 青青青草网站免费观看 青娱乐视频分类精品
一本道综合久久免费 国产精品大陆在线视频 色色999 色姑娘棕色姑娘综合站 久久影院
五月色播先锋在线丁香 亚洲色情网 我看逼 新农夫网址导航 国产精品高清视频免费