linux复习

上传人:今*** 文档编号:105681232 上传时间:2019-10-13 格式:DOCX 页数:20 大小:85.56KB
返回 下载 相关 举报
linux复习_第1页
第1页 / 共20页
linux复习_第2页
第2页 / 共20页
linux复习_第3页
第3页 / 共20页
linux复习_第4页
第4页 / 共20页
linux复习_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《linux复习》由会员分享,可在线阅读,更多相关《linux复习(20页珍藏版)》请在金锄头文库上搜索。

1、第一题:名词解释。1、单内核:单内核就是把它从整体上作为一个单独的大过程来实现,并同时运行在一个单独的地址空间。即所有内核服务都在一个大的内核空间中运行,内核可以直接调用函数。Linux是一个单内核,它运行在单独的内核地址空间。单内核模式具有简单和高性能的特点。2、进程、线程、内核线程:进程:一个进程就是处于执行期的程序以及它所包含的资源的总称。这些资源包括:打开的文件、挂起的信号、内核内部数据、处理器状态、地址空间及一个或多个执行线程等。线程:线程是在进程中活动的对象,它为共享一个地址空间的程序提供多个执行线索,它可以共享打开的文件和其他资源。内核调度的对象是线程而不是进程,每个线程拥有一个

2、独立的程序计数器、进程栈和一组进程寄存器。在Linux中每个线程和进程一样有唯一(唯一隶属自己)的task_struck,在内核看来与一般进程没有什么区别,当进程间选择性的共享地址空间时它可视为线程。内核线程:独立运行在内核空间的标准进程,可以被调度,也可以被抢占,但是没有独立的地址空间,只在内核空间运行,负责完成内核在后台执行操作的任务,只能由其他内核线程创建。3、进程上下文:(表达不太准确)我们把系统提供给进程的处于动态变化的运行环境总和称为进程上下文,这些资源包括CPU的所有寄存器中的值、进程的状态以及堆栈中的内容,当前进程上下文均保存在进程的任务数结构中。一般程序在用户空间运行,它执行

3、了系统调用或者触发了某个异常,它就陷入了内核空间,此时我们称“代表进程执行”并处于进程上下文。进程上下文是内核的一种操作模式,此时内核代表进程执行,可以通过current宏关联当前进程。因为进程是以进程上下文的形式连接到内核中的,因此,进程上下文可以睡眠,也可以抢占。4、写时拷贝:写时拷贝是指在需要写入的时候才进行资源复制,是一种可以推迟甚至免除拷贝数据的技术。Linux的fork()使用写时拷贝数据实现,创建子进程时不需要立即给子进程拷贝数据,而是让父子进程以只读的方式共享没有修改的数据和空间,而当父子进程之一修改数据时则进行拷贝。5、内核抢占/抢占: 内核抢占是指,当进程位于内核空间,若有

4、一个更高优先级的任务出现时,可以将当前任务挂起,切换去执行优先级更高的进程,而这个强制挂起的动作叫抢占。可抢占的前提需要确保重新调度是安全的,即当前的任务没有持有锁,在这种情况下内核可以在任何时间抢占正在执行的任务。2.6版本后的Linux内核是可抢占式内核,具有上述允许内核优先执行高优先级任务的能力。6、进程时间片:进程时间片是一个数值,表明进程在被抢占前所能持续运行的CPU时间,它是一个调度策略设定的数值。Linux采用了预加载调度策略,每个进程只运行很短的时间:200毫秒;同时Linux调度程序还能根据进程的优先级动态调整分配给它的时间片,来保证高优先级的进程执行的高频率和长时间。7、上

5、下文切换:从一个可执行的进程切换到另一个可执行的进程。由context_switch()函数负责完成,它完成了两项基本工作:1)把虚拟内存从上一个进程映射切换到新进程中;2)从上一个进程的处理器状态切换到新进程的处理器状态中,包括保存、恢复栈信息和寄存器信息,还有其他任何与体系结构相关的状态信息,都必须以每个进程为对象进行管理和保存。8、系统调用():所有的操作系统在其内核里都有一些内建的接口函数,这些函数可以用来完成一些系统级别的功能。Linux系统使用的这样的函数叫做“系统调用”,英文是systemcall。这些函数代表了从用户空间到内核空间的一种转换,应用程序通过这些接口函数访问硬件设备

6、和其他的操作系统资源。Linux中,系统调用时用户空间访问内核的唯一手段,除异常和陷入之外,它们是内核唯一的合法入口。9、中断上下文:当执行一个中断处理程序时,内核处于中断上下文。硬件通过触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递传递给内核,内核根据这些参数进行中断处理。所谓“中断上下文”,其实也可以看作就是硬件传递过来的这些参数和内核需要保存的一些其他环境(书上没有)。 中断上下文不能睡眠。在中断处理函数中调用一个内核API之前,应该仔细分析它以确保其内部不会触发阻塞等待。 中断处理函数中保护临界区,不能使用互斥体,因为它们也许导致睡眠。应该使

7、用自旋锁代替互斥体,但是一定要记住的是只有真正需要的时候才采用它。 中断处理函数不能与用户空间直接交互数据,因为它们经由进程上下文与用户空间建立连接。这也是为什么中断处理函数不能睡眠的第2个理由:调度器工作于进程之间,如果中断处理函数睡眠并被调度出去,它们怎么返回到运行队列呢? 中断处理函数一方面需要快速地出来,另一方面又需要完成它的工作。为了规避这种冲突,中断处理函数通常被分成2个部分。瘦小的上半部标志一个响应以宣称它已经服务了该中断,而重大的工作负载都被丢给了肥胖的下半部。下半部的执行被延后,在其执行环境中,所有的中断都是可以的。 中断处理函数不必是可重入的。当某中断被执行的时候,在它返回

8、之前,相应的IRQ都被禁止了。因此,与进程上下文代码不同的是,同一中断处理函数的不同实例不可能同时运行在多个处理器上。 中断处理函数可以被更高优先级IRQ的中断处理函数打断。如果你请求内核将你的中断处理函数作为快中断处理的话,此类中断嵌套将被禁止。快中断服务函数运行的时候,本处理器上的所有中断都会被禁止。在禁止中断或将中断标识为快中断之前,请注意中断屏蔽对系统性能的坏处。中断屏蔽的时间越长,中断延迟就会更长,或者说已经被产生的中断得到服务的延迟就会越久。中断延迟与系统真实的响应时间成反比。 函数中可以检查in_interrupt()的返回值以查看自身是否位于中断上下文。10、中断机制:当硬件处

9、理I/O等操作时,内核在此期间处理其他事物而不等待硬件完成,当硬件直至完成了请求的操作后,再通知内核回过头来处理,这就是中断机制。11、触发软中断:一个注册的软中断必须在被标记后才会执行,这被称作触发软中断(raising the softirq)。12、临界区:(critical region)访问和操作共享数据的代码段,整个临界区是一个不可分割的指令。13、同步:避免并发和防止竞争条件被称为同步(sysnchronization)。14、死锁:有一个或多个执行线程和一个或多个资源,每个线程都在等待其中的一个资源,但所有的资源都已经被占用了,所有线程都在相互等待,但它们永远不放弃已经占有的资

10、源,于是任何线程都无法继续,这便发生了死锁。15、竞争条件(race conditon):多个线程或者进程在读写一个共享数据时依赖于它们执行的相对时间,这种情形叫竞争。这样的多个线程或者进程可能处于同一个临界区之中,竞争条件就发生在这多个进程或者线程在读写数据时,其最终的结果依赖于多个进程的指令执行顺序。两个或多个执行线程处于同一个临界区中同时执行,这就是竞争条件。16、争用(lock contention)(8.4):确切应该是锁的争用,是指当锁正在被占用时,有其他线程试图获得该锁。17、自旋锁(9):Linux内核最常见的锁。一个执行线程要想访问被自旋锁保护的共享资源,必须先得到锁,而自旋

11、锁最多只能被一个可执行的线程持有。锁持有者在访问完共享资源后必须释放锁。而如果一个执行线程在获取自旋锁时,没有任何执行线程保持锁,则立即得到锁;若获取自旋锁时已经被持有,那么该线程就会一直进行“忙循环”“旋转”“等待锁重新可用”,直到所要自旋锁的保持者释放锁,请求锁的执行线程便能立即得到它。 18、屏障:所有可能重新排序和写的处理器提供了机器指令来确保顺序要求,同样也可以指编译器不要给定点周围的指令序列进行重新排序,这些确保顺序的指令叫屏障。19、文件系统(p167):文件系统是特殊的数据分层存储结构,它包括文件、目录和相关的控制信息,它负责管理和存储文件信息。文件系统的通用操作包含创建、删除

12、和安装等等。虚拟文件系统(VFS):作为内核子系统,为用户空间程序提供了文件与文件系统相关的接口。系统中的所有文件系统不但依赖VFS共存,而且也依靠VFS系统协同工作。通过虚拟文件系统,程序可以利用标准的unix系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作。21、软实时:内核调度进程,尽力使进程在它的限定时间到来前运行,但内核不保证总能满足这些进程的需求。22、延迟写:当进程往磁盘上写数据时,先往高速缓存中写,以便随后又读它时,能从高速缓存中读取,而不必启动磁盘读取。Linux采取了“延迟写”策略,即:如果缓冲区还没有写满,则不急于把缓冲区的内容写到磁盘上,而是在缓冲管理数据

13、结构中对该缓冲区设置延迟写标志,当高速缓存中的数据延迟到必须往磁盘上写的时候才进行写盘操作。(书上没有,不过看起来貌似正确)23、内核模块: 模块就是一个已编译但未连接的可执行文件。Linux是一个一体化内核,内核中各部件联系紧密,运行效率高;但是当因某种原因需要增加、扩充时,用户必须对内核全部编译一次,为弥补这个缺点,Linux建立了模块机制。从内核角度看,模块是运行时可连接、可删除的,包含了至少两个函数的代码段。这个代码段一旦被连接到内核,它就是内核的一部分,所以称为内核模块。从用户角度看,模块是内核的一个外挂的配件,需要时可将其挂接到内核,不需要时即可将其删除,它为用户提供了扩充内核功能

14、的?。24、索引节点:一个索引节点代表文件系统中(虽然索引节点仅当文件被访问时,才创建)的一个文件,它也可以是设备或者管道这样的特殊文件。25、current宏:在内核中,访问任务通常需要获得指向其进程描述符的指针,而Linux内核通过current宏查找当前正在运行进程的进程描述符。它从内核栈的尾端找到thread_info,然后从thread_info的task域中提取并返回task_struct的地址。26、proc文件系统:Linux的/proc目录是一种文件系统,即proc文件系统。与其他文件系统不同的是,proc文件系统是一个虚拟文件系统,存储的是当前内核运行状态的一系列特殊文件。

15、用户可以通过查看这些文件来了解有关的系统硬件状态以及当前运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。27、内核态 内核态是操作系统内核的一种运行模式,运行在该模式的代码,可以无限制地对系统存储、外部设备访问。28、用户态 用户态是指非特权执行状态,内核禁止该状态下的代码进行一些潜在危险的操作,如写入系统配置文件、杀掉其他用户进程、重启系统等等。二、问答题:1、简述linux内核特点(1.3)。答:Linux是单内核,但汲取了微内核的精华,其特点如下:1)支持动态加载内核模块,可动态的卸除和加载部分内核代码;2)支持对称多处理机制(SMP);3)内核可抢占,允许内核执行高优

16、先级的任务;4)独特的线程实现,内核不区分线程和其他一般进程,一样都是task;5)设备管理中提供具有设备类的面向对象的设备模型、热插拔事件、以及用户空间的设备文件系统;6)抛弃了Unix中拙劣的stream特性,忽略了一些实际上已经不会使用的过时标准;7)自由,公开开发模型自由务实发展。2、简述linux内核开发的差异(所注意的事项)(2.4)。答:1)不能访问C库,对内核而言C库太大了,但大部分常用C库函数在内核中都有实现;2)必须使用GNU C;3)缺乏内存保护机制,内核中的内存都不分页;4)浮点数很难使用,复杂繁琐,原则是不要在内核中使用浮点数;5)只有容积很小且定长的堆栈;6)内核支持异步中断、抢占

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号