《2 网络操作系统体系结构》由会员分享,可在线阅读,更多相关《2 网络操作系统体系结构(202页珍藏版)》请在金锄头文库上搜索。
1、网络操作系统体系结构,Network Operating System,2,2017/8/14,1、对等(Peer to Peer)模式对等式局域网操作系统的特点是网络上的所有连接站点地位平等,因此又称为同类网。,对等网络的规划一般都比较简单,通常采用如图所示的两种结构,2.1 体系结构工作模式,3,2017/8/14,2、文件服务器模式文件服务器模式如上图所示,在这种模式中,应用程序和数据都存放在一台指定的计算机中,这台计算机称之为文件服务器,一般均由专业服务器或性能较高的微机担任。 文件服务器模式的优点:文件服务器与工作站之间分工明确,使工作站从网络管理中解脱出来,信息处理能力明显增强;数
2、据保密性好,可根据不同需求给用户不同的权限,资源共享性好;文件安全管理较好,可靠性高。,2.1 体系结构工作模式,4,2017/8/14,3 客户机与服务器客户和服务器都运行于相同的微内核中,让用户和服务器都以用户进程的方式运行,一台机器可以运行单个进程、多个客户、多个服务器或二者的混合。(其主要目的是为了避免面向连接的协议加复杂的报文头)。C/S模式常常以简单的请求/应答协议为基础。,2.1 体系结构工作模式,5,2017/8/14,客户机与服务器,2.1 体系结构工作模式,6,2017/8/14,客户机与服务器上图的优点“简单”,客户发送一个请求,得到一个应答,在使用前无须建立连接也不用释
3、放连接,应答的消息同时也是对请求的确认。有效性,协议栈比较短,因而也更有效。网络接口层(或OSI中的数据链路层和物理层)处理发送到服务器的数据和返回的数据,这些由硬件完成。,2.1 体系结构工作模式,7,2017/8/14,客户机与服务器因此这种简单的结构可以简化为系统通过微内核提供的两个调用:send(dest,&mptr)负责发送报文receive(addr,&mptr)负责接收报文,2.1 体系结构工作模式,8,2017/8/14,客户机与服务器Send函数将要发送的消息用指针mptr传给进程,用dest标记目的地,然后阻塞调用者,直到发送完毕为止。receive进程阻塞调用者直到消息被
4、接收为止,当调用结束时将消息拷贝到mptr指向的缓冲区,同时调用这不再被阻塞,addr参数正在监听接收的地址。,2.1 体系结构工作模式,9,2017/8/14,客户机和服务器模式的实现 寻址。客户为了发送信息给服务器,它必需知道服务器的地址。在Unix系统中采用32位地址指定具体的机器,采用16位的id号来表示本地ID字段,即采用machine.process(机器.进程)的方式。,2.1 体系结构工作模式,10,2017/8/14,客户机和服务器模式的实现 阻塞和非阻塞原语当一个进程调用send原语,它指定了目的地及发送到该目的地的缓冲区数据。消息传送时,发送的进程被阻塞(挂起)。直到消息
5、传递完毕,其后的指令才能继续执行。同样调用receive时,直到一条消息被实际接收并放入缓冲区时才返回控制权,在一条消息到达前调用receive的进程一直挂起。,2.1 体系结构工作模式,11,2017/8/14,客户机和服务器模式的实现 阻塞和非阻塞原语在有些系统中,接收者可以指明希望从哪个发送者接收消息,这种情况下它保持阻塞直到该发送者发送的消息到达。和阻塞原语对应的是非阻塞原语(有时候也叫异步原语)。,2.1 体系结构工作模式,12,2017/8/14,客户机和服务器模式的实现 阻塞和非阻塞原语这种方法的优点是:调用发送进程可以和消息传送并行,而不是让处理器空闲(假设没有其它进程可运行)
6、,阻塞原语和非阻塞原语的选择一般取决于系统设计者。,2.1 体系结构工作模式,13,2017/8/14,客户机和服务器模式的实现,2.1 体系结构工作模式,14,2017/8/14,客户机和服务器模式的实现 有缓冲和无缓冲原语像系统设计者可以选择阻塞和非阻塞原语一样,他们也可以选择优缓冲和无缓冲原语,上面描述的基本上是无缓冲原语,意味着一个地址指定给一个特定的进程。如果调用receive(addr,&m),告诉运行的机器内核,调用的进程正在监听地址addr,并且准备接收发送到那个地址的消息。m指出了一个消息缓冲区用于保存传送来的消息。当消息到来,调用接收原语的内核将消息拷贝到缓冲区,并解除该进
7、程的阻塞。,2.1 体系结构工作模式,15,2017/8/14,客户机和服务器模式的实现,2.1 体系结构工作模式,16,2017/8/14,客户机和服务器模式的实现 有缓冲和无缓冲原语只要服务器在服务器在客户机上调用send原语之前调用receive原语,就能运行良好。receive调用只是这样一种机制,它告诉服务器内核服务器正在使用的地址以及存放到来消息的位置,当发送比接收先发上就会产生问题。,2.1 体系结构工作模式,17,2017/8/14,2.1 体系结构系统内核,内核模块 以Linux为例介绍内核及其组件的基本结构,讲述那些重要的内核领域,譬如不同内核的活动形式、存储管理、设备驱动
8、程序、定时器及模块等。主要目标是介绍Linux网络体系结构的运行框架。下列所有领域负责阐明首要网络服务所需要的基本功能。因此,了解这些功能就是理解Linux联网体系结构实现的基本前提。,18,2017/8/14,2.1 体系结构系统内核,内核模块 下图给出了Linux内核体系结构。Linux内核可以划分为6个不同的部分;每一部分负责处理一项明确的功能,同时又向其它内核组件提供这项功能。这种体系结构反映到内核的源码上这6个部分都形成了各自的子树。,19,2017/8/14,2.1 体系结构系统内核,内核模块,20,2017/8/14,2.1 体系结构系统内核,内核模块 进程管理进程管理部分负责进
9、程及其它内核活动(如软件中断等)的创建和终止。另外,进程间通信(如信号、管道等)也处在这一部分。调度程序是进程管理的主要组件。调度程序负责处理所有的活动进程、等待进程及阻塞进程,它还负责保证所有的应用程序进程都能公平的分享到处理器的计算时间。,21,2017/8/14,2.1 体系结构系统内核,内核模块 内存管理计算机的存储器是最重要的资源之一。计算机的性能十分依赖于它所配置的内存。另外,内存管理还要负责为每条进程分配各自的存储区,并且保护这些存储区不配其它进程访问。,22,2017/8/14,2.1 体系结构系统内核,内核模块 文件系统在Linux系统中,文件系统是个中心角色。和其它操作系统
10、(如windows NT)不同,Linux内核中几乎所有的项目都是以文件系统接口加以处理,例如,设备驱动程序可以表现成一些文件,Proc文件系统则允许访问内核中的数据和参数。,23,2017/8/14,2.1 体系结构系统内核,内核模块 设备驱动程序设备驱动程序是从各种操作系统中的底层的硬件抽象出来的,从而允许访问这些硬件。尽管Linux是一种整体式内核,但Linux的模块化概念也具备一种运行时添加或删除设备的手段。,24,2017/8/14,2.1 体系结构系统内核,内核模块 网络子系统由于某些网络操作无法分派给某个特定进程(譬如传入分组处理),因此所有的网络操作都必须交由操作系统处理。传入
11、分组是异步事件。在进程处理它们之间,就必须先收集、标识及转发这些分组。因此,才会由内核负责处理跨程序、跨网络接口的分组。,25,2017/8/14,2.1 体系结构系统内核,内核模块 在内核中,明确驱动的接口有助于新功能的设计。例如,假设有个接口指向虚拟文件系统,则该接口即可用于添加新的文件系统。Linux可以支持数十种文件系统,这也明确展现了接口确实是Linux开发人员做出的一项优秀设计决策因为还没有其它操作系统能支持如此之多的文件系统。Linux网络体系结构中还包含了很多支持动态添加协议及网络及网络驱动程序接口。,26,2017/8/14,2.1 体系结构系统内核,内核中的活动 Linux
12、是一种多任务系统。意味着多条应用程序可以同是处于活动状态,也意味着可以同时使用多个应用程序或进程。不过进程并不是Linux系统中唯一可以执行的活动形式。,27,2017/8/14,2.1 体系结构系统内核,内核中的活动 进程和系统调用进程(process)通常是一些启动已运行的某种特定应用程序的活动,它们会随着应用程序的结束而终止。进程的创建、控制和销毁等任务都由操作系统内核负责处理。进程互斥地运行在处理器的用户地址空间(即出于未保护的模式下);进程从这里只能访问分配给自己的存储区。,28,2017/8/14,2.1 体系结构系统内核,内核中的活动 进程和系统调用尝试访问其它进程的存储区或内核
13、地址空间都会带来异常,该异常必须由内核进行处理。不过进程如果希望访问设备或使用操作系统内核的某项功能,则必须利用系统调用来做得到这一点。系统调用会让处理器变为受保护模式,而对内核地址空间的访问则是系统调用的一项功能。在受保护模式下可以访问所有设备及存储区,但只有时用内核方法才能做到这一点。,29,2017/8/14,2.1 体系结构系统内核,内核中的活动 进程和系统调用进程和系统调用的工作可以被其它活动打断。这时它们当前的状态会保存下来;如果这个被中断的进程或系统调用重新工作起来,则会恢复那些被保存下来的状态。,30,2017/8/14,2.1 体系结构系统内核,内核中的活动 进程和系统调用进
14、程和系统调用可以自愿停止,也可以是非自愿停止。前一种情况下它们会自愿放弃处理例如,进城和系统调用等待某项系统资源(外部设备)而出于睡眠状态,直至得到这项资源为止。非自愿放弃处理是由中断造成的,中断告诉内核一项重要行动一项内河必须处理活动,中断可以是一种关于早期繁忙资源重新可用的通知。,31,2017/8/14,2.1 体系结构系统内核,内核中的活动 除了正常进程和系统调用的进程外,我们还要区分Linux内核中的其它活动形式。这些活动形式对Linux网络体系结构的重要向具有决定的意义因为网络功能正是在内核中进行处理的。这些活动形式包括:,32,2017/8/14,2.1 体系结构系统内核,内核中
15、的活动 中断(硬中断)外设利用硬件中断(hardware interrupt,HW IRQ)向操作系统通知一些重要的事件(如鼠标移动、键盘按下等)硬件中断打断了处理器正在处理的当前活动,然后去执行相关的中断处理例程。,33,2017/8/14,2.1 体系结构系统内核,内核中的活动 中断(硬中断)request_irq()函数可以在运行时注册特定的中断处理例程。free_irq()可以用于释放中断的处理例程,这样就不会再执行它。,34,2017/8/14,2.1 体系结构系统内核,内核中的活动 中断(硬中断)Linux内核中需要区分两种中断:一种是快速中断,它的特征是拥有非常小的中断处理例程,
16、只会很短暂的打断当前的活动,并且在执行期间锁定本地CPU的所有其它中断,在该中断例程执行的过程中是不可以被打断。另一种是慢速中断,在执行的过程中可以被打断,中断处理例程一般较长,因此它们占用处理器的时间一般也较长。,35,2017/8/14,2.1 体系结构系统内核,内核中的活动 软件中断(software interrupt,soft IRQ) 实际上是一种不同于真正的中断的、调度后才执行的活动。硬件中断和软件中的主要差别在于,硬件中断会主动打断另一种活动;触发硬件中断会导致打断正在运行的活动。相反软件中断要由一种内核活动来调度它的执行,并不会打断当前正在运行的活动。在Linux系统中定义了32种软件中断。,36,2017/8/14,2.1 体系结构系统内核,