栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

unix环境高级编程——UNIX体系架构

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unix环境高级编程——UNIX体系架构

本期主题:
unix环境高级编程——UNIX体系架构


文件IO
  • 0.初始UNIX
  • 1.系统调用
  • 2.库函数
  • 3.shell


0.初始UNIX

这里略过unix的历史不讲,网上有比较详细的资料。
我们可以将操作系统定义为一种软件 ,这种软件所做的事情包括控制计算机各种硬件资源,提供应用程序的运行环境,通常这种软件被称为内核(kernel)。
整体的系统架构图如下所示:

内核的接口被称为系统调用
公用函数库构建在系统调用之上
应用程序既可以使用公用函数库,也可以是使用系统调用
shell是一个特殊的应用程序,为运行其他应用程序提供了接口

1.系统调用

/dev目录中的设备文件的用法都是相同的,它们都可以被打开、读、写和关闭。

下面是用于访问设备驱动程序的底层函数(系统调用)。

  • open:打开文件或设备
  • read:从打开的文件或设备里读数据
  • write:向文件或设备写数据
  • close:关闭文件或设备
  • ioctl:把控制信息传递给设备驱动程序。
2.库函数

针对底层硬件的输入输出,频繁的使用系统调用效率会非常低,原因在于:

  • 操作系统需要频繁的从 用户态 切换到 内核态,减少这种开销的一个好方法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。
  • 硬件本身的特性决定,例如,磁带机通常一次能写的数据块长度是10k。所以,如果你试图写的数据量不是10k的整数倍,磁带机还是会以10k为单位卷绕磁带,从而在磁带上留下了空隙。

因此为了给设备和磁盘文件提供更高层的接口,Linux发行版(和UNIX)提供了一系列的标准函数库。
它们是一些由函数构成的集合,你可以把它们应用到自己的程序中,比如提供输出缓冲功能的标准I/O库。
你可以高效地写任意长度的数据块,库函数则在数据满足数据块长度要求时安排执行底层系统调用。这就极大降低了系统调用的开销。
以下就是常用的标准I/O库函数

  • fopen、fclose
  • fread、fwrite
  • fflush
  • fseek
  • fgetc、getc、getchar
  • fputc、putc、putchar
  • fgets、gets
  • printf、fprintf和sprintf
  • scanf、fscanf和sscanf
3.shell

shell是一个用户可以跟操作系统交互的可视化终端,它允许用户向操作系统输入需要执行的命令,这点与Windows的命令提示符类似,但是功能更为强大。
在Linux中安装多个shell是完全可行的,用户可以挑选一种自己喜欢的shell来使用。
下图显示了shell(实际上是两种shell:bash和csh)和其他程序环绕在Linux内核的四周。
在Linux系统中,默认总是作为/bin/sh安装的标准shell是GNU工具集中的bash(GNU Bourne-Again Shell)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334602.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号