IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 操作系统实验题目之系统用户界面(含c语言代码) -> 正文阅读

[C++知识库]操作系统实验题目之系统用户界面(含c语言代码)

1. 分别利用文件的系统调用read、write和文件的库函数fread、fwrite实现文件复制功能,比较在每次读取一个字节和1024字节时两个程序的执行效率,并分析原因。

1) 进入ubuntu,在桌面新建文件夹 1 用户界面 用以存储文件。
2) 进入此文件夹,新建txt文档,写入超过10k的文本。
3) 在此页面空白处右键进入终端,创建copyfread.c文件:
在这里插入图片描述
4)编写代码如下:
在这里插入图片描述
5)在终端中输入命令:

gcc copyfread.c -o copyfread_exe   //生成可执行文件

在这里插入图片描述
6)同一目录下创建copyfread1024.c文件,将第4步源文件中的 #define count 1 改为 #define count 1024后复制粘贴到此文件中,保存并执行第5步。

gcc copyfread1024.c -o copyfread1024_exe

在这里插入图片描述
7)同一目录下创建copyread.c文件,编辑代码并保存。
在这里插入图片描述
8)执行第(5)步:gcc copyread.c -o copyread_exe
在这里插入图片描述
9)同一目录下创建copyread1024.c文件,将第7步源文件中的 #define count 1 改为 #define count 1024后复制粘贴到此文件中,保存并执行第5步。
在这里插入图片描述

gcc copyread1024.c -o copyread1024_exe

在这里插入图片描述
10) 分别执行下图命令:
在这里插入图片描述

上图的4次运行分别对应用 fread/fwrite 、read/write 缓冲区大下为 1 和 1024 的耗时。
结论:库函数实现文件复制比文件的系统调用效率更高,读取1024字节程序比读取1字节效率更高;
原因:1. 对比分析库函数与系统调用对执行时间的影响; 要实现文件拷贝,必须嵌入内核,从磁盘读取文件内容,然后存储到另一个文件。

实现文件拷贝最通常的做法是:
  读取文件用系统调用read()函数,读取到一定长度的连续的用户层缓冲区,然后使用write()函数将缓冲区内容写入文件。也可以用标准库函数fread()和fwrite(),但这两个函数最终还是通过系统调用read()和write()实现拷贝的,因此可以归为一类,不过效率肯定没有直接进行系统调用的高。

  1. 对比分析缓冲区大小对执行时间的影响,其大致原因如下: 本来系统读取数据的缓存区是较大的,可以读取多个字节数据,这样能够解释为何多(更多)字节数据的读取高的原因。又由于读取单(低)字节,需要系统额外地设置和读取缓存区,导致比读取更多字节更高的时间开销,所以单(低)字节的效率便低于多字节的时间效率了。

2.编写一个C程序,使用Ubuntu下基于文本的终端图形编程库curses,分窗口实时监测(即周期性刷新显示)CPU、内存和网络的详细使用情况和它们的利用率。

(1) 使用curses库,使用命令:sudo apt-get install libncurses5-dev,下载相关软件包
在这里插入图片描述
(2) gedit 2win-curses.c 编辑源文件。
在这里插入图片描述
(3) 编译调试gcc -o curses_exe 2win-curses.c -lcurses (如果没有后面 的-lcurses,会提示 一系列的 undefined reference to `initscr’)
在这里插入图片描述
执行 ./curses_exe 即可弹出多窗口性能对比。
在这里插入图片描述
(4) 查看CPU使用效率
利用命令:cat /proc/stat,截图如下:
在这里插入图片描述
在这里插入图片描述
(5)查看内存利用
利用命令:cat /proc/meminfo,实现截图:
在这里插入图片描述
在这里插入图片描述
(6)计算程序执行的时间
利用命令:time ./curses_exe,执行截图如下:
在这里插入图片描述
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:38:58  更:2022-01-24 10:40:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:25:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码