linux系统可以使用ppt功能不,Linux 系统内核.ppt

《Linux 系统内核.ppt》由会员分享,可在线阅读,更多相关《Linux 系统内核.ppt(20页珍藏版)》请在人人文库网上搜索。

1、Linux 系统内核,王鹏 2013418,Linux系统内核结构,单内核 单内核也叫集中式操作系统,整个系统可以分成用户程序、系统调用以及硬件控制三个层次和若干个模块。在核心态运行时每一个模块是一个独立的二进制映像或者进程,并且通过直接调用其它模块中的函数来实现通信。,Linux系统内核结构,图1 单内核架构,Linux系统内核结构,微内核 微内核模式是面向对象理论在操作系统设计中的产物,通过对系统逻辑功能的划分,把操作系统结构中的处理器管理,存储器管理,设备管理和文件管理等高级功能服务模块尽可能从内核中分离出来,成为在一定的特权方式下运行并且具有独立运行空间的独立进程,同时各个进程之间以消。

2、息机制来完成信息交换。在内核中仅仅只保留少量的基本功能,如内核进程调度与通信以及内核的内存管理等,使内核变得更加简洁可靠。,Linux系统内核结构,图2 微内核架构,Linux系统内核结构,由于充分利用了分层结构和模块化的特点,所以实时系统通常多采用微内核的体系结构,非常适合于嵌入式环境中高效、紧凑、简洁、易扩展、易剪裁等要求。Linux系统总体上可以分为进程调度模块、内存管理模块、文件系统模块、进程通信模块以及网络接口模块。,Linux系统内核结构,图3 Linux系统内核模块结构,Linux系统内核结构,Linux系统采用的是单内核模式,同时在单内核模式设计中引入了许多微内核的思想,实践证。

3、明这种单内核模式中吸收某些微内核的设计实现方法,使单内核结构更加紧凑,功能更加强大,执行效率更高,性能更稳定。,多线程技术及优势,进程是程序执行的动态过程,是系统分配资源的最小单位。而线程是更小的执行实体,是进程的分支,其本身不占用系统资源,而是与其所属的进程共享系统的软硬件资源。创建和撤销另一个进程的工作可以由同一个线程完成,多个线程可以同时进行。就绪、阻塞、运行,这三种状态是线程的基本状态。,多线程技术及优势,多线程技术旨在提高CPU的性能,一个CPU同能能执行多个程序,能分享同一个CPU的资源。但是多线程技术并不等于是多个CPU,当两个线程同时需要同一个资源的时候,只有一个能够得到,另一。

4、个就要等待,进而暂时停止,直到资源限制方可继续。 使用多线程技术的原因有三,其一,与进程相比,线程这种多任务操作方式,能最大程度的节约系统的耗费,其耗费大约是进程的1/30左右。其二,线程之间方便通信。其三,多线程作为一种多任务并发的工作机制,能进一步提高应用程序响应,改善程序结构,提高多CPU效率。,Linux多线程互斥问题,各线程之间可以共享系统的软硬件资源,但有些资源一次只能为一个线程使用,例如打印机、变量等,这类资源称为临界资源。对于这些资源的调用,被安排在某一代码段中,此代码段可能被反复执行,若有两个或两个以上这样的代码段要竞争共享资源,此代码段即为临界区。线程之间的互斥可以保证资源。

5、的正确和完整性。线程之间通过互斥关系相互竞争,但这与其本身无关。,Linux多线程互斥问题,Linux解决内核态中互斥问题,有四种机制:屏蔽中断、原子操作、信号量和自旋锁。原子操作和中断屏蔽是硬件在处理互斥问题中最常用的做法。原子操作和等待队列可以看做是信号量互斥解法的基础层面,此外,信号量的实现又是以自旋锁作为基础。,屏蔽中断,CPU在必要的时候可以进行屏蔽中断。通过中断处理程序完成的称谓软中断。中断属于异步事件,发生的先后与正在运行中的进程无关。中断的事件长短很重要,过长的中断很容易造成数据的丢失。因此,在中断屏蔽后,要求当前的内核应尽快执行完临界区代码。但如果开中断,又容易造成互斥,Li。

6、nux在解决这项矛盾时,采用的是分段处理的方法。将关建性操作放在前段完成,后段可以稍后执行,或可以把多次后段执行部分中的相关部分合并执行。,屏蔽中断,对当前正在运行的进程进行中断,不是随机发生的,要满足严格的规则: (1)正在内核态中被执行的进程代码是不能被中断的,也就是只有在用户态中被执行的进程代码才能被中断; 2)对于当前进程引起的异常处理代码,不能影响中断处理程序的执行; 3)中断处理程序可以中断任何一个进程,也可以中断异常处理代码的执行。同时也可以若干中断处理程序交错执行。,原子操作,原子操作是一条汇编语言指令,其大部分均属于芯片级。是指那些在执行的过程中不会被其他代码中断的操作。 L。

7、inux内核实现原子操作的函数很多,分为正对Bit变量和整数变量两类,不论是哪类,在被内核代码调用后,均不会被中断处理代码中断。这些函数的操作形式均与所属CPU构架相关。原子操作包括读、写、加、减的功能等一系列操作。,信号量,Linux为了保护临界区,设置了若干信号量,只有得到信息的进程才能执行代码,使用临界资源,否则将进人等待队列。 信号量的结构被定义在,semaphore.h中 Struet semaphoreatomic_t Count; Int sleepers; Wait_queue_ead_wait; 核内的信息量有down()和up(),分别表示申请资源和释放资源。,信号量,(1。

8、)Count计数器。用以记录资源的个数。当为正数时,表示有可用资源,初始值为1;当为0或负数时,表示无可用资源,并有进程处于等待状态。当资源被使用时,Count-l;当释放资源后,Count+1; (2)Wakeup()正在等待资源的进程处于休眠状态,当资源被释放,Count为1时,Linux内核会选在一个进程进行唤醒并使用此资源; (3)wait_queue是Linux内核的一个基本功能单位。当没有可用资源,进程被挂起,并进人到队列中。,信号量,信号量的操作过程:Linux把count的初始值设为1,Linux选择一个进程使用此资源,count作减一操作count=0,表示没有资源可用,此时。

9、所有请求使用资源的进程进人到等待队列,进人到休眠状态,当有资源被释放时,count做加一的操作count=1,wakeup函数将进行唤醒操作,被唤醒的进程使用资源。,自旋锁,自旋锁(spin lock,当临界代码较短时,使用自旋锁是非常方便的,因为它可以节省上下文切换的事件。当加锁时,若已处于锁定状态,应用一个死循环测试锁的状态,直到成功取得锁。 自旋锁有两个基本组成部分:spin_lock_string,用于对锁进行减1操作,并循环检查锁值,直到大于0;spin_unlock_string,用于对锁赋值为1。当有进程在一个CPU上运行时,自旋锁被锁定。Spin_lock的值减1,当另一个CPU要运行此进程时,会发现锁已经被锁上,只有当锁解开,值大于0时,才能被另一个CPU使用。,自旋锁,特别需注意的是,自旋锁非常容易出现死锁的情况。如果发生,整个系统就会被挂起。 因此锁定的事件要尽可能短;不要在锁定时,调用如访问用户内存、内核态分配内核、使用信号量等易引起休眠的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值