liunx内核

本文详细介绍了Linux内核的五大组成部分,重点讲解了进程的定义、状态及其创建,中断与异常的区别,内核同步机制,以及定时测量和进程调度策略。强调了自旋锁在内核同步中的作用,并探讨了如何优化响应时间和提高系统效率。
摘要由CSDN通过智能技术生成

linux内核

liunx内核


前言

Linux内核的重要部分
Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。


提示:以下是本篇文章正文内容,下面案例可供参考

一. 进程

进程的定义:进程是程序执行时的一个实例。它是充分描述程序已执行到何种出差呢高度的数据结构的汇集。
线程:
协程:

进程的定义:

  • 进程描述符
  • 进程的状态:可运行状态(TASK_RUNNING)、可中断的等待状态(TASK_INTERRUPTIBLE)、不可中断的等待状态(TASK_UNINTERRUPTIBLE)、暂停状态(TASK_STOPPED)、跟踪状态(TASK_TRACED)、僵死状态(EXIT_ZOMBIE)、僵死撤销(EXIT_DEAD)。

创建进程:clone()、fork()、vfork()。

进程的切换:1、切换页全局目录以安装一个新的地址空间;2、切换内核态堆栈和硬件上下文,硬件上下文包含内核执行新进程所需要的所有信息,包括CPU寄存器。

内存寻址:
逻辑地址 --> 线性地址 --> 物理地址
(段) (页)

二. 中断和异常

异常:同步中断是当指令执行时由CPU控制单元产生的;
中断:异步中断是由其他硬件设备依照CPU时钟信息随机产生的。

中断可以抢断异常,而异常不可以抢断中断。
硬中断和软中断的区别:

  • 软中断是执行中断指令产生的,而硬中断是由外设引发的。
  • 硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
  • 硬中断是可屏蔽的,软中断不可屏蔽。
  • 硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
  • 软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。

软中断实现的关键函数:可延迟函数和通过工作队列来执行的函数。

三. 内核同步

内核抢占:如果进程正执行内核函数,即使它在内核态,允许发生内核切换,这个内核就是抢占的。

针对内核的抢占或者多CPU对共享数据的竞争,需要使用同步技术。
同步技术:

技术说明使用范围
每CPU变量在CPU之间复制数据结构所有CPU
原子操作对一个计数器原子地“读-修改-写” 的指令所有CPU
内存屏障避免指令重新排序本地CPU或所有CPU
自旋锁加锁时忙等待所有CPU
信行量加锁时阻塞等待(睡眠)所有CPU
顺序锁基于访问计数器的锁所有CPU
本地中断的禁止禁止单个CPU上的中断处理本地CPU
本地软中断的禁止禁止单个CPU上的可延迟函数处理本地CPU
读-拷贝-更新(RCU)通过指针而不是锁来访问共享数据结构所有CPU

自旋锁:只要内核控制路径获得自旋锁(读/写锁、顺序锁、RCU读锁),就禁用本地中断或本地软中断,自动禁用内核抢占。自旋锁的原语仅仅是禁止或者启用内核强占。

设计思想:最好的同步技术是把设计不需要同步的内核放在首位。

四. 定时测量

定时测量是由基于固定频率振荡器和计数器的几个硬件电路完成。

多处理器系统可以依赖两种不同的时钟中断源:可编程间隔定时器或高精度事件定时器产生的中断,以及CPU本地定时器产生的中断。

五. 进程调度

调度策略定义:决定什么时候以怎样的方式选择一个新进程运行的规则。
调度中要解决的问题:

  • 进程响应时间尽可能短
  • 后台作业的吞吐量尽可能高
  • 尽可能避免进程的饥饿现象
  • 低优先级和高优先级进程的需要尽可能调和。

进程的分类:

  • 交互式进程
  • 批处理进程
  • 实时进程

时间片的设置:时间片太短,由进程切换引起的系统额外开销会非常高;时间片太长,进程看起来就不是并发执行的。因此,Linux才去单凭经验的方法,选择尽可能长、同时能保持良好响应时间的时间片。

总结

提示:这里对文章进行总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值