Unix 操作系統基礎手冊

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: 最大共享內存(一個進程能使用的最大共享內存)
 
6 常用操作命令
//////////////////////////////////////////


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章