430 likes | 790 Views
UNIX 操作系统. 主讲:陈笑蓉 贵州大学计算机科学与技术学院. UNIX 操作系统是一个功能很强而且是十分灵活的操作系统和计算机环境 ; 是使用非常方便的软件开发环境; 是当代最有代表性的多用户多任务分时系统。. 主要内容. UNIX 操作系统的发展和特点 UNIX 的系统结构 UNIX 进程管理 进程调度 进程通信 UNIX 存储管理 UNIX 设备管理 UNIX 操作系统的文件管理. 9.1 UNIX 操作系统的发展和特点.
E N D
UNIX操作系统 主讲:陈笑蓉 贵州大学计算机科学与技术学院
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.4BSD 4.3BSD 4.3BSD 4.3BSD Tahoe 1986 1987 1988 1989 1990 1991 1992 SVR3.0 SVR3.1 SVR4 SVR3.2 XPG3 ANSI C POSIX.1
UNIX标准化 • 80年代UNIX版本的剧增以及各种UNIX版本之间的差别不断扩大导致了许多用户(例如美国政府)要求对其标准化,以增强各种应用程序在这些UNIX操作系统之间的可移植性。 • 其中几个重要的标准包括:ANSI C、IEEE POSIX以及X/Open XPG。所有这些标准只是界面的规格说明(例如,网络界面,进程间的通信,系统管理等),而具体实施则留给制造商。
UNIX的基本特点 • 多用户多任务的分时系统 • 良好的界面 • 可移植性强 • 配置灵活 • 具有一个可装卸的分层树型结构文件系统 • 安全机制完善 • 丰富的网络功能
UNIX 的界面 • UNIX有两种界面,一个是命令控制界面,一个是编程界面。 • 命令控制界面是通过Shell提供给用户使用。 • 编程界面是UNIX系统的系统调用以标准实用子程序形式提供给用户编程中使用,从而减少用户程序设计和编程难度,节省用户的程序设计和编程时间。
基本命令控制界面包括: • 系统访问命令,例如 login ,logout 等。 • 编辑和文件管理命令,例如 vi ,emacs , cp ,rm 和ls 等。 • 编程、链接命令,例如 cc , link 等。 • 维护、管理命令,例如 adduser , chown 等 • 调试命令,例如 dbx 等。 • 记帐、日期等命令,例如 date 等。 • 网络通信命令,例如 mailx 等。
pipe 进程1 进程2 图9 –1 unix 的管道机制 • 特殊命令包括 : • 后台命令“&” • 文件名生成符号“*”和“?” • 输入输出重定向符号“<”、“>”和“>>” • 管道命令 “∣”
编程界面: • 文件操作类:open();fopen();write();read();close();fclose() • 进程控制类: 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)。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系统把一个进程的虚拟地址空间划分为若干个连续的逻辑区,有正文区、数据区、栈区等。UNIX系统把一个进程的虚拟地址空间划分为若干个连续的逻辑区,有正文区、数据区、栈区等。 • 为了对区进行管理,在核心中设置了一个系统区表(简称区表),各表项中记录了描述活动区的有关信息。 • 进程区表中每一项记录一个区的起始虚地址及指向系统区表中对应的区表项。
物理盘区 A B C 本进程区表 系统区表 进程表 ┆ 虚地址(正文)1 虚地址(数据)2 虚地址(栈)3 ┆ A B C U区 扩充 信息 存储盘区表 进程控制表PCB 表项区
进程的状态 • 用户态运行 在CPU上执行用户程序; • 核心态运行 在CPU上执行核心程序; • 在内存就绪 具备运行条件,只要内核调度就能执行; • 在内存睡眠 进程处于内存中,只有等到某事件发生后才能执行; • 在外存就绪 进程处于就绪状态,但是在其被内核调度去执行之前必须被交换进内存; • 在外存上睡眠 进程在等待某事件发生,并被交换到外存上; • 被剥夺状态 被调度程序剥夺了处理机后的进程状态; • 创建态 新进程被创建,还不能运行; • 终止态 进程终止自己。
用户运行 系统调用, 中断 1 返回 用户 中断,中断返回 返回 内核运行 消失 2 7 9 抢占 重新 调度 进程 被抢占 僵死 睡眠 4 3 唤醒 有足够内存 交换出 交换出 交换进 fork 8 唤醒 创建 (内存不够) 6 5 睡眠,交换出 睡眠,交换出
进程上下文 • 用户级上下文:由进程的用户程序段部分编译而成的用户正文段、用户数据、用户段和共享存储器组成。共享存储区用于实现进程间的通信. • 寄存器上下文; • 系统级上下文:静态级上下文和动态级两部分。静态部分包括:PCB 结构(proc结构和user结构)、进程区表项、系统区表项和页表以及核心栈,区表和页表用于实现进程的虚地址到物理地址的转换,核心栈主要用来装载进程中所使用系统调用的调用序列。动态部分包括:进程在执行时使用的核心栈、若干层寄存器上下文
用户级上下文 系 统 级 上 下 文 静态部分 动态部分 进程正文 用户数据 用户栈 静态部分 proc结构 user结构 进程区表 页表 核心栈第3层 保护第2层的寄存器上下文 核心栈第2层 保护第1层的寄存器上下文 核心栈第1层 保护第0层的寄存器上下文 第0层 寄存器上下文 寄存器上下文 PC的值 PSW的值 栈指针 通用寄存器的值
9.4 进程调度 • UNIX系统是分时系统,因而未设置作业调度。对进程的调度采用多级反馈队列轮转调度方式。相应地,在系统中便为就绪进程设置了多个就绪队列。 • 调度程序在进行调度时,总是先从最高优先级队列中,取出排在队列最前面的进程。仅当最高优先队列中没有进程时,才从次高优先级队列中找出其队首进程,令他执行一个时间片后,又剥夺该进程的执行,将该进程放到下一个优先级队列的末尾,再从优先级最高的队列中取出下一个就绪进程投入运行。
9.5 进程通信 • UNIX System V的进程通信有三种方式: • 信号:是对硬件中断的一种模拟,也称为软中断。这种方式是利用软中断信号实现同一用户的各进程之间的通信。这种通信的目的是通知对方发生了异步事件。 • 管道:一个管道的执行将用到两个file 数据结构,它们其中一个进程可以向管道写,而另一个进程从管道读. • IPC机制(进程间通信):IPC机制包括消息队列、共享内存和信号量三种.
9.6 UNIX存储管理 • UNIX系统V中采用了请求分页存储管理机制和对换机制。 • 这样,当进程运行时不必整个进程的映象都在内存,而只需在内存保留当前用到的页面。当进程访问到某些尚未在内存的页面时,就由核心把这些页面装入内存。
缓存技术 • UNIX 采用了一系列涉及到高速缓存的内存管理技术。 • 缓冲区缓存 • 页缓存 • 交换缓存 • 硬件缓存
UNIX使用最近最少使用策略(LRU)决定把哪个页面换出。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 /tmp /lib /usr1 … /usr1 图9-22 Unix文件系统一般目录结构 目录文件
文件的常用命令 • 1.文件管理命令 • ls 列当前目录文件; cp 复制文件; • 2.文本加工命令 • cat 显示文件内容; pr 打印机打印文件内容; • 3.软件开发 • cc C语言编译程序; vi 全屏幕编辑程序。 • 4.进程管理 • ps 显示当前各进程状况; kill 终止进程; • sleep 使进程睡眠; & 使命令在后台执行。 • 5.通信 • 6.系统维护和服务 • mount 安装文件卷到指定目录; unmount 拆文件卷 who 显示系统各用户状态。