《liunx操作系统》课件15Linux内核简介-内存管理及进程通信_第1页
《liunx操作系统》课件15Linux内核简介-内存管理及进程通信_第2页
《liunx操作系统》课件15Linux内核简介-内存管理及进程通信_第3页
《liunx操作系统》课件15Linux内核简介-内存管理及进程通信_第4页
《liunx操作系统》课件15Linux内核简介-内存管理及进程通信_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、内存管理请求分页内存管理使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间)实际上它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上(充当内存的磁盘空间即交换空间,swap),在需要时进行数据交换,允许运行比实际系统拥有的内存大得多的程序请求分页内存管理示意图物理内存空间管理Linux物理内存空间分成两个区域内核区:存放内核代码和数据,以及内核管理进程的数据结构,在低地址区动态RMA区:存放各个用户进程的代码、数据等,在高地址区进程用户地址空间Linux系统中的进程具有一段可执行的程序(文本区域,只读数据)独立的存储空间(数据区域,静态变量)专用的系统堆栈空间(堆

2、栈区域,动态变量及函数传递)私有的进程控制块(task_struct数据结构)空闲物理页面管理Buddy算法:以多个页面为单位管理和分配空闲区域算法把物理内存中的所有页面按照2的整数次幂(1,2,4,8,16,32)进行划分,形成大小不同的存储块,成为页面块包含一个页面的块为1页块,包含两个页面的块位2页块,将每种页块按照先后顺序两两结合成一对对的buddy伙伴对空闲区域的管理按照页块大小分组进行管理空闲物理页面管理位图法和空闲页块组链表Linux对内存页面块的每种划分都对应一个位图map,位图中每一位代表一对buddy页块的使用情况:1对都空闲或被占用,该位为0;一组空闲而另一组被占用,位为

3、1系统按照buddy关系把具有相同大小的空闲页面块组成空闲页面块,每一个空闲页面块组用一个双向循环链表进行管理空闲物理页面管理系统请求3个页面页面13被释放内存交换当系统出现内存不足时,Linux内存管理系统需要释放内存页,由内核的守护交换进程kswapd工作增加系统中空闲内存页的数量,当系统启动时,交换守护进程由内核的init进程启动,初始化操作后进入无限循环,在每次循环末尾进入睡眠,在一定时间后被唤醒并调度运行kswapd发现可用内存页面短缺,找出不常用的内存页面,从活跃变成不活跃把已经处于不活跃状态的脏页面写入交换设备,成为不活跃干净页面内存交换系统中设置了上限值和下限值,如果空闲内存页

4、数量大于上限值,交换守护进程不做任何事情如果空闲页数量低于上限值,交换进程减少系统正在使用的页面数减少缓冲区和页高速缓存的大小,释放页面成为空闲页System V的共享内存页交换到交换文件,释放物理内存将页面换出物理内存进程通信系统进程与系统内核之间,各个进程之间通过内核进行信息交换,相互通信,协调彼此间的活动内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走进程通信数据传输:一个进程需要将它的数据发送给另一个进程共享数据:多个进程想要操作共享数据通知事件:一个进程需要向另一个或一组进程发送消息资源共享:多个进程之间共享同样的资源进程控制:控制进程希望能

5、够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变进程通信linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的AT&T对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内BSD跳出了单机限制,形成了基于套接口(socket)的进程间通信机制进程通信PSOIX可移植性操作系统接口(Portable Operating System Interface)POSIX标准定义了操作系统应该为应用程序提供的标准接口,期望获得软件可移植性,不局限于UNIX为一个POSIX兼容的操作系统编写的程序,应该在任何其它

6、的POSIX操作系统上编译执行Linux进程通信管道信号消息队列共享内存信号量套接字进程通信同主机进程间数据交互机制:无名管道(PIPE)、有名管道(FIFO)、消息队列(Message Queue)和共享内存(Share Memory)同主机进程间同步机制:信号量(semaphore)同主机进程间异步机制:信号(Signal)网络主机间数据交互机制:套接字(Socket)管道通信管道是一种特殊的文件,一种最基本的进程通信机制,首创于UNIX系统,是一个固定1个页面大小的缓冲区它以字符流形式发送大量数据,连接一个读进程和一个写进程,将两个进程指向同一个临时的索引节点,而这个索引节点指向一个物理

7、页面,以实现进程间通信的共享文件管道通信管道通信机制管道通信机制提供以下三方面的协调能力:只有确定对方已存在时,方能进行通信当一个进程正在对pipe进行读/写操作时,另一个进程必须等待当写(输入)进程把一定数量数据写入pipe后,便去睡眠等待,直到读(输出)进程取走数据后,再把它唤醒;当读进程读到一空pipe时,也应睡眠等待,直至写进程将数据写入管道后,才将它唤醒无名管道与命名管道无名管道文件管道文件不属于用户直接命名的普通文件,是由系统调用创建的允许两个进程按“先入先出(FIFO)”方式传递数据,但数据只能向一个方向流动每个管道只有一个内存页面做缓冲区,按环形缓冲区方式使用命名管道FIFO

8、(First in, First out)为一种特殊的文件类型,它在文件系统中有对应的路径当一个进程以读(r)的方式打开该文件,而另一个进程以写(w)的方式打开该文件,那么内核就会在这两个进程之间建立管道FIFO由内核管理,不与硬盘打交道命名管道管道本质上是一个先进先出的队列数据结构,最早放入的数据被最先读出来保证信息交流的顺序当删除FIFO文件时,管道连接也随之消失可以通过文件的路径来识别管道,从而让没有亲缘关系的进程之间建立连接命名管道FIFO允许无亲缘关系进程间的通信FIFO提供一个路径名与它创建的管道文件关联,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此

9、通过FIFO相互通信文件操作方式基于“先进先出”原理,严格遵循先进先出(first in first out),读总是从开始处返回数据,写则把数据添加到末尾命名管道shell命令示例打开两个终端,登录同一个账号建立命名管道:mkfifo m 755 namedpipe在tty1上输入命令:cat namedpipe在tty2上输入命令:echo “the fifo test” namedpipe中断CPU对系统发生的某个事件做出的一种反应CPU暂停正在执行的程序,保留现场后,自动的转去执行相应的处理程序,处理完后,在返回断点继续执行被“打断”程序中断处理分为中断响应和中断处理两步,中断响应由硬

10、件实施,中断处理由软件实施中断分类由CPU外部引起的称为中断,如I/O中断、时钟中断、控制台中断来自CPU内部事件或程序执行中的时间引起的过程,称为异常,如CPU本身故障、程序故障由于在程序中使用了请求系统服务的系统调用而引发的过程,称为陷入(trap)系统调用系统调用可以像普通C语言函数出现在C语言程序中系统调用把能进程的状态从用户态变成核心态每个系统调用都有唯一的系统调用号所有的系统调用都集中在系统调用入口表中进行统一管理信号机制信号也称软中断,是在软件层次上对中断机制的一种模拟异步进程可以通过彼此发送信号实现简单通信系统预先规定若干不同类型的信号,表示发生了不同的事件,每个信号对应一个编号信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据信号机制进程彼此间可用系统提供的系统调用发送信号 普通进程只能向具有相同uid和gid的进程发送信号或向相同进程组中的其他进程发送信号 进程接到信号后,在退出内核空间前做相应处理系统内核对除用户自定义之外的信号都规定了相应的处理程序,在默认情况下信号由内核处理,执行内核预定的处理程序信号机制信号的分类、产生和传送对各种信号预先规定处理方式信号的

温馨提示

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

评论

0/150

提交评论