资源描述:
《unix编程初步》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、UNIX编程初步黄永峰清华大学电子工程系网络与人机通信研究所:62785717Email:RFY@TSINGHUA.EDU.CNUNIX的体系结构shcppwhoCCcomp内核a.outld硬件dateviKernelwcedgrep序程其他应用图1UNIX体系结构UNIX的基本特点¢是一种多任务、多用户、可移植性、层次性文件系统的分时OS¢核心程序¢命令解释器Shell¢安全性¢文件系统¢网络功能UNIX的多任务、多用户实现用户态1¢多任务和分时¢进程、进程环境、进程状SystemCallReturn态。核心态2¢PID0
2、->fork()->PID1…¢核心态、用户态、睡眠态、就绪态。睡眠态4¢进程转态的转换。3就绪态¢进程的保护:特权系统(4图2进程状态及其转换个级别)。¢用户使用UNIX的4个层次。¢系统调用SystemCall。UNIX的Kernel¢常驻内存的数据和程序,同硬件直接打交道,为应用程序服务。¢Kernel是可根据用户需求和硬件环境裁剪。¢主要功能:I/O管理、硬件管理、进程调度、内存管理和文件管理等。¢SCOUNIX的Kernel在/unix文件。Shell¢提供用户访问UNIX的Kernel的接口,是一种交互式命令解释器
3、,也是一种命令级程序设计语言。¢Shell的版本:BShell、CShell、KShell和VShell等。¢BShell标准Shell,又称为Bourneshell。¢Shell执行命令的过程:接收命令->建立子Shell->执行->子进程结束。文件系统的特点¢层次的树型结构。(root)¢能建立和删除文...件。devbinunixlibbootetc¢文件可动态增长。tty00tty10binincludehomeh.cdefault¢文件数据的保护。图3SCOUNIX的目录树¢外设也作为文件。安全机制¢用户注册。¢用户
4、等级(文件主、同组用户、其他用户)。¢文件访问权限(读r,写w,执行x)。例如:ls-lux01-rwxr-xr--jinningotherDec18:091997ux01¢文件和目录的权限和属组可以修改。例如:chmod(changemodify)、chgrp(changegroup)。网络功能¢NOS的三足鼎立:NetWare、WindowsNT、UNIX。¢UNIX是Internet的根基。¢UNIX的通信协议:TCP/IP、UUCP。¢UNIX的联网方式:LAN和Modem。¢网络功能:Telnet,FTP、WWW、e
5、-mail等。UNIX的标准和实现¢UNIX的三大标准:ANSI指定了C语音的规格说明。IEEEPOSIX是IEEE指定的标准簇(Portableoperationsysteminterfaceforcomputerenvironment),具体文件是1003.1。X/OpenXPG3,X/OPEN是一个国际计算机制造商组织,XGP3是它提供的X/OpenPortableGuidingVer.3.¢UNIX的各种版本和变体都是起源于PDP-11系统上运行的UNIX分时系统的V6和V7.在此基础上有三个分支:A&T的UNIX实验
6、室导出了商业版本,即SVR4,符合POSIX1003.1标准和X/OpenXPG3标准.第二分支是加州伯克利分校的4.XBSD.第三分支是A&T的计算研究中心的研究版本.1.系统调用和C库函数(1)¢所有操作系统都提供多种服务的入口点,由此向系统内核请求服务,这些入口点被称之为系统调用(systemcall)。¢系统调用(systemcall)是UNIX内核与应用程序之间的唯一接口。¢内核对外提供的所有的功能均以系统调用的方式出现,应用程序只有通过系统调用才能申请和访问硬件资源(内存和磁盘,I/O设备),如:malloc(),
7、fork(),open(),read(),write(),close(),ioctl()。¢系统调用还可以访问内核数据,如:getpid(),chdir(),umask(),等。1系统调用和C库函数(2)∑每条系统调用在标准C库中设置一个具有同样名字的函数。用户进程用标准C调用序列来调用这些函数,从应用角度可将系统调用视作为C函数。C程序员在使用系统调用和使用其它函数调用时,用法上没什么区别。∑进程调用一次系统调用要导致CPU在用户态和核心态之间作一次切换,它比在进程自己的地址空间中调用一个简单的子例程要花费更长时间(所以UN
8、IX中提供了文件缓冲I/0库程序)。1系统调用和C库函数(3)应用代码用户进C库函数程系统调用内核2系统调用出错处理¢系统调用都返回一个整数值,如:open(),wrire(),read()等,当系统调用的返回值为-1时,表示系统调用执行失败。¢整数errno说明失败的原因。