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

下载本文档

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

文档简介

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

2、ems, especially MULTICS.后来二人专门为UNIX设计了C语言,并用它重新改写了UNIX中的大部分源代码, 形成第三版 .13.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 AIXSystemIII(1982)SystemV(1983)SVR2(19

3、84)SVR3(1987)1BSD(1978)2BSD(1978)3BSD(1979)4.0BSD(1980)4.4BSD(1993)Sun Solaris第10版发展与版本:13.2系统结构 系统进程(#1),shell,shell,其它用户进程核外 内核socket文件子系统进程控制网络协议设备文件目录与普通文件虚拟存储系统RawIO字符缓冲高速缓冲 页缓冲网络设备驱动字符设备驱动块设备驱动内存管理处理机调度,同步机制硬件路由选择终端终端UNIX系统组成 内核部分 内核由两类模块构成 被动的, 即普通模块 主动的, 即进程模块 普通模块 进程控制文件管理存储管理设备管理原语管理中断处理处理

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

5、内外存交换部分系统空间13.3.2 进程控制块Proc结构所保存的信息无论当进程在内存时还是在外存时都是需要的 . 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 scheduli

6、ng char p_ttyp; /controlling tty int p_pid; /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 ch

7、ar u_uid; / effective user id char u_gid; / 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

8、 inode of current dir int *u_pdir; / inode 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 (*

9、64) int u_sszie; / stack size (*64) int 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; /*6

10、4 int *x_iptr; /inode of prototype char x_count; /reference count char x_ccount; /number of loaded references13.3.3 进程状态及其转换p_statedefine null 0define SSLEEP 1define SWAIT 2define SRUN 3define SIDL 4define SZOMB 5define SSTOP 6p_flagdefine SLOAD 01define SSYS 02define SLOCK 04define SSWAP 010define

11、STRC 020define SWTED 040 Subset of : p_state p_flag system mode进程状态及其转换换出结束跟踪结束跟踪换入/出换出唤醒fork处理机分派跟踪等待终止置PSWSRUNLOADuserSRUNLOADkernelSIDL中断睡眠换出唤醒内存够内存不够SZOMBSSLEEPLOADSWAITLOADSRUNLOADSSTOPLOADSSLEEPSWAPSWAITSWAPSRUNSWAPSSTOPSWAP唤醒结束跟踪唤醒结束跟踪13.3.4 进程调度调度策略Dynamic Priority based (Low number high pri

12、ority)PreemptiveAging (no starvation)调度算法USER:100p_cpu:运行进程,每20ms加1; 其它进程,每1200ms减10p_nice: 用户进程:020,系统进程:-2020进程调度实现进程P(用户态)进程P(核心态)进程(核心态)进程(用户态)中断中断处理调度上下文切换置PC,PSW13.3.5 进程互斥经典UNIX系统机制关中断互斥(提高处理机优先级)特点简单开销小影响并发性关中断后代码很短13.3.6 进程同步进程同步:当一个进程因某种原因不能继续运行时, 它便等待在某一个事件上, 即将等待事件记在p_wchan变量上,进入SWAIT或SS

13、LEEP状态 当对应事件发生时,系统唤醒等待于该事件上的所有进程 竞争条件 :事件发生可能先于等待 .事件将被丢失 .忙式等待被唤醒进程可能再次等待13.3.7 进程通讯信号 (signal) From process to processFrom event to process管道(pipe) Unnamed fileNamed pipesocket通讯 Endpoint communicationSuitable for networkFew UNIX systems permitted shared memory because the PDP-11 hardware did not

14、encourage it信号(signal)特点简单信号(类似软中断,共20个)异步通讯信号来源异步事件key board interrupt, error, timer, etc. 进程,系统调用(如kill)from process to process, or from terminal to process使用信号处理程序的定义信号的发送与接收信号的处理信号(signal)信号处理程序的定义系统调用signal(sig,func)预置,其中sig为019的信号值,func为处理程序的地址该系统调用的作用是u_signalsig=func.当func为0时接收信号进程终止自己;当func

15、为奇数时忽略信号;func为偶数时为处理程序入口进程初创时自动继承其父进程的信号处理程序 信号(signal)信号的发送与接收进程实际接收到的信号被记载在p_sig中由于p_sig常驻内存,因而在任何时刻均可接受到信号. 信号可能来自进程,也可能是事件,如键盘中断信号、错误、定时器处于等待状态的进程在接收到信号后一般将被唤醒 信号(signal)信号的处理接收到信号的进程在适当时刻(被调度选中由核态转到目态),发现p_sig中记录有接收到的信号,根据u_signalp_sig的值确定对信号的处理. 接收信号的进程也可以忽略信号(u_signalp_sig=奇数). 对多数信号的缺省处理动作是终

16、止收到信号的进程. 信号很象允许用户程序在目态处理的中断.管道(Pipe)特点经典UNIX最有特色的通讯机制;单方向,流式通讯;建立在文件基础上,与文件界面统一;实现极为简练;速度问题:为防止两次I/O传输限制pipe文件大小(4块)缓冲技术延迟写管道(Pipes) 使用方法:先创建管道,再创建进程继承int fd2;pipe(fd)p1=fork(); p2=fork();p1: write(fd1,); p2:read(fd0,)套接字(socket)端-端通讯机制(endpointendpoint)类型Stream sockets Sequenced packet socketsData

17、gram sockets Reliably delivered message socketsRaw sockets套接字(socket)地址域使用中的socket与一地址相联系 地址的形式由通讯域(communication domain)确定.同一域中的进程使用相同地址格式address format4.3BSD域UNIX domain (AF_UNIX)the Internet domain (AF_INET)the XEROX Network Service (NS) domain (AF_NS)13.4 存储管理经典UNIX存储管理 一个进程两个对界Text(共享)Data(私用)内

18、外存不同尺寸,同一管理程序(FF算法)Core: 64bytesswap: 512bytes交换技术swapping 13.4.1存储管理方式 采用界地址存储管理方式一个进程由两个对界组成, 即占有两个连续的内存区域 一个区域用于保存共享代码另个区域用于保存私用数据及用户堆栈 存储分配的基本单位是64个字节, 而不是单个字节 13.4.2 存储分配算法 内存空间及外存交换区的分配均是动态的, 分配算法为最先适应(FF). 描述内存空间及外存空间分配状况各需有一个数据结构.内存的分配与外存的分配共用同一个程序.13.4.3 进程空间扩充堆栈分配基本长度,避免浪费堆栈溢出动态扩展申请一个新的数据区

19、(原区域大小增加大小)复制释放原有区域内存不够交换到外存(同时扩展空间)释放所占内存再次由sched调入内存时,按新长度13.4.4 交换技术(swapping)交换目标:缓解内存紧张矛盾交换进程:sched(#0)交换算法移入外存中SRUN状态进程如内存不够,选择移出内存中处于SWAIT或SSTOP状态进程如还不够,选择移出内存中处于SSLEEP或SRUN状态进程,条件待移入进程在外时间=3秒待移出进程在内时间=2秒13.4.5 虚拟页式(Paging) 4.3BSD UNIX: demand-paging + swapping主要依赖(first paging)其次是交换(secondar

20、y swapping).偷页进程(Page stealer process)动态跟踪并调整进程页架数基于工作集模型(working set model).If the scheduler decides that the paging system is overloaded, processes will be swapped out whole until the overload is relieved.页面置换pagedaemon processUses a modified second-chance replacement algorithm.Second chance: a va

21、riant of NUR. 8/11/02/06/14/15/07/03/1Set page 3,4reference bit to 0,replace page 50页面置换pagedaemon processUses a modified second-chance replacement algorithm.Second chance: a variant of NUR. 8/11/02/06/14/15/07/03/1Set page 3,4reference bit to 0,replace page 500页面置换pagedaemon processUses a modified

22、second-chance replacement algorithm.Second chance: a variant of NUR. 8/11/02/06/14/15/07/03/1Set page 3,4reference bit to 0,replace page 510013.5 UNIX文件系统文件类型文件体系文件结构文件目录文件系统映射文件卷安装磁盘空间管理Inode区管理快速文件系统NFS文件系统13.5.1 文件类型普通文件内容可以是程序、数据、图象等,保存在磁盘块中目录文件(文件名,文件号)序列,保存在磁盘块中特殊文件设备设备作为文件管理的好处界面统一,使用文件与使用设备命

23、令相同,申请设备open, 释放close, 读read, 写write利用文件保护功能可以保护设备13.5.2 文件体系基本结构:树型系统目录,系统文件用户目录,用户文件连接(link)不是真正的树,而呈格结构连接方便文件共享13.5.3 文件结构逻辑结构流式文件,字节序列读写命令中包含字节数read(fd,buf,count)其中count为传输字节数模拟记录式文件物理结构直接与间接0级,1级,2级,3级间接寻块13.5.4 文件目录与连接目录项相当FCB次部形式为(文件名,文件号)Inode相当于FCB主部每个inode有一个i_number多个文件名对应同一个i_number(连接共享

24、)连接实现userswanglif1f2i_number=15f2 15f1 15link(“/users/wang/d1/f1”, “/users/li/f2”)d1read(4,)read(4,)write(2,)用户空间u_ofileu_ofilefilei_node磁盘空间系统空间.数据块.i_list13.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_coun

25、t; int f_inode; char *f_offset2;fileNFILE#define NFILE 1003. 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)相

26、关表目13.5.6 文件卷的安装mount:用一个文件卷的根目录取代一个已经存在的空目录节点UNIX文件卷0 1 2 k k+1 n-1导引块特殊块 inode区域每块16个inode, 从0起依次编号 文件存储区域(普通文件,目录文件)超级块块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_f

27、size; /size in blocks of entire volume int s_nfree; /number of in core free blocks int 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

28、char s_ronly; /mounted read only flag char s_time2; /current date of last update int pad50;超级块结构(安装后读入内存,卸下时回写磁盘)13.5.7磁盘空间管理 :100个空闲块为一组,组之间相互链接。s_nfree=100s_free0s_free1.s_free99.Super block .特点:速度快,空间省。13.5.8 空闲inode管理:s_inode最多可以记载100个空闲inode(编号)申请时: (1) s_ninode0, 取s_inode-s_ninode; (2) s_ninod

29、e=0, 由磁盘inode区顺取100个空闲I节点(i_nlink=0) 将其编号填入s_inode表中,修改s_ninode,然后分配。释放时: (1) s_ninode100, s_inodes_ninode+=i_number (释放的); (2) s_ninode=100, 丢弃。13.5.9 快速文件系统经典UNIX文件系统Inode区与内容存储区相分离查找速度慢(引臂在inode区与块存储区之间往复移动,尤其长路径名)文件长度大于5120字节:间接寻块文件名长度14字节以内Fast File System(FFS)1984UC Berkeley被许多现代UNIX采用,包括4.3BSD效率提高一个数量级13.5.9 快速文件系统快速文件系统 FFS将磁盘卷划分为若干个柱面组(cylinder group),每个柱面组占若干连续的柱面,作为相对独立的文件卷管理 FFS采用较大的磁盘块以减少I/O间址并提高I/O效率 (达8KB)FFS打破了文件名长度最多为14字节的限制,文件名长度可达255字节 FFS支持符号连接(symbolic link),这种连接可以跨文件卷或主机 13.5.9 快速文件系统UNIX 4.3BSD柱面组 数据块 数据块 Super block Cylinder block Inode 13.5.10 NFS网络文件系统NFS体系结构每个站点

温馨提示

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

评论

0/150

提交评论