| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2920 人关注过本帖
标题:系统调用的问题
取消只看楼主 加入收藏
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:7 
系统调用的问题
《操作系统》教材:“在输入输出操作中直接使用底层的系统调用会产生这样一个问题,即它们的效率可能非常低,原因如下:系统调用会降低计算机的执行性能。……”

问题:为什么说效率非常低?
搜索更多相关主题的帖子: 执行 调用 系统 原因 效率 
2020-06-09 22:21
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
库函数最终也得使用系统调用,相比之下,不应该是库函数效率更低吗?要说功能完备,库函数赢;要说执行特定功能,增加了一堆代码后怎么效率反而高呢?

梦想拥有一台龙芯3A-4000
2020-06-09 22:29
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
反正书上有幅图,用户程序那儿画了根线意思是通过系统调用进入核心态执行,应该跟次数没关系吧

这门课有点蒙圈啊……

梦想拥有一台龙芯3A-4000
2020-06-09 22:50
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
网上这个实在是不敢苟同……

read函数也在用户空间申请缓冲区(参数里就明确了),然后根据i节点文件类型再调用不同的读写函数,最后应该是利用类似put_fs_byte把获取的字节一个字节一个字节写进缓冲区,空间剩余部分填0。

getc参数FILE里有两项cha *__bufp和char *buf用于标识缓冲区,如果只在固定BUFSIZ=8192相当于2页连续空间里进行类似操作;那read函数就算再差,在缓冲区中申请4页连续空间应该还不难,实在分配不了就等着缓冲区解锁直到分配成功,再怎么说4页的效率也比getc的2页高吧

梦想拥有一台龙芯3A-4000
2020-06-10 09:34
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
库函数里倒是有一大堆,这个get那个get的

刚查了一份有221个系统调用的,跟读操作相关只有三个,read、readv-读缓冲组、pread-随机读(后面两个基本可以不考虑),对应写操作也只有类似的三个

梦想拥有一台龙芯3A-4000
2020-06-10 12:00
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
程序代码:
#include <stdio.h>

void hello(void)
{
    printf("hello, world\n");
}

void main(void)
{
    __asm__("cli; call hello");
}


试了一下关中断

梦想拥有一台龙芯3A-4000
2020-06-10 12:36
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
哎,7.11四六级考试,够折腾一个月了……

梦想拥有一台龙芯3A-4000
2020-06-10 21:36
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
回复 10楼 fulltimelink
这些概念倒是有,但好像也没地方解释清楚

比如linux内核文件系统里有个buffer.c,前段时间查资料有的叫高速缓冲区、有的叫高速缓冲池,有的还整出缓冲区和缓冲池的区别等等。进程通过block read函数从哈希表查找使用后失效数据的处理方式仅是依据内存各功能区设计,谁又会无聊到把缓冲块用后清零?其它也差不多,前一个连接池后一个线程池的,有复用问题但概念众多,整得人都快裂了

梦想拥有一台龙芯3A-4000
2020-06-10 23:33
快速回复:系统调用的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016953 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved