ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:36.39KB ,
资源ID:5835910      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5835910.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux复习资料20版.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Linux复习资料20版.docx

1、Linux复习资料20版Linux期末复习资料目录Linux期末复习资料 1一、Linux基本概念 2二、IA架构 2(一)保护模式 2(二)中断与异常 4三、进程与进程调度 4四、系统调用 5(一)系统调用流程的描述重点 5(二)两种系统调用方式 5(三)系统调用表 5五、内核同步技术 5六、VFS虚拟文件系统 7七、设备管理 8八、访问控制 9(一)传统访问控制重点 9(二)Ext2文件标记属性 10(三)访问控制 10九、链接与可执行文件重点 11一、Linux基本概念由于基本概念比较无聊而且很占篇幅,所以就不在这里粘了,考试时候可以直接到ppt里面找。1、Unix参考ch1.1Linu

2、x.ppt第4页2、GNU参考ch1.1Linux.ppt第6页3、GPL参考ch1.1Linux.ppt第7页4、Posix参考ch1.1Linux.ppt第8页(Posix的意义在该页ppt下面的备注里),第9页的第3点5、Minix参考ch1.1Linux.ppt第5页二、IA架构(一)保护模式1、相对于实模式的功能扩充:(1)全部32条地址线有效,可寻址高达4G字节的物理地址空间(2)扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持(3)支持多任务,能够快速地进行任务切换和保护任务环境(4)四个特权级和完善的特

3、权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离(5)支持虚拟8086方式,便于执行8086程序2、保护模式下的内存寻址:段式:(1)什么是段描述符:在保护方式下,每个段由如下三个参数进行定义:段基地址(Base Address):在80386保护方式下,段基地址长32位段界限(Limit):段界限用20位表示,而且段界限可以是以字节为单位或以4K字节为单位。段属性(Attributes)这三个参数组成一个数据结构,就称为段描述符(2)段式存储如何保护数据?段式存储通过段描述符中的DPL位来实现数据的保护。DPL即描述符特权级别,当DPL为0时,只能当CPL也为0时该段才

4、能被访问;DPL为3时,则可被任何CPL值访问。(3)GDT(global descriptor table )即全局段描述符表,可理解为由段描述符组成的数组,而GDTR(global descriptor table register)就是用以存放全局段描述符表地址的寄存器。(4)保护模式段式寻址方式:相信实模式下的寻址大家都很熟悉了,就是以前学过的DS:IP格式,DS16+IP即为物理地址,但保护模式与实模式不同,保护模式下,DS中存放的不是段基址,而是段选择符(段选择符格式参考ch2.1IA32基础_1.ppt第29页),段选择符中的第0位和第1位表示的是特权级别,权限从11到00递增,

5、而第2位最为重要,它表示需要的段描述符存放在哪个寄存器,如果为0则段描述符在GDTR(全局描述符表寄存器)中,如果为1则存放在LDTR(局部描述符表寄存器)中,再根据DS中后面的13位定为到GDTR或LDTR中所保存的指定段描述符,段描述符中就包含了段基址信息,利用这个段基址16+IP就得到了一个32位线性地址,在段式寻址方式下,这个32位线性地址就是最终的物理地址。整个过程归纳如下:从DS中取出段选择符根据段选择符的第2位判断段描述符所在的寄存器根据段选择符的后面13位,在段相应寄存器内找到段描述符根据这个段描述符找到段基址将段基址16+IP即可得到一个32位线性地址对于段式来讲,这个线性地

6、址即为实际数据的物理地址,寻址完成段页式:(1)逻辑地址:程序编译后得到的二维虚拟地址(2)线性地址:逻辑地址级过段式管理得到的地址(3)物理地址:放到地址总线上的地址(4)保护模式段页式寻址方式:重点其实段页式寻址方式的前半部分与段式一样,都是从DS中确定寄存器,再从寄存器中找到段描述符,再找到段基址,加上IP就得到了32为线性地址,只不过在段页式中,这个线性地址并不是实际物理地址,而是一个虚拟地址,这个虚拟地址还需要经过页式存储的转换才能得到实际物理地址。在得到了32为线性地址之后,我们将这32位的虚拟地址拆分为三个部分,第一部分有10位,保存的是页目录表中的偏移量,这时,调出CR3寄存器

7、中保存的页目录表基址,加上这个10位的偏移量即可得到页表首地址,这时再取出32位虚拟地址中的第二部分(也是10位)作为页表偏移量,将这个偏移量与页表首地址相加即可得到页基址,这时再将32位虚拟地址的最后12位取出作为页内偏移地址,与页基址相加即可得到想要的数据(参考ch2.1IA32基础_1.ppt第34页-第36页)。整个过程归纳如下:从DS中取出段选择符根据段选择符的第2位判断段描述符所在的寄存器根据段选择符的后面13位,在段相应寄存器内找到段描述符根据这个段描述符找到段基址将段基址16+IP即可得到一个32位线性地址将这32位线性地址划分为三个部分,分别为10位(页目录表偏移量)、10位

8、(页表偏移量)和12位(页内偏移量)从CR3寄存器中取出系统保存好的页目录表基址,与第一个10位(页目录表偏移量)相加,得到页表基址。将页表基址与第二个10位(页表偏移量)相加,得到页基址将页基址与第三个12位(页内偏移量)相加,得到数据首地址完成寻址3、“保护”的含义(1)特权指令的定义:特权指令是指保护方式下只有CPL(当前特权级)=0时,才可执行的指令。如果CPL不等于0而执行它们,那么会引起通用保护异常。(2)I/O保护保护模式下,通过“I/O特权级IOPL位”和“I/O许可位图”实现I/O保护。只有当CPL(当前特权级)IOPL(IO特权级)或者I/O许可位图允许时,I/O敏感指令才

9、会被允许执行。I/O许可位图由二进制位串组成。位串中的每一位依次对应一个I/O地址,位串的第0位对应I/O地址0,位串的第n位对应I/O地址n。如果位串中的第m位为0,那么对应的I/O地址m可以由在任何特权级执行的程序访问;如果第m位为1,则对应的I/O地址m只能由在IOPL特权级或更内层特权级执行的程序访问。如果在I/O外层特权级执行的程序访问位串中位值为1的位所对应的I/O地址,那么将引起通用保护异常。参考ch2.1IA32基础_1.ppt第55页-第56页。(二)中断与异常1、中断的概念程序执行过程中的强制性转移,到相应的处理程序,是软件或者硬件发生了某种情形而通知处理器行为。分为硬中断

10、(由硬件中断控制器产生的中断,分为可屏蔽中断和不可屏蔽中断)、异常(程序执行中出现的故障,分为故障、终止和陷阱)、软中断(程序主动产生的异常,在执行当前指令后发生. 主要指程序指令int产生的异常)。2、Intel的中断解决方案在实模式下,使用中断描述符表来提供中断服务入口,而保护模式下则使用IDT(中断描述符表)来提供中断服务入口。(1)IDT中断描述符表所谓IDT即中断描述符表,它的作用是将每个异常或中断向量与它们的处理程序入口地址联系起来,IDT由表描述符组成,而且表中最多有256项(0255)(2)中断处理流程重点这里类似于保护模式下的寻址方式,细节部分不再赘述:根据所需的中断号从ID

11、T(中断描述符表)中取出所需中断服务入口的虚拟地址经过GDT的转换得到段描述符,将段描述符中的DPL与CPL、RPL相比较,并将段描述符中的段长度与IP偏移地址相比较,如果通过越权检查和越界检查,则得到了线性地址对于段式存储,线性地址即为实际物理地址,若是段页式存储,则还要进行页式地址转换,最终得到终端服务程序的实际物理入口地址,进入中断中断服务结束后,通过iret指令返回,退出中断三、进程与进程调度1、进程的概念进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack

12、region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。2、PCB的组成该部分内容较多,详细内容在ch4.1进程调度.ppt里第7页-第22页。3、线程与内核线程(1)线程Linux内核并不严格区分线程与进程,都使用task_struct描述,共享特定资源的进程,即可理解为线程。(2)内核线程特点:仅在内核空间运行的线程没有自己的独立内存空间(PCB的task_struct.mm=N

13、ULL)用来执行内核的特定维护任务(软中断 页面同步)四、系统调用(一)系统调用流程的描述重点1、应用程序员调用封装了系统调用的API2、封装程序设置好参数,触发系统调用处理机制,将系统调用号压入EAX寄存器3、通过IDTR(中断描述符表寄存器)调出IDT(中断描述符表),并根据设置好的参数,从IDT(中断描述符表)中获得相应中断服务程序的逻辑入口地址4、通过GDTR(全局段描述符表)调出GDT(全局段描述符表),得到段描述符,再将CPL、RPL和DPL相比较,判断权限级别;通过后审查后再根据段式或段页式的寻址转换得到中断服务程序的物理地址5、执行中断服务程序,进入系统内核态6、调出系统调用表

14、(arch/i386/kernel/syscall_table.S),并根据EAX寄存器中的内容(即系统调用号)找到相应系统调用服务程序的入口地址,再通过类似上述的转换与审查,得到系统调用的物理地址,执行系统调用7、系统调用服务程序完成用户请求的服务8、通过iret指令把返回值带到用户空间,返回用户态参考ch5系统调用.ppt第8页。(二)两种系统调用方式1、通过软中断进入内核态(保存在中断描述符表中)2、通过sysenter指令进入内核态(保存在sysenter相关寄存器中)详见ch5系统调用.ppt第11页-第25页(三)系统调用表系统调用表定义于arch/i386/kernel/sysc

15、all_table.S,映射系统调用号与系统调用服务程序的对映关系五、内核同步技术1、Spin Lock自旋锁自旋锁是针对多CPU环境而设置的,进程或线程请求资源时,如果资源已被自旋锁锁住,则进程循环等待,直到自旋锁被释放而不必被挂起。在spin lock保护的临界区中禁止线程切换。自旋锁适用于较短时间的等待,中断的上下文切换和进程的上下文切换。暂定这部分内容具体该怎么写我也没弄清楚,等晚上再改吧具体内容和知识理解参考教材第109页-第112页2、读写自旋锁读写自旋锁是对普通自旋锁有针对性的细化,是Linux专门针对读写问题所设计的自旋锁。关于考试中的程序填空,实在是不知道该怎么说才好,但大体

16、上应该是主要让大家填写何时获得锁,获得哪个锁,以及何时释放锁,释放哪个锁,代码的格式大致如下:spinlock_t mr_rwlock=SPIN_LOCK_UNLOCKED;/在读者的阅读代码中:read_lock(&mr_rwlock);读者临界区代码read_unlock(&mr_rwlock);/在写者的写操作代码中:write_lock(&mr_rwlock);写者临界区代码write_unlock(&mr_rwlock);(书上写的是&mr_lock,不过我觉得它应该是打印错了)具体内容和知识理解参考教材第112页-第113页3、semaphore信号量如果进程所请求的资源信号量为负

17、数,则说明资源不可用,并自动挂起,等待信号量的释放。当信号量释放时,系统到阻塞队列中挑选一个等待进程获取信号量。信号量适用于长时间等待,可进行进程的上下文切换。暂定这部分内容具体该怎么写我也没弄清楚,等晚上再改吧具体内容和知识理解参考教材第114页-第116页4、读写信号量读写信号量是对普通信号量有针对性的细化,是Linux专门针对读写问题所设计的信号量。代码格式如下:static DECLARE_RWSEM(mr_rwsem);/在读者的阅读代码中:down_read(&mr_rwsem);读者临界区代码up_read(&mr_rwsem);/在写者的写操作代码中:down_write(&m

18、r_rwsem);写者临界区代码up_write(&mr_rwsem);具体内容和知识理解参考教材第117页六、VFS虚拟文件系统1、基本概念虚拟文件系统(VFS)是物理文件系统与服务之间的一个接口层,它对Linux的每个文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以及系统中运行的其他进程看来,都是相同的。严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消亡。虚拟文件系统所隐含的主要思想在于引入了一个通用的文件模型,这个模型能够表示所有支持的文件系统。从本质上讲,通用文件模型就是用指针代替硬编码来实现诸如r

19、ead(.)、write(.)、open(.)之类的操作。当用户调用一个open操作时,内核根据用户的操作对象,选择不同的open实现。2、重要结构(1)super block超级块对应硬盘结构:super block是磁盘上的某块信息在内存中的镜像,需要实时地与磁盘同步。它保存了整个分区的描述信息:空闲块、被占用块、数据区的起始位置等。主要操作:由file_system_type生成超级块;维护文件系统的描述信息;提供生成inode结构的方法主要数据成员:详见ch7文件系统.ppt的第20页-第23页。(2)inode索引节点每个文件都对应的一个inode结构,每一个inode有一个索引节点

20、号i_ino。在同一个文件系统中,每一个索引节点号是唯一的。索引节点对应的文件可以是磁盘文件、设备文件或特殊节点。对应硬盘结构:磁盘inode信息(大小、属性、存储位置、访问权限)作为一个内核数据结构所需要的管理性信息(锁、内存映射、链)主要操作:file operation(文件操作)和inode operation(索引节点操作)主要数据成员:详见ch7文件系统.ppt的第32页-第34页。(3)file文件对象文件对象描述的是进程怎样与一个打开文件交互的过程。只有当文件被打开时才创建file对象,主要内容则是文件的指针。对应硬盘结构:磁盘上没有file对应的映像。主要操作:无主要数据成员

21、:详见ch7文件系统.ppt的第38页-第41页。(4)dentry目录项由于从磁盘读入并构造一个目录项需要花费大量的时间,而且目录项可能被经常性的访问,所在linux使用目录项调整来提高处理目录项对象的效率。dentry是Linux文件系统中某个索引节点(inode)的链接,每个在目录树中存在的节点都对应一个目录项对象。对应硬盘结构:无主要操作:无主要数据成员:详见ch7文件系统.ppt的第44页-第47页。3、操作系统打开一个文件的过程:重点 首先大家需要明白这样几个概念: 每个文件或目录都对应了一个唯一的inode(索引节点)inode中存放了文件的物理地址,如果是目录,则这个地址指向d

22、entry(目录项),如果是文件,则指向文件内容dentry是目录文件的数据结构,也就是目录文件的内容。其中存放了该目录下的文件名与它们各自inode号的对应关系磁盘的inode table(索引节点表)中存放了i_ino(索引节点号)与inode的对应关系举个例子吧,比如现在要打开/tmp/test.c这个文件,那么整个过程可以分为以下几步:(1)操作系统从inode table(索引节点表)中提取出第一个inode(索引节点),即为根目录“/”的inode(2)从根目录“/”的inode中找到“/”的数据块,这个数据块即为它的dentry,dentry中存放了“/”下所有文件的文件名和相应

23、的i_ino(索引节点号),并从这个dentry中找到名为“tmp”的项,于是得到了tmp的i_ino(3)根据刚刚得到的tmp的i_ino搜索inode table,得到tmp的inode(4)从tmp的inode中找到数据块地址,同理,这个数据块即为dentry,然后找到dentry中名为“test.c”的项,得到test.c的i_ino(5)根据刚刚得到的test.c的i_ino搜索inode table,得到test.c的inode(6)test.c的inode中就存放了这个文件的地址,文件已找到。七、设备管理1、物理设备通过主设备号与驱动程序唯一地对应起来。2、模块可以访问内核的全部

24、数据或结构。3、模块的编写方法:重点Linux的模块代码大体包含如下几个部分:(1)头文件头文件与C语言所包含的库文件类似,都是以#include这样的格式开头(2)GPL声明这部分大家不必考虑太多,全都写MODULE_LECENSE(DUEL BSD/GPL);即可(3)自定义的各种各样的函数这部分灵活性较大,实现题目要求的功能(4)模块声明模块的声明部分比较简单,只要将初始化该模块时所调用的函数名和退出模块时调用的函数名声明即可,格式如下:module_init(函数名);module_exit(函数名);参照ch7.2设备管理与模块机制.ppt的第15页-第16页,第十五页右侧的截图即为

25、一个模块实例。八、访问控制(一)传统访问控制重点在Linux中,可以按照文件的角度将所有用户划分为3类:拥有者、拥有组、其他;而对于每一类用户又都可划分为3种操作方式:读、写、执行。所以,Linux文件的基本属性也就应该用9(33)位来表示,详细列出如下:第一位:“文件拥有者”是否可以读这个文件第二位:“文件拥有者”是否可以写这个文件第三位:“文件拥有者”是否可以执行这个文件第四位:“文件拥有组”是否可以读这个文件第五位:“文件拥有组”是否可以写这个文件第六位:“文件拥有组”是否可以执行这个文件第七位:“其他用户”是否可以读这个文件第八位:“其他用户”是否可以写这个文件第九位:“其他用户”是否

26、可以执行这个文件其中每一位都以1代表是,0代表否。这9个二进制数可以三三结合,变成3个十进制数,比如111101101就对应了755。更改文件权限的命令是chmod,这个命令的使用格式如下:chmod XXX 文件名其中XXX就代表了那三个十进制数,例如:chmod 740 test.c首先,这条命令是对当前目录下名为test.c的文件进行的操作,命令更改了它的权限,至于改成了什么权限,我们再来分析:740是个十进制数,按照上面的换算方法,我们可以通过740得到一串二进制数111100000,再用这串二进制数对应上面的具体位的含义就会发现,740(111100000)代表着将文件的权限改为“文

27、件拥有者可读可写可执行+文件拥有组可读不可写不可执行+其他用户不可读不可写不可执行”。完整地理解这条命令,就是将当前目录下的test.c文件权限修改为“文件拥有者可读可写可执行+文件拥有组可读不可写不可执行+其他用户不可读不可写不可执行”。在这9位权限位的前面,其实还有3位特殊访问位,分别为SUID、SGID、STICKY,含义为:SUID:任何用户在执行该程序时,是否拥有文件所有者的执行权限SGID:任何用户在执行该程序时,是否拥有文件所有组的执行权限STICKY:当对某个目录设置该位时,非授权用户不能删除或重命名这个目录中其他用户的文件。该位只针对目录有效,对文件没有效果。如果想要将这3个

28、特殊访问位也修改的话,chmod命令后面的数字就应该是4个而不是3个了,其中第一个数字就代表了这3个特殊访问位的值。另外,chmod命令后面还可以接字符参数,比如:chmod o+x test.c这句话的含义即为给test.c文件增加其他用户的可执行权限。类似的命令还可以有:chmod g-w test.cchmod go-wx test.cchmod ugo+rx test.cchmod a+x test.c其中各个参数的含义为:a:所有用户(all)u:文件拥有者(user)g:文件拥有组(group)o:其他用户(other)+:增加相应权限-:删除相应权限r:可读(read)w:可写(

29、write)x:可执行(execute)详见ch8.1linux传统访问控制.ppt的第17页-第35页。(二)Ext2文件标记属性1、文件标记与文件访问权限的区别文件标记是针对所有用户的,高于文件权限设置。如:某文件具有EXT2_IMMUTABLE_FL,则无论任何人都不可修改该文件,与文件访问权限的设置无关。2、支持并不是所有文件系统都支持该特征,仅ext2、ext3文件系统支持。3、相关命令(1)lsattr 显示文件的标记属性格式:lsattr 文件名(2)chattr 修改文件的标记属性格式:chattr 参数 文件名其中参数可以为A、a、d、i、s、S,各个参数的含义可参考ch8.

30、1linux传统访问控制.ppt的第38页-第39页。(三)访问控制1、自主访问控制(DAC)和强制访问控制(MAC)的区别(1)自主访问控制(DAC)是一个接入控制服务,它执行基于系统实体身份和它们的到系统资源的接入授权。这包括在文件,文件夹和共享资源中设置许可。(2)强制访问控制是“强加”给访问主体的,即系统强制主体服从访问控制政策。强制访问控制(MAC)的主要特征是对所有主体及其所控制的客体(例如:进程、文件、段、设备)实施强制访问控制。为这些主体及客体指定敏感标记,这些标记是等级分类和非等级类别的组合,它们是实施强制访问控制的依据。系统通过比较主体和客体的敏感标记来决定一个主体是否能够访问某个客体。用户的程序不能改变他自己及任何其它客体的敏感标记。2、SELinux使用到的安全技术类型加强(Type Enforcement,TE)基于角色访问控制(RBAC)多级安全(MLS)九、链接与可执行文件重点1、预处理:处理以#开头的声明(比如define后的字符或include),将库函数的声明和所需的数据结构一并复制到源代码中,并去掉注释。2、编译:将文本形式的代码转换为汇编语言文件。3、汇编:将汇编文件转换为二进制机器码文件。4、链接: 进行符号解析,将程序中的符号引用和符号定义相关联(这个关联就是符号表)将代码中include的库函数的二进制代码块粘贴到目标文件上(即静

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1