嵌入式系统原理与应用 课件 第7章 Linux操作系统_第1页
嵌入式系统原理与应用 课件 第7章 Linux操作系统_第2页
嵌入式系统原理与应用 课件 第7章 Linux操作系统_第3页
嵌入式系统原理与应用 课件 第7章 Linux操作系统_第4页
嵌入式系统原理与应用 课件 第7章 Linux操作系统_第5页
已阅读5页,还剩57页未读, 继续免费阅读

下载本文档

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

文档简介

嵌入式系统原理与设计第7章Linux操作系统第七章0102030405Linux操作系统简介Linux内核进程与进程调度内存管理进程管理06文件系统/01Linux操作系统简介Linux发展历程Linux操作系统的诞生、发展和成长过程始终依赖着以下四个重要支柱:UNIX操作系统:商业领域最成功、最流行的操作系统GNU计划:GNU‘sNotUNIX,完全自由的类UNIX操作系统MINIX操作系统:一种类UNIX计算机操作系统,开创开源操作系统先河POSIX标准:可移植操作系统接口为了保证GNU软件可自由地使用、复制、修复、修改和发布,所有GNU软件必须遵守GNU的通用公共许可证GPL(GeneralPublicLicense,GPL)。GNUGPL创造性地提出了“反版权(Copyleft)”,这是一个不同于商业软件“版权所有(Copyright)”的法律概念,它不否认版权,也不反对发布软件时收取费用或取得利益。它的核心是必须把发布者的一切权利给予接受者,同时必须保证接受者能得到源代码,并将GNUGPL条款附加到软件的版权声明中,使接受者知道自己的权利Linux系统组成与主要特点Linux内核Linux系统组成Shell命令解释器应用程序Linux主要特点完全免费且开源良好的可移植性可定制的内核性能优异良好的网络支持丰富的应用软件Linux的版本Linux有众多(多达几百个)的发行版,在这些发行版中,下面4个版本比较具有代表性。RedHatLinux,fedoraDebian

Ubuntu

Slackware

/02Linux内核Linux内核的位置和作用

Linux内核在系统中的位置,如下图所示

Linux内核在系统中的作用程序员

:提供了一个与计算机硬件等价的扩展或虚拟的计算平台普通用户:资源管理器和执行器Linux内核以统一的方支持多任务,每一个进程运行起来就好像只有它一个进程在计算机上运行一样,独占内存和其他的硬件资源。Linux内核组成及各个子系统的作用Linux内核组成,如下图所示进程调度(SCHED)子系统内存管理(MM)子系统虚拟文件系统(VFS)子系统进程间通信(IPC)子系统网络接口(NET)子系统Linux内核的特征Linux内核的特征宏内核结构内核模块化可动态加载或裁剪内核模块支持虚拟文件系统分模式的被动提供服务/03进程与进程调度进程基本概念程序与进程程序是指令、数据及其组织形式的描述,在计算机中一般以文件的形式存在。进程是正在运行的程序的实例,在计算机中是操作系统动态执行的基本单元。进程的明确定义为:进程是由代码段、用户数据段以及系统数据段共同组成的

一个执行环境。进程基本概念进程状态进程是一个动态的实体,它具有生命周期。对于Linux来说,其进程状态如下:运行态就绪态睡眠(等待)态暂停状态僵死状态Linux进程的状态及转换图进程基本概念进程树在Linux中,通过fork()系统调用来创建一个新的进程,而新创建的子进程也能调用fork(),所以就会形成一颗进程树。进程树示例进程基本概念进程标识符为标识进程,Linux系统给每个进程分配唯一的进程标识符(PID),内核通过这个标识符来识别不同的进程。同时,PID也是内核提供给用户程序的接口,用户程序通过PID对进程发号施令。PID是32位的无符号整数,它被顺序编号,新创建进程的PID通常是前一个进程的PID加1。

操作系统为了对进程进行管理,就必须对每个进程在其生命周期内涉及的所有事情进行全面的描述。所有这些信息在内核中可以用一个结构体来描述——进程控制块PCB(processcontrolblock)。

与进程控制相关的系统调用介绍四个与进程控制相关的系统调用fork系统调用:创建进程,并为新创建的进程分配一个进程控制块(其数据结构为task_struct)。exec系统调用:exec实际代表一个函数簇,根据指定的文件名找到可执行文件,并用它来取代调用进程的内容。wait系统调用:进程一旦调用了wait,就立即阻塞自己,直到某个条件出现。exit系统调用

:终止一个进程。进程调度基本原理一般而言,一个好的调度算法应当考虑以下几个方面:公平:保证每个进程得到合理的CPU时间。高效:使CPU保持忙碌状态,即总是有进程在CPU上运行。响应时间:使交互用户的响应时间尽可能短。周转时间:使批处理用户等待输出的时间尽可能短。吞吐率:使单位时间内处理的进程数量尽可能多。进程调度调度算法(1)时间片轮询调度算法(2)优先权调度算法

♦️非抢占式优先权算法

♦️抢占式优先权调度算法(3)多级反馈队列调度(4)实时调度进程调度其他关键问题(1)时间片和优先级设定

时间片是进程被抢占前所能持续运行的时间,时间片过大或过小都不好。(2)调度时机

调度时机是指在何时进行进程调度。/04内存管理内存管理基础物理地址、虚拟地址与线性地址物理地址(也有称实地址)指的是物理内存的存储单元的编号,它与物理内存的存储单元是一对一的关系,CPU通过物理地址访问指定的物理存储单元。虚拟地址(也有称为逻辑地址或虚地址)是用户程序访问虚拟内存单元的编号,它与虚拟内存单元是一对一的关系。此外,在有些处理器里面(如现在的Intel的CPU),还有一个线性地址的概念,并且虚拟地址首先采用段机制映射到线性地址,然后再采用页机制将线性地址映射到物理地址。内存管理基础内核空间和用户空间进程虚拟地址空间由于Linux的虚地址与线性地址是同一地址,而32位CPU的线性地址为4GB的固定大小,因而Linux的虚拟地址空间也为4GB。Linux将这个4GB划分为两部分:最高的1GB供内核使用,称为内核空间;较低的3GB供用户进程使用,称为用户空间。内存管理基础关于虚拟地址空间的讨论在任意一个时刻,在单核CPU上只能有一个进程运行。因此,对于CPU来说,每个时刻系统里只存在一个4GB的虚拟地址空间,虚拟地址空间是进程相关的。也就是说,当进程发生切换时,低3GB的虚拟地址空间也随着切换。由此可以看出,虽然每个进程都有自己的独立的3GB的虚拟地址空间,但只有这个进程运行时,CPU才能感知它的虚拟地址空间。在其他时刻,其虚拟地址空间对于CPU来说是不可知的。内存管理基础Linux的页机制的原理虚拟页与物理页的映射关系页机制将虚拟地址空间划分为若干大小相等(一般为4KB)的子空间,称为页(Page),并加以编号,从0开始,如第0页,第1页等。相应地,也把物理地址空间按同样大小划分为若干存储块,称为页面(PageFrame)或物理页。同样,也从0开始编号。主要机制及相互关系Linux为实现虚拟内存到物理内存的转化,采用了多种机制,这些机制及相互间的关系如图所示内存管理的请页机制Linux的缺页异常处理程序的总体方案Linux采用请页机制的原因在于节约物理内存,它仅把当前要使用的用户空间中的少量虚拟页载入到物理内存。物理内存分配与回收物理页描述符大部分时间而言,内存管理的最小单位就是页。在32位CPU中,通常一个页的大小为4KB。Linux内核用structpage结构描述每个物理页,它也被称为页描述符,具体内容如下:物理内存分配与回收伙伴算法伙伴算法的核心数据结构是free_area_struct,其定义如下:伙伴系统使用的数据结构该结构中包含3个成员:next,prev和map。物理内存分配与回收物理页面的分配Linux内核的具体物理内存页块分配函数为_get_free_pages(),其定义如下:该函数所做的工作可以概括如下:(1)检查所请求的页块大小是否能够满足;(2)检查系统中空闲物理页的总数是否已低于允许的下界;(3)正常分配,即从free_area数组的第order项开始执行物理页分配;(4)换页。调用函数try_to_free_pages()启动换页进程。物理内存分配与回收物理页面的回收Linux的页回收函数为free_pages(),其定义如下:该函数所做的工作如下。(1)根据addr算出该页块的第一页在mem_map数组中的索引。(2)如果该页是保留的(内核在使用),则不允许回收。(3)将页块第一页对应的页结构中的_count域减1,如果_count值不为0,说明还有进程在使用该页块,因此不能回收它,简单地返回。(4)将该页块进行回收,主要是更新结构体page、free_area以及全局变量nr_free_pages(空闲页数)的值。物理内存分配与回收Slab分配机制Slab的核心要点包括:引入对象概念。所谓对象是存放一种数据结构的内存区,并为对象创建构造和解析函数,构造函数用于初始化数据结构所在内存区,解析函数用于回收相应内存区。对对象分类处理。为频繁使用的对象在内存中创建专用缓冲区,让其常驻;为不频繁使用的对象在内存中创建通用缓冲区,减少内存碎片的产生。内存管理的交换机制交换的基本原理在内存管理的页面交换机制设计中,必须要考虑以下三个问题:如果要进行页面交换,选择哪个页面进行交换。交换出的页面怎么存放在磁盘交换区。如何选择交换的时机。当物理内存出现不足时,Linux内核需要释放部分物理内存页面,该任务由内核的守护进程kswapd()完成。kswapd()在内核初始化时启动,并周期地运行,以保证系统中有足够的空闲物理页面。内存管理的交换机制交换时机确定在交换机制设计的三个问题中,交换时机是最难设计的。这里简单介绍一下可选的交换时机。策略一:需要时才交换。策略二:系统空闲时交换。策略三:换出但并不立即释放。策略四:把页面换出推迟到不能再推迟为止。内存管理的交换机制页面交换守护进程为避免在缺页异常发生时临时搜索可供换出的页面和执行换出,Linux内核定期地检查系统内的空闲页面数是否小于预定义的极限。为此,Linux内核设置了一个定期将页面换出的守护进程kswapd()。当该情况被检查出后,就预先将若干页面换出,以减轻缺页异常发生时系统所承受的负担。/05进程通信互斥和同步进程的互斥并发进程可以共享系统中的各种资源,但是有些资源不能任意时刻都能进行共享,这样的资源称为临界资源(criticalresource)。系统中不仅物理设备具有临界属性,软件中的数据等也可能具有临界属性,从而成为临界资源。操作系统中,把进程中访问临界资源的那段代码称为临界区(criticalsection)。涉及同一临界资源的不同进程中的临界区称为同类临界区。有了临界区的概念后,进程的互斥就可以描述为:一组并发进程中的两个或多个程序段,因共享某一资源使得这组并发进程不能同时进入临界区的关系称为进程的互斥。互斥和同步进程的同步在并发系统中,进程除了对共享资源的竞争而引起的进程互斥外,还存在着直接的制约关系,如生产者-消费者进程等,影响了进程的并发执行。操作系统中,把异步环境下的一组并发进程,在某些程序段上需互相合作、互相等待,使得各进程在某些程序段上必须按一定的顺序执行的制约关系称为进程同步,具有同步关系的一组并发进程称为合作进程。同步机制加锁/开锁原语及其应用

同步机制信号量与P、V原语及其应用在操作系统中,利用信号量(semaphores)来表征一种资源或状态,通过对信号量值的改变来表征进程对资源的使用状况,或根据信号量的值来控制进程的状态。信号量S定义如下:S是一个整型变量而且初值非负。对信号量仅能实施P(S)操作和V(S)操作,也只有这两个原语操作才能改变S的值。每一个信号量都对应一个等待队列,队列中的进程处于等待状态。同步机制信号量与P、V原语及其应用P(S)原语操作的主要动作如下:S减1。若S减1后仍大于或等于零,进程可以继续执行。若S减1后小于零,则该进程被阻塞并进入该信号的等待队列中,然后转进程调度。V(S)原语的操作的主要动作如下:S加1。若相加结果大于零,说明该信号量无等待进程,本进程继续执行。若相加结果小于或等于零,则从该信号量的等待队列中唤醒一个进程,然后在返回原进程继续执行或转进程调度。上述信号量定义中,关键是P(S),V(S)原语操作。高级通信方式进程间高级通信方式包括传统的共享存储器、消息缓冲和管道通信方式,以及随着网络发展而出现的套接字、远程调用等方式,本节简要介绍前3种方式。共享存储器消息缓冲管道通信Linux的进程通信管道机制管道通信方式是传统的进程通信技术。管道通信技术又分为无名管道和有名管道两种类型。无名管道为建立管道的进程及其子孙进程提供一条以比特流方式传递消息的通信管道。该管道在逻辑上被看作管道文件,在物理上则由文件系统的高速缓存区构成。发送进程利用系统调用write(fd[1],buf,size)把buf中长度为size字符的消息写入管道口fd[1],接收进程则使用系统调用read(fd[0],buf,size)从管道出口fd[0]读出size字符的消息送入buf中。管道按先进先出(FIFO)方式传递消息,且只能单向传递,如图所示。

Linux的进程通信信号机制信号主要用来向进程发送异步的事件,以要求一个进程做某件事。例如,用户可以用键盘(如同时按下ctrl和c键)中断产生信号,中断一个进程的运行。进程收到系统发来的信号后,可以选择合适的操作来响应信号。常见的操作有:忽略信号和阻塞信号。由进程处理该信号。由内核进行默认处理。Linux的进程通信SystemVIPC机制Linux支持UNIXSystemV进程间通信(InterprocessCommunication,IPC)机制,包括消息队列、信号量和共享内存三种方式。SystemVIPC对象的统一属性总结如下:键key:一个由用户提供的整数,用来标志这个资源的实例;创建者creator:创建这个资源的进程的用户ID(UID)、组ID(GID);所有者owner:资源的所有者的UID和GID;权限permisss:文件系统类型的权限。Linux的进程通信SystemVIPC机制消息队列消息队列是消息的存储空间。进程需要对消息队列访问时,执行sys_ipc()系统调用,调用格式如下:

Linux消息队列Linux的进程通信SystemVIPC机制信号量Linux利用semid_ds结构描述SystemVIPC信号量,如图所示。Linux的进程通信SystemVIPC机制共享内存Linux利用shmid_ds结构来描述共享内存对象,所有共享内存对象组成一个共享内存shm_segs链表,如图所示。/06文件系统Linux下的文件文件类型文件类型说明代表字符普通文件Linux中最多的一种文件类型,如文本文件(ASCII)、二进制文件(binary)、数据格式的文件(data)、各种压缩文件等。-目录文件代表一个目录,能用“cd”命令进入。d块设备文件按块大小进行读取的接口设备,一般为高速、大容量设备,如硬盘。b字符设备文件按字符大小进行读取的接口设备,一般为低速、串行接口,如键盘、鼠标等。c套接字文件这类文件通常用在网络数据连接,即通过网络进行数据的读或写。s管道文件提供两个进程之间的一种通讯方式,可以把一个程序的输出直接连接到另一个程序作为它的输入。p链接文件软链接文件,类似Windows下面的快捷方式。lLinux主要有7种文件类型,如表所示Linux下的文件rwx属性Linux文件系统中的每个文件都有权属标志,系统根据这些标志来控制用户对这个文件的访问。首先,每个文件都记录了它所属的用户和所属的组;其次,每个文件都有三组权限标志,分别针对所属用户(User)、所属组(Group)和其他用户(Other);最后,每组权限标志又包括读、写、执行三种权限,即rwx属性。Linux下的文件隐藏属性属性作用A此文件(或目录)的访问时间将不会被修改。S对文件进行任何修改,将会“同步”写入磁盘中。a这个文件将只能增加数据,而不能删除也不能修改数据,只有root用户才能设置这个属性。c文件在存储的时候,先压缩后存储,在读取的时候会自动解压缩i让一个文件不能被删除、改名,设置连接也无法写入或添加数据。只有root才能设置这个属性。d当dump程序被执行的时候,设置d属性将可使该文件(或目录)不会被dump备份。s如果这个文件被删除,它将会被完全从这个硬盘空间中删除。U如果该文件被删除,其数据内容其实还存在磁盘中。在Linux的在Ext2/Ext3的文件系统上,每个文件还有8个隐藏属性,如表所示,这些属性可以通过chattr和lsattr这两个命令进行更改。虚拟文件系统虚拟文件系统的内涵虚拟文件系统VFS(VirtualFileSystem)实质就是将各种不同实际文件系统的操作和管理纳入到一个统一的框架中,使得用户程序可以通过同一个文件系统界面,也就是同一组系统调用,能够对各种不同的文件系统的文件进行操作。虚拟文件系统VFS与实际文件系统的关系Linux内核中,VFS与实际文件系统的关系如图所示。虚拟文件系统VFS中的对象在Linux中,VFS承载各种实际文件系统的共有属性,负责管理挂载到系统中的实际文件系统。具体来说,VFS在设计中汲取UNIX文件系统的设计思想,继承了其抽象出的4个对象:超级块索引结点目录项文件文件系统涉及到的主要数据结构Linux文件系统主要涉及到的数据结构是超级块、索引节点、目录项及文件这四个对象的数据结构。超级块对象是对一个文件系统的描述索引节点对象是对一个文件物理属性的描述目录项对象是对一个文件逻辑属性的描述文件对象是对一个进程打开的文件的描述。与文件相关的各数据结构之间的联系文件系统的注册、安装与卸载文件系统的注册每个文件系统都有一个初始化例程,用来在VFS中进行注册,即填写一个叫做file_system_type的数据结构,该结构包含了文件系统的名称以及一个指向对应VFS超级块读取例程的地址。所有已注册的文件系统的file_system_type结构形成一个链表,这个链表称为注册链表,如图所示。文件系统的注册、安装与卸载文件系统的安装Linux下,安装一个文件系统通过调用mount()系统调用实现,其内核实现函数为sys_mount(),要用到的主要数据结构是vfsmount。安装过程中的主要工作是创建安装点对象,将其插入到根文件系统的指定的安装点下,然后初始化超级块对象,从而获得文件系统的基本信息和相关操作。文件系统的注册、安装与卸载文件系统的卸载一个没有使用的文件系统可以被卸载,这里没有使用是指该文件系统中的文件或目录没被打开。Linux内核根据文件系统所在的设备标识符,检查在索引节点缓冲区中是否有来自该文件系统的VFS索引节点,如果有且使用计数大于0,则说明该文件系统正在被使用,此时该文件系统不能被卸载。否则,查到对应的VFS超级块,如果该文件系统的VFS超级块标志位“脏”,则必须将超级块信息回写到磁盘。上述过程结束之后,对应的VFS超级块被释放,vfsmount数据结构将从vfsmntlist链表中断

温馨提示

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

评论

0/150

提交评论