linux内核
LevinLin
本博客现只用于学习用,可能会转载他人的知识,若有涉及到您的版权问题,请与我联系。
> 飛雪迎春到﹐風雨送春歸
> 已是寒崖百丈冰﹐尤有花枝俏
> 俏也不爭春﹐只把春來報
> 待得山花爛漫時﹐他在叢中笑
展开
-
提供机制而不是策略
Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。区别对待机制(mechanism)和策略(policy)是Unix设计中的一大亮点。大部分的编程问题都可以被切割成两个部分:“需要提供什么功能”(机制)和“怎样实现这些功能”(策略)。如果由程序中的独立部分分别负责机制和策略的实现,那么开发软件就更容易,也更容易适应不同的需求。 开源-展现在我们面前的是数以千转载 2012-12-28 11:11:34 · 3672 阅读 · 0 评论 -
linux内核空间和用户空间的区别及交互
linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。 Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G.Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间".而将较转载 2013-04-18 22:38:55 · 1244 阅读 · 0 评论 -
Linux 系统内核空间与用户空间通信的实现与分析
多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持。本文总结并比较了几种内核态与用户态进程通信的实现方法,并推荐使用 netlink 套接字实现中断环境与用户态进程通信。 1 引言 Linux 是一个源码开放的操作系统,无论是普通用户还是企业用户都可以编写自己的内核代码,再加上对标准内核的裁转载 2013-04-18 21:27:12 · 591 阅读 · 0 评论 -
用户态切换到内核态的3种方式
a. 系统调用 这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。 b. 异常 当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发原创 2013-04-18 20:59:51 · 6504 阅读 · 1 评论 -
《Linux内核设计与实现》- 进程的调度
主要内容: 什么是调度调度实现原理Linux上调度实现的方法调度相关的系统调用 1. 什么是调度 现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。 这个管理程序就是调度程序,它的功能说起来很简单: 决定哪些进程运行,哪些进程等待决定每个进程运行多长时间 此外,为了获得更好的用户体转载 2013-01-16 11:46:16 · 642 阅读 · 0 评论 -
《Linux内核设计与实现》- Linux的进程
进程是所有操作系统的核心概念,同样在linux上也不例外。 主要内容: 进程和线程进程的生命周期进程的创建进程的终止 1. 进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的。 Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的进程。 所以下面只讨论进程,只有当线程与进程转载 2013-01-16 11:41:51 · 830 阅读 · 0 评论 -
编译linux内核源码 ubuntu
linux内核编译。 首先,sudo apt-get install linux-source 会自动安装当前版本内核的源代码到 /usr/src 然后,进入其文件夹,tar xjf linux-2.6.xx.tar.bz2 解压到相应的文件夹,再进入。然后如果想要节省配置的时间,可以 cp /boot/config-`uname -r` ./.config 。把当前系统的转载 2013-01-05 20:45:19 · 551 阅读 · 0 评论 -
内核中断机制
中断是Linux内核驱动程序中非常重要的地方,但实际上,中断处理程序也没有什么与众不同的地方,它们也就是普通的C程序。 唯一独特的地方就是处理程序是在中断时间内运行的,因此它的行为会受到一些限制。这些限制与我们的内核定时器中看到的一样。 a)处理例程不能想用户空间发送或接受数据,因为它不是在任何进程的上下文中执行的. b)处理例程也不能做任何可能发生休眠的操作转载 2013-01-03 13:57:52 · 593 阅读 · 0 评论 -
内核抢占
早期的Linux内核是不可抢占的。它的调度方法是:一个进程可以通过schedule()函数自愿地启动一次调度。非自愿的强制性调度只能发生在每次从系统调用返回的前夕以及每次从中断或异常处理返回到用户空间的前夕(这种强制性调度又叫用户抢占)。但是,如果在系统空间发生中断或异常是不会引起调度的。这种方式使内核实现得以简化。但常存在下面两个问题: 如果这样的中断发生在内核中,本次中断返回是不会引起调转载 2013-01-03 14:28:17 · 484 阅读 · 0 评论 -
内核库函数
当编写驱动程序时,一般情况下不能使用C标准库的函数。Linux内核也提供了与标准库函数功能相同的一些函数,但二者还是稍有差别。 类别 函数名 功能 函数形成 参数 描述 字符串转换 simple_strtol 把一个字符串转换为一个有符号长整数 long simple_strt转载 2013-04-18 21:20:59 · 808 阅读 · 0 评论