九UNIX操作系统 - 广西大学计算机与电子信息学院

Download Report

Transcript 九UNIX操作系统 - 广西大学计算机与电子信息学院

UNIX操作系统
主讲:陈笑蓉
贵州大学计算机科学与技术学院
1.
2.
3.
UNIX操作系统是一个功能很强而且是十分灵活
的操作系统和计算机环境 ;
是使用非常方便的软件开发环境;
是当代最有代表性的多用户多任务分时系统。
主要内容








UNIX操作系统的发展和特点
UNIX的系统结构
UNIX进程管理
进程调度
进程通信
UNIX存储管理
UNIX设备管理
UNIX操作系统的文件管理
9.1 UNIX操作系统的发展和特点
 20世纪60~70年代,AT&T的Bell实验室的Ken
Thompson和Dennis Ritchie(1983 ACM TURING
AWARD);
 C语言的诞生,为了写UNIX
 1978年UNIX V7产生,1982年UNIX System III
(V7+PWB+UNIX/RT)
 1978年Berkeley分校发布3BSD(虚拟存储器支持、
按需分页支持),1979年4BSD(internet支持),
1993年4.4BSD(新文件系统)
SVR: SYSTEM V
4.3BSD
1986
1987 1988
SVR3.0 SVR3.1
SVR3.2
XPG3
4.4BSD
4.3BSD
4.3BSD Tahoe
1989
1990
1991
SVR4
ANSI C
POSIX.1
1992
UNIX标准化
 80年代UNIX版本的剧增以及各种UNIX版本之
间的差别不断扩大导致了许多用户(例如美
国政府)要求对其标准化,以增强各种应用
程序在这些UNIX操作系统之间的可移植性。
 其中几个重要的标准包括:ANSI C、IEEE
POSIX以及X/Open XPG。所有这些标准只是界
面的规格说明(例如,网络界面,进程间的
通信,系统管理等),而具体实施则留给制
造商。
UNIX的基本特点
1.
2.
3.
4.
5.
6.
7.
多用户多任务的分时系统
良好的界面
可移植性强
配置灵活
具有一个可装卸的分层树型结构文件系统
安全机制完善
丰富的网络功能
UNIX 的界面
 UNIX有两种界面,一个是命令控制界面,一
个是编程界面。
• 命令控制界面是通过Shell提供给用户使用。
• 编程界面是UNIX系统的系统调用以标准实用子程
序形式提供给用户编程中使用,从而减少用户程
序设计和编程难度,节省用户的程序设计和编程
时间。
 基本命令控制界面包括:
• 系统访问命令,例如 login ,logout 等。
• 编 辑 和 文 件 管 理 命 令 , 例 如 vi ,emacs ,
cp ,rm 和ls 等。
• 编程、链接命令,例如 cc , link 等。
• 维护、管理命令,例如 adduser , chown 等
• 调试命令,例如 dbx 等。
• 记帐、日期等命令,例如 date 等。
• 网络通信命令,例如 mailx 等。
 特殊命令包括 :
•
•
•
•
后台命令“&”
文件名生成符号“*”和“?”
输入输出重定向符号“<”、“>”和“>>”
管道命令 “∣”
进程1
pipe
图9 –1 unix 的管道机制
进程2
 编程界面:
• 文件操作类:
open();fopen();write();read();close();fclo
se()
• 进程控制类:
fork();wait();kill();signal();pipe();sleep
();
• 信号与时间类:time();stime();date();
 具体使用请用man 帮助。如man fopen
9.2 UNIX的系统结构
 UNIX系统结构分为三层:
• 最内层是UNIX操作系统核心,它包括文件控制系
统和进程控制系统两大部分。
• 中间层是shelll命令解释层、实用程序、库函数。
该层中的shell解释程序是用户和UNIX操作系统
的界面。
• 最外层是用户程序,包括许多应用软件。UNIX的
系统结构如下图( 9-2) 所示
UNIX 系统核心的体系结构
 在UNIX操作系统的核心部分有两个子系统:
• 文件子系统
• 进程控制子系统
 核外程序通过引用两组被明确定义的系统调
用与核心交往,其中一组用于与文件系统的
交互作用,另一组与进程控制子系统的交互
作用。如图9 -3 所示.。
用户程序
用户层
内核层
系统调用接口
进程控制
子系统
文件子系统
进程内部信
进程调度
高 速 缓
冲
内存管理
字符设备
块设备
设备驱动器
硬件控制
内核层
硬件层
硬
件
图 9-3 UNIX系统内核框图
 系统调用接口 :
• 系统调用接口是操作系统提供给编程人员的接口。
编程人员通过系统调用使用操作系统内核提供的
各种功能。
• 系统调用的执行不同于一般用户程序的执行。系
统调用执行是在核心态下执行系统子程序,而用
户程序则是在用户态下执行。
 UNIX的系统调用由一条访管指令———陷阱
或陷阱指令实现(trap)。
• 该指令是一条机器指令,其操作数部分对应于系
统调用的编号。
• 另外,在系统中有一张系统调入口表,用来指示
各系统调用处理程序的入口地址。
 文件子系统
• 文件管理 :用于为文件分配存储空间,管理空
闲盘块,控制对文件的存取,以及为用户检索数
据。
• 高速缓冲机制 :缓冲机制与I/O设备驱动程序间
交互作用,以控制各种外设到核心的数据传送和
核心到外设的数据传送。
• 设备驱动程序 :用以控制I/O 设备进行操作的核
心模块
 进程控制子系统
•
•
•
•
进程控制:fork,exec,exit,…
进程通信 :原语,软中断,管道,socket,…
存储器管理:采用了段页存储管理方式;
进程调度:多级反馈轮转调度算法。
9.3 UNIX进程管理
 整个UNIX系统就是一个进程家族,有一个最
高的祖先。
 一般情况下,UNIX系统的进程家族树如下图
9-4所示,0#进程和1#进程是UNIX系统中两
个最重要的进程,其中0#进程是UNIX系统中
唯一只在核心态下运行的进程。它有三种功
能:调度分配处理器、管理进程交换和创建1
#进程,所有其他进程都由1#进程直接或间
接创建。
交换进程 0#
init进程 1#
inetd进程
syslog进程
…
终端登录进程(login)
用户shell进程
用户子进程
…
用户子进程
图9-4 UNIX系统进程树结构
 进程的数据结构
• 在UNIX系统V中,把PCB 分成两部分,一是进程
表项,称为proc结构。其中含有最常用的信息,
由核心对它们进行存取;
• 另一部分是U区,称为user结构。存放进程表项
的一些扩充信息,它只能被运行在核心态的进程
所存取。
 UNIX系统把一个进程的虚拟地址空间划分为若干个
连续的逻辑区,有正文区、数据区、栈区等。
 为了对区进行管理,在核心中设置了一个系统区表
(简称区表),各表项中记录了描述活动区的有关
信息。
 进程区表中每一项记录一个区的起始虚地址及指向
系统区表中对应的区表项。
本进程区表
系统区表
物理盘区
进程表
┆
A
B
表项区
U区
扩充
信息
虚地址(正文)1
C
A
虚地址(数据)2
虚地址(栈)3
B
┆
C
进程控制表PCB
存储盘区表
进程的状态









用户态运行 在CPU上执行用户程序;
核心态运行 在CPU上执行核心程序;
在内存就绪 具备运行条件,只要内核调度就能执行;
在内存睡眠 进程处于内存中,只有等到某事件发生后才能执行;
在外存就绪
进程处于就绪状态,但是在其被内核调度去执
行之前必须被交换进内存;
在外存上睡眠 进程在等待某事件发生,并被交换到外存上;
被剥夺状态
被调度程序剥夺了处理机后的进程状态;
创建态
新进程被创建,还不能运行;
终止态
进程终止自己。
用户运行
系统调用,
中断
中断,中断返
回
返回
2
9
重新
调度
进程
睡眠
4
抢占
交
换
出
交
换
进
唤醒
睡眠,交换出
7
被抢占
3
唤醒
交
换
出
6
返回
用户
内核运行
消失
僵死
1
5
睡眠,交换出
有足够内存
fork
8
创建
(内存不够)
进程上下文
 用户级上下文:由进程的用户程序段部分编译而成的用
户正文段、用户数据、用户段和共享存储器组成。共享
存储区用于实现进程间的通信.
 寄存器上下文;
 系统级上下文 :静态级上下文和动态级两部分。静态部
分包括:PCB 结构(proc结构和user结构)、进程区表
项、系统区表项和页表以及核心栈,区表和页表用于实
现进程的虚地址到物理地址的转换,核心栈主要用来装
载进程中所使用系统调用的调用序列。动态部分包括:
进程在执行时使用的核心栈、若干层寄存器上下文
用户级上下文
进程正文
用户数据
用户栈
寄存器上下文
PC的值
PSW的值
栈指针
通用寄存器
的值
系统级上下文
静态部分
动态部分
静态部分
proc结构
user结构
进程区表
页表
核心栈第3层
保护第2层的寄存器上下
文
核心栈第2层
保护第1层的寄存器上下
文
核心栈第1层
保护第0层的寄存器上下
文
第0层
寄存器上下文
9.4 进程调度
 UNIX系统是分时系统,因而未设置作业调度。对进
程的调度采用多级反馈队列轮转调度方式。相应地,
在系统中便为就绪进程设置了多个就绪队列。
 调度程序在进行调度时,总是先从最高优先级队列
中,取出排在队列最前面的进程。仅当最高优先队
列中没有进程时,才从次高优先级队列中找出其队
首进程,令他执行一个时间片后,又剥夺该进程的
执行,将该进程放到下一个优先级队列的末尾,再
从优先级最高的队列中取出下一个就绪进程投入运
行。
9.5 进程通信
 UNIX System V的进程通信有三种方式:
• 信号:是对硬件中断的一种模拟,也称为软中断。这种方
式是利用软中断信号实现同一用户的各进程之间的通信。
这种通信的目的是通知对方发生了异步事件。
• 管道:一个管道的执行将用到两个file 数据结构,它们
其中一个进程可以向管道写,而另一个进程从管道读.
• IPC机制(进程间通信):IPC机制包括消息队列、共享内
存和信号量三种.
9.6 UNIX存储管理
 UNIX系统V中采用了请求分页存储管理机制和
对换机制。
 这样,当进程运行时不必整个进程的映象都
在内存,而只需在内存保留当前用到的页面。
当进程访问到某些尚未在内存的页面时,就
由核心把这些页面装入内存。
缓存技术
 UNIX 采用了一系列涉及到高速缓存的内存管
理技术。
•
•
•
•
缓冲区缓存
页缓存
交换缓存
硬件缓存
 UNIX使用最近最少使用策略(LRU)决定把
哪个页面换出。
 页面的“年龄”变量表示页面的被访问次数。
初始值默认为3,每访问一次,值增加3,直
到最大值20;每当交换进程尝试换出一页时,
年龄值减1,直到0。变量“年龄”值越小,
页面越“老”,老的页面,首先被换出。
9.7 UNIX设备管理
 UNIX系统中也将设备分为两类,块设备和字符设备。
对这些设备管理的目的之一是使特定硬件设备的特
性与用户无关,这种特征称为透明性,在UNIX中,
大部分I/O设备的特性由于I/O系统的缘故甚至对内
核也是透明的。
 I/O系统是由一个超高速缓存系统、一般设备的驱
动程序和特殊设备的驱动程序构成的、现又增加了
一种网络界面,主要用于支持网络的I/O操作。
设备驱动程序
 UNIX系统中每类设备都有一个驱动程序,设备
驱动程序是驱动物理设备和DMA控制器或I/O控
制器等直接进行I/O操作的子程序集合。
 它们负责设置相应设备有关寄存器的值,启动
设备进行I/O操作,指定操作的类型和数据流
向等。
9.8 文件管理
 UNIX文件系统具有四个显著特点:
1.有层次的多级树型目录结构,而且还是可以灵
活装卸的文件系统;
2.把输入/输出的硬件和特别文件连接起来;
3.对I/O设备的存取和对普通磁盘文件的存取一样
看待,统一化为文件处理,从而简化了用户的操
作;
4.对文件提供了良好的保护机构。
文件系统存储结构
 索引点是指在UNIX的文件系统中,每一个文
件都有一个且仅有一个主结点,简称i结点。
 i结点中包含的是对应文件的特征参数,如文
件类型,文件长度,文件存放位置等。
 所有文件的i结点组成系统的i结点表,它存
放了该文件系统中的所有i结点,主结点从0
号开始依次向后编号.
文件的寻址
1.直接寻址方式
2.一次间接寻址方式
3.多次间接寻址方式(二次间接寻址、三次
间接寻址)
空闲盘块的管理
 UNIX系统采用成组链接法对空闲磁盘加以组织,系统将若干
空闲块组成一个组,将每组中的盘 .
目录文件
/
/dev
/bin
/etc
/usr
/mnt
/usr1
…
/usr1
/tmp
图9-22 Unix文件系统一般目录结构
/lib
文件的常用命令












1. 文件管理命令
ls
列当前目录文件;
cp
复制文件;
2. 文本加工命令
cat
显示文件内容;
pr
打印机打印文件内容;
3. 软件开发
cc
C语言编译程序; vi
全屏幕编辑程序。
4. 进程管理
ps
显示当前各进程状况;
kill
终止进程;
sleep
使进程睡眠;
&
使命令在后台执行。
5. 通信
6. 系统维护和服务
mount
安装文件卷到指定目录;
unmount
拆文件卷
who
显示系统各用户状态。