12第十二章 UNIX操作系统(1)1.ppt_第1页
12第十二章 UNIX操作系统(1)1.ppt_第2页
12第十二章 UNIX操作系统(1)1.ppt_第3页
12第十二章 UNIX操作系统(1)1.ppt_第4页
12第十二章 UNIX操作系统(1)1.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十二章 UNIX操作系统清华大学,历史回顾(Historical Perspective) 系统结构(System Structure) 进程管理(Process Management) 存储管理(Memory Management) 文件系统(File System) 设备管理(Device Management) 系统调用(System Calls) 外壳语言(Shell),12.1 历史回顾,1969年由美国Bell实验室的两名程序员K.Thompson和 D.M.Ritchie设计 ; 最初该系统是采用汇编语言编写的 . incorporated features of other

2、operating systems, especially MULTICS. 后来二人专门为UNIX设计了C语言,并用它重新改写了UNIX中的大部分源代码, 形成第三版 .,12.1 历史回顾,在70年代初期, UNIX在Bell实验室及许多大学中获得了广泛的应用, 这也促进了UNIX系统的进一步发展 . 1973年推出第五版 1976年推出第六版 1978年第七版正式发行 . 由于UNIX结构良好,并被迅速地移植到Interdata 8/32及VAX等机器上,第1版(1971),第3版(1973),第6版(1975),第7版,第8版,第9版,SVR4(1989),IBM AIX,System

3、III(1982),SystemV(1983),SVR2(1984),SVR3(1987),1BSD(1978),2BSD(1978),3BSD(1979),4.0BSD(1980),4.4BSD(1993),Sun Solaris,第10版,发展与版本:,12.2系统结构,路由选择,终端,终端,UNIX系统组成,内核部分,内核由两类模块构成 被动的, 即普通模块 主动的, 即进程模块 普通模块 进程控制 文件管理 存储管理 设备管理 原语管理 中断处理 处理机管理 系统初启,内核部分,进程模块 process #0交换进程(sched) process #1初始进程(init) 交换进程及初

4、始进程是两个系统进程, 它们运行操作系统核心程序, 完成操作系统的某些功能.,外壳部分,外壳部分运行命令解释程序, 读入、解释并处理终端用户键入的命令. 将命令解释程序由操作系统核心中分离出来的好处在于: 缩减操作系统内核的规模 不同用户可以使用不同的外壳,12.3 进程管理,进程组成 进程控制块 进程状态与状态转换 进程调度 进程互斥 进程同步 进程通讯,12.3.1 进程组成(映像),Proc 结构,Text结构,系统空间,用户空间,User结构,系统栈,进程堆栈,进程数据,进程代码,常驻内存部分,内外存交换部分,系统空间,12.3.2 进程控制块,Proc结构 所保存的信息无论当进程在内

5、存时还是在外存时都是需要的 . User结构 所保存的信息仅当进程在内存时才是需要的, 因而可以与进程的程序一起被移到外存.,struct proc char p_stat; char p_flag; char p_pri; char p_sig; /signal received char p_uid; /user id char p_time; /resident time for scheduling char p_cpu; /cpu usage char p_nice; /nice for scheduling char p_ttyp; /controlling tty int p_p

6、id; /unique process id int p_ppid; /parent process id int p_addr; /address of swappable image int p_size; /size of swappable image (*64bytes) int p_wchan /event process is waiting int *p_textp; /pointer to text structure ,struct user int u_rsav2 int u_fsav25 char u_uid; / effective user id char u_gi

7、d; / effective group id char u_ruid; / real user id char u_rgid; / real group id int u_procp; / pointer to proc structure int *u_base; / base address for IO int *u_count; / bytes remaining for IO int *u_offset2; / offset in file for IO int *u_cdir; / pointer to inode of current dir int *u_pdir; / in

8、ode of parent directory int u_uisa16; / prototype segmentation address,int u_uisd16; / prototype segmentation descript int u_ofileNOFILE; / pointers to file struct int u_arg5; / arguments to system call int u_tsize; / text size (*64) int u_dsize; / data size (*64) int u_sszie; / stack size (*64) int

9、 u_utime; / this process user time int u_stime; / this process system time int u_cutime2; / child process user time int u_cstime2; / child process system time ,struct text int x_daddr; /disk address of segment int x_caddr; /core address if loaded int x_size; /*64 int *x_iptr; /inode of prototype cha

10、r x_count; /reference count char x_ccount; /number of loaded references ,12.3.3 进程状态及其转换,p_state define null 0 define SSLEEP 1 define SWAIT 2 define SRUN 3 define SIDL 4 define SZOMB 5 define SSTOP 6,p_flag define SLOAD 01 define SSYS 02 define SLOCK 04 define SSWAP 010 define STRC 020 define SWTED

11、040,Subset of : p_state p_flag system mode,进程状态及其转换,换出,结束跟踪,结束跟踪,换入/出,换出,唤醒,fork,处理机分派,跟踪,等待,终止,置PSW,SRUN LOAD user,SRUN LOAD kernel,SIDL,中断,睡眠,换出,唤醒,内存够,内存不够,SZOMB,SSLEEP LOAD,SWAIT LOAD,SRUN LOAD,SSTOP LOAD,SSLEEP SWAP,SWAIT SWAP,SRUN SWAP,SSTOP SWAP,唤醒,结束跟踪,唤醒,结束跟踪,12.3.4 进程调度,调度策略 Dynamic Priori

12、ty based (Low number high priority) Preemptive Aging (no starvation) 调度算法 USER:100 p_cpu:运行进程,每20ms加1; 其它进程,每1200ms减10 p_nice: 用户进程:020,系统进程:-2020,进程调度实现,进程P(用户态),进程P(核心态),进程(核心态),进程(用户态),中断,中断处理 调度 上下文切换,置PC,PSW,12.3.5 进程互斥,经典UNIX系统 机制 关中断互斥(提高处理机优先级) 特点 简单 开销小 影响并发性 关中断后代码很短,12.3.6 进程同步,进程同步: 当一个进

13、程因某种原因不能继续运行时, 它便等待在某一个事件上, 即将等待事件记在p_wchan变量上,进入SWAIT或SSLEEP状态 当对应事件发生时,系统唤醒等待于该事件上的所有进程 竞争条件 : 事件发生可能先于等待 . 事件将被丢失 . 忙式等待 被唤醒进程可能再次等待,12.3.7 进程通讯,信号 (signal) From process to process From event to process 管道(pipe) Unnamed file Named pipe socket通讯 Endpoint communication Suitable for network,Few UNIX

14、 systems permitted shared memory because the PDP-11 hardware did not encourage it,信号(signal),特点 简单信号(类似软中断,共20个) 异步通讯 信号来源 异步事件 key board interrupt, error, timer, etc. 进程,系统调用(如kill) from process to process, or from terminal to process 使用 信号处理程序的定义 信号的发送与接收 信号的处理,信号(signal),信号处理程序的定义 系统调用signal(sig,

15、func)预置, 其中sig为019的信号值,func为处理程序的地址 该系统调用的作用是u_signalsig=func. 当func为0时接收信号进程终止自己; 当func为奇数时忽略信号; func为偶数时为处理程序入口 进程初创时自动继承其父进程的信号处理程序,信号(signal),信号的发送与接收 进程实际接收到的信号被记载在p_sig中 由于p_sig常驻内存,因而在任何时刻均可接受到信号. 信号可能来自进程,也可能是事件,如键盘中断信号、错误、定时器 处于等待状态的进程在接收到信号后一般将被唤醒,信号(signal),信号的处理 接收到信号的进程在适当时刻(被调度选中由核态转到目

16、态),发现p_sig中记录有接收到的信号,根据u_signalp_sig的值确定对信号的处理. 接收信号的进程也可以忽略信号(u_signalp_sig=奇数). 对多数信号的缺省处理动作是终止收到信号的进程. 信号很象允许用户程序在目态处理的中断.,管道(Pipe),特点 经典UNIX最有特色的通讯机制; 单方向,流式通讯; 建立在文件基础上,与文件界面统一;实现极为简练; 速度问题:为防止两次I/O传输 限制pipe文件大小(4块) 缓冲技术 延迟写,管道(Pipes),使用方法:先创建管道,再创建进程继承 int fd2; pipe(fd) p1=fork(); p2=fork(); p

17、1: write(fd1,); p2:read(fd0,),套接字(socket),端-端通讯机制 (endpointendpoint) 类型 Stream sockets Sequenced packet sockets Datagram sockets Reliably delivered message sockets Raw sockets,套接字(socket),地址域 使用中的socket与一地址相联系 地址的形式由通讯域(communication domain)确定. 同一域中的进程使用相同地址格式 address format 4.3BSD域 UNIX domain (AF_

18、UNIX) the Internet domain (AF_INET) the XEROX Network Service (NS) domain (AF_NS),12.4 存储管理,经典UNIX存储管理 一个进程两个对界 Text(共享) Data(私用) 内外存不同尺寸,同一管理程序(FF算法) Core: 64bytes swap: 512bytes 交换技术 swapping,12.4.1存储管理方式,采用界地址存储管理方式 一个进程由两个对界组成, 即占有两个连续的内存区域 一个区域用于保存共享代码 另个区域用于保存私用数据及用户堆栈 存储分配的基本单位是64个字节, 而不是单个字节

19、,12.4.2 存储分配算法,内存空间及外存交换区的分配均是动态的, 分配算法为最先适应(FF). 描述内存空间及外存空间分配状况各需有一个数据结构. 内存的分配与外存的分配共用同一个程序.,12.4.3 进程空间扩充,堆栈分配 基本长度,避免浪费 堆栈溢出 动态扩展 申请一个新的数据区(原区域大小增加大小) 复制 释放原有区域 内存不够 交换到外存(同时扩展空间) 释放所占内存 再次由sched调入内存时,按新长度,12.4.4 交换技术(swapping),交换目标:缓解内存紧张矛盾 交换进程:sched(#0) 交换算法 移入外存中SRUN状态进程 如内存不够,选择移出 内存中处于SWA

20、IT或SSTOP状态进程 如还不够,选择移出 内存中处于SSLEEP或SRUN状态进程,条件 待移入进程在外时间=3秒 待移出进程在内时间=2秒,12.4.5 虚拟页式(Paging),4.3BSD UNIX: demand-paging + swapping 主要依赖(first paging) 其次是交换(secondary swapping). 偷页进程(Page stealer process) 动态跟踪并调整进程页架数 基于工作集模型(working set model). If the scheduler decides that the paging system is over

21、loaded, processes will be swapped out whole until the overload is relieved.,页面置换,pagedaemon process Uses a modified second-chance page-replacement algorithm. Second chance: a variant of NUR.,8/1,1/0,2/0,6/1,4/1,5/0,7/0,3/1,Set page 3,4 reference bit to 0, replace page 5,0,页面置换,pagedaemon process Use

22、s a modified second-chance page-replacement algorithm. Second chance: a variant of NUR.,8/1,1/0,2/0,6/1,4/1,5/0,7/0,3/1,Set page 3,4 reference bit to 0, replace page 5,0,0,页面置换,pagedaemon process Uses a modified second-chance page-replacement algorithm. Second chance: a variant of NUR.,8/1,1/0,2/0,6

23、/1,4/1,5/0,7/0,3/1,Set page 3,4 reference bit to 0, replace page 5,1,0,0,12.5 UNIX文件系统,文件类型 文件体系 文件结构 文件目录 文件系统映射 文件卷安装 磁盘空间管理 Inode区管理 快速文件系统 NFS文件系统,12.5.1 文件类型,普通文件 内容可以是程序、数据、图象等,保存在磁盘块中 目录文件 (文件名,文件号)序列,保存在磁盘块中 特殊文件 设备 设备作为文件管理的好处 界面统一,使用文件与使用设备命令相同,申请设备open, 释放close, 读read, 写write 利用文件保护功能可以保护

24、设备,12.5.2 文件体系,基本结构:树型 系统目录,系统文件 用户目录,用户文件 连接(link) 不是真正的树,而呈格结构 连接方便文件共享,12.5.3 文件结构,逻辑结构 流式文件,字节序列 读写命令中包含字节数 read(fd,buf,count) 其中count为传输字节数 模拟记录式文件 物理结构 直接与间接 0级,1级,2级,3级间接寻块,12.5.4 文件目录与连接,目录项 相当FCB次部 形式为(文件名,文件号) Inode 相当于FCB主部 每个inode有一个i_number 多个文件名对应同一个i_number(连接共享),连接实现,link(“/users/wan

25、g/d1/f1”, “/users/li/f2”),d1,read(4,),read(4,) write(2,),用户空间,u_ofile,u_ofile,file,i_node,磁盘空间,系统空间,.,数据块, .,i_list,12.5.5 文件系统映射,相关表目,1. u_ofile (每进程一个) struct user int u_ofileNOFILE; #define NOFILE 15,2. file (系统一个) struct file char f_flag; /R,W,PIPE char f_count; int f_inode; char *f_offset2; fil

26、eNFILE #define NFILE 100,3. Inode表(系统一个) struct inode int i_flag; char i_count; char i_dev; char i_number; char i_mode; char i_nlink; char i_uid; char i_gid; char i_size0; char *i_size1; int i_addr8; int i_lastr; inodeNINODE;,表间联系: u_ofile file (n) (1) file inode (n) (1),相关表目,12.5.6 文件卷的安装,mount:用一个

27、文件卷的根目录取代一个已经存在的空目录节点,UNIX文件卷,超级块,块1#(super block): (1) 记载文件卷上k+1块到n-1块中所有空闲块, (2) inode区中100个空闲inode. (缓冲) 文件安装(mount)后超级块读入内存。 注:占用区域已经记载在各个文件的inode中。,Struct filesys int s_isize; /size in blocks of i list int s_fsize; /size in blocks of entire volume int s_nfree; /number of in core free blocks int

28、 s_free100; /in core free blocks int s_ninode; /number of in core I list int s_inode100; /in core free I nodes char s_flock; /free list locking char s_ilock; /i list locking char s_fmod; /super block modified flag char s_ronly; /mounted read only flag char s_time2; /current date of last update int p

29、ad50; ,超级块结构(安装后读入内存,卸下时回写磁盘),12.5.7磁盘空间管理 : 100个空闲块为一组,组之间相互链接。,.,.,.,.,特点:速度快,空间省。,12.5.8 空闲inode管理: s_inode最多可以记载100个空闲inode(编号) 申请时: (1) s_ninode0, 取s_inode-s_ninode; (2) s_ninode=0, 由磁盘inode区顺取100个空闲I节点(i_nlink=0) 将其编号填入s_inode表中,修改s_ninode,然后分配。 释放时: (1) s_ninode100, s_inodes_ninode+=i_number

30、(释放的); (2) s_ninode=100, 丢弃。,12.5.9 快速文件系统,经典UNIX文件系统 Inode区与内容存储区相分离 查找速度慢(引臂在inode区与块存储区之间往复移动,尤其长路径名) 文件长度大于5120字节:间接寻块 文件名长度14字节以内 Fast File System(FFS) 1984UC Berkeley 被许多现代UNIX采用,包括4.3BSD 效率提高一个数量级,12.5.9 快速文件系统,快速文件系统 FFS将磁盘卷划分为若干个柱面组(cylinder group),每个柱面组占若干连续的柱面,作为相对独立的文件卷管理 FFS采用较大的磁盘块以减少I/O间址并提高I/O效率 (达8KB) FFS打破了文件名长度最多为14字节的限制,文件名长度可达255字节 FFS支持符号连接(symbolic link),这种连接可以跨文件卷或主机,12.5.9 快速文件系统,UNIX 4.3BSD柱面组,数据块,数据块,Super block,Cylinder block,Inode,12.5.10 NFS网络文件系统,NFS体系结构 每个站点相对独立文件目录树 不同站点目录树之间可以安装 协议 远程安装协议(不透明) 远程存取协议(透明) NFS实现 UNIX界面 VFS层,远

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论