分类:
2007-03-23 17:23:35
1 版本
Unix系统主要基于2个版本:
* BSB(Berkeley Software Distribution)Unix: 如SUNOS4.x, HP-UX
* AT&T Unix System V: 如IBM-AIX, Solaris(SUNOS5.x)
两个版本的Unix提供的C语言函数不完全相同;
SUN公司在从BSD的Unix向Unix System V过渡的同时在Solaris系统上增加了BSD的支持.
在/usr目录下提供了/ucb, /ucbinclude, /ucblib三个目录; 在开发过程中要使用bzero等BSD的Unix函数,就需要将/usr/ucblib下的动态库链接使用.
2 简介
Unix系统由三部分组成:
* Unix核心
* 用户进程数目<=65535个
* 磁盘上的数据文件系统
Unix核心是一个二进制程序,大部分由C语言编写,有一小部分用汇编语言编写,核心有三个要完成的基本任务:
(1)建立用户进程并调度其执行
(2)提供系统服务
(3)处理硬件中断和例外
用户进程是一个二进制文件,每个系统上允许同时启动的进程数目是有限的,Solaris中缺省的最大进程数目是986;
(/etc/system文件重配Unix内核修改此参数)
每个进程有自己的虚拟地址空间,地址最大值取决于CPU类型和系统磁盘容量.
进程被执行时,代码和数据区装入主存中,寄存器和程序计数器装在CPU寄存器中.
3 文件系统
Unix文件系统是树型的组织结构,树的根节点就是"/"目录;
每个设备对应根文件系统/dev目录下的一个设备文件
/目录
home tmp var usr lib etc dev bin vmunix
| | |
adm lib----
/文件系统: 包含Unix系统核心,设备文件和配置文件
/usr文件系统: Unix命令和库函数
/tmp文件系统: Unix系统交换区
交换区的大小取决于工作站要运行什么应用,影响系统的运行速度,一般不应小于内存大小;
一部分应用程序使用"/"文件系统作交换区;
未给操作系统分配交换区时,缺省也是使用"/"文件系统作交换区.
使用Solaris时注意了,每个文件系统的10%是操作系统占用的;
对于超级用户,当容量是100%时,仍然可以向该文件系统写入(可能导致系统崩溃,应避免)
Unix常用的文件系统类型
* ufs(User File System)
* cdfs (CD-ROM File System)
* nfs (Network File System)
不同厂家的标准:
Solaris上的cdfs是hsfs(High Sierrs & ISO 9660 CD-ROM filesystem),AIX上的是cdrfs
Solaris上本地文件系统是ufs, AIX是jfs;
jfs是使用在大型文件系统上,用硬盘作为文件系统的缓冲区(降低系统性能换取系统的高可靠性);
ufs是使用内存作文件系统的缓冲区,一旦掉电可能导致文件系统的损坏.
文件系统的挂接与卸载
分为本地文件系统和网络文件系统;
启动时的自动挂接,写在/etc下的配置文件中;SUN上是/etc/vfstab,其他系统是/etc/filesystems
使用[df]查看挂接的文件系统;
Unix的NFS可以使工作站之间透明地相互使用硬盘资源(文件系统是ufs/jfs无所谓,不相干);
NFS的运行方式是CLIENT-SERVER方式:
* Server开放目录(Solaris上修改配置文件, /etc/dfs/dfstab,加入要开放的目录)
执行
/etc/init.d/nfs.server stop
/etc/init.d/nfs.server start
重启nfsd, 在AIX上用工具smit开放目录
* Client
执行
mount server-hostname:share-dir mount-point
* 卸载方法(无进程或终端窗口使用才可卸载)
umount mount-point
Unix的文件类型
* 文本文件
* 二进制文件
* 目录文件
* 设备文件
设备文件分为字符设备文件和块设备文件;
字符设备又叫原始设备(raw设备),一次处理一个字符,如:打印机
块设备必须在BSIZE字节单元内寻址,BSIZE在/usr/include/sys/param.h中定义为512字节,如:磁盘
使用ls -l查看/dev下的文件,第一个字符为b的是块设备,c是字符设备;
磁盘和磁带既是字符设备,又是块设备,"r"作标识, 如/dev/dsk是块设备文件, /dev/rdsk是字符设备文件
文件系统的创建与恢复
各个Unix系统上文件系系统有差异,AIX使用simt工具管理系统;
Solaris创建文件系统为例子:
* format对硬盘分区,
分区后一定要lable(write partition map and label to the disk)
命令中的format功能是低级格式化,慢~~的~~很,不必要不要用
* mkfs或newfs对分区建立系统文件
分区使用的设备文件必须是字符设备,如:newfs/dev/rdsk/c0t1d0s0
* fsck 全路径文件名 修复损坏的文件系统
修复过程是交互的,也可用-y选项取消交互。
4 Unix进程
* 前台执行进程 "fg"
* 后台执行进程 命令+"&" "bg"
* 挂起进程 "Ctrl+z"
* 查看进程 "ps [-aAcdefjl]" 返回值:
F:标志, 16进制数
S:进程状态
UID: 进程用户号
PID: 进程号
PPID: 父进程号
C: 进程最近消耗CPU资源的情况,C值低的进程比C值高的进程更易获得CPU
PRI: 进程的调度优先权,有-c时数大优先权高,无-c相反.
NI: 优先级
ADDR: 进程的内存地址
SZ: 进程在主存中可交换存储映象的大小(一页计)
WCHAN: 导致进程进入睡眠状态的事件的地址(NULL表示进程正在运行)
STIME: 进程启动时间
TTY: 运行进程终端
TIME: 进程累计执行时间
CMD: 命令名称
* 特殊进程:
进程0: 交换程序进程,功能是把进程映像移到盘文件,或从盘文件移到内存
进程1: 初始引导进程,负责启动其他用户进程
defunct进程: 一种子进程,当它正常退出时,系统通知他的父进程,由父进程结束该子进程,但是这时父进程已经运行异常或繁忙,导致该子进程不能正常退出,使该子进程变成为defunct进程.
这种进程不能杀掉,只能等待父进程退出,由系统结束.
* 进程控制
出现异常: kill [-signal] pid ... kill -l
5 Unix 常用配置文件
/etc/hosts
IP hostname 127.0.0.1必须设为localhost
/etc/passwd
shadow文件保存用户口令
passws文件格式如下: 用户名: 口令: 用户号: 组号: 注释: 用户家目录: Shell
/etc/group
用户组文件: 用户组名: 口令: 用户组号: 用户组(,作为分隔符)
/etc/services
Services与Socket端口对应资源文件:
service-name port/protocol(tcp/udp) aliases
/etc/netmasks
网络掩码资源文件: 子网 掩码
/etc/vfstab, /etc/filesystems
device to mount
device to fsck
mount point
FS type
fsck pass
mount at boot
mount option
/etc/dfstab, /etc/exports
配置开放本机的某个文件系统: dfstab : share -F FSType -d description pathname
inittab
系统初始化配置文件: 标识符: 运行级别: 动作: 命令
/etc/system
Solaris内核参数的配置文件: sysdef -i 查看系统当前参数
命令格式:
set patameter = value
set module_name:variable = value
重要参数:
max_nprocs: 最大进程数目
max_users: 最大用户数目
shmsys:shminfo_shmmax: 最大共享内存(一个进程能使用的最大共享内存)