免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5499 | 回复: 12
打印 上一主题 下一主题

[C] 为什么保护模式下不能直接I/O硬件操作,只能通过系统调用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-14 00:28 |只看该作者 |倒序浏览
20可用积分
为什么要设置权限呢,

比如,如果两个程序同时都对打印机进行直接读写端口的IO操作,那么打印出来的结果是混乱的?

如果不能直接读写端口,只能通过系统调用来读写打印机,
有两个程序都要打印东西,
是不是引入系统调用就可以避免引起混乱呢

应用程序只能使用系统调用操作硬件,意义何在呢,困惑

谢谢

最佳答案

查看完整内容

Dos是一个单用户系统,Windows、Linux等是多用户系统,所以采用的方式不同。

论坛徽章:
0
2 [报告]
发表于 2010-01-14 00:28 |只看该作者

回复 #9 湿了耶 的帖子

Dos是一个单用户系统,Windows、Linux等是多用户系统,所以采用的方式不同。

论坛徽章:
0
3 [报告]
发表于 2010-01-14 00:40 |只看该作者
操作系统帮你更好的安排打印任务。。。如果多个打印服务器请求,按先后顺序排队。。。

论坛徽章:
0
4 [报告]
发表于 2010-01-14 09:08 |只看该作者
我知道打印队列、可能打印机这个例子不好

那么,要是把打印机换成声卡、网卡之类的别的硬件,怎么解释呢

为什么要禁止直接读写端口,而只能使用系统调用呢,有什么意义呢

谢谢

论坛徽章:
0
5 [报告]
发表于 2010-01-14 09:11 |只看该作者
你的签名好淫荡!!!!!!!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2010-01-14 09:17 |只看该作者
防止用户随便写个程序破坏硬件driver的运行,造成操作系统无辜蒙冤。

论坛徽章:
0
7 [报告]
发表于 2010-01-14 09:24 |只看该作者
OS在硬件上层有自己的缓存等,都通过系统调用,数据能保证一致性。
比如硬盘,如果允许直接读写磁盘扇区,那数据就乱掉了。

论坛徽章:
0
8 [报告]
发表于 2010-01-14 09:24 |只看该作者
意义就在于OS把帮助你管理硬件,把设备抽象成文件节点(不是全部),把对于外设的数据通信抽象成对文件的读写(还有一系列ioctl)。
如果没有OS的抽象,用户程序将要管理一切硬件的细节。让用户程序不用管理硬件,这就是必须通过系统调用来操作硬件的意义。

论坛徽章:
0
9 [报告]
发表于 2010-01-14 09:32 |只看该作者
原帖由 思一克 于 2010-1-14 09:24 发表
OS在硬件上层有自己的缓存等,都通过系统调用,数据能保证一致性。
比如硬盘,如果允许直接读写磁盘扇区,那数据就乱掉了。

为什么改为系统调用,硬盘数据就不会乱呢,
使用系统调用,也可以不经过文件系统而直接读写特定的柱面、扇区、磁道吧,比如DD命令就是这样实现的吧
那么磁盘数据还是免不了要乱的
我错哪里了、汗

论坛徽章:
0
10 [报告]
发表于 2010-01-14 09:35 |只看该作者
原帖由 群雄逐鹿中原 于 2010-1-14 09:17 发表
防止用户随便写个程序破坏硬件driver的运行,造成操作系统无辜蒙冤。

那么DOS也有驱动程序,为什么不禁止直接读写端口呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP