Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打...
分类:
系统相关 时间:
2014-12-16 19:33:36
阅读次数:
390
1.从用户空间到内核空间的时候需要进行系统调用 2.系统调用通过swi指令实现,这个时候会有一个参数,存放到r7寄存器,用来指定要调用的内核态函数。 3.一般内核态的实际函数可以再任意的.c文件实现,但是必须在call.S里面加上相应的函数指针(添加表项) 4.而且要在unistd.h里面对参数进行...
分类:
系统相关 时间:
2014-12-15 10:22:20
阅读次数:
228
Android 标准的硬件驱动分为两个部分,一个是运行在linux内核里的硬件驱动,而另外一部分是运行在用户空间的硬件抽象层。采用这种方法,就可以使系统具有硬件无关性,也保护了部分厂商的利益。在 Android 从硬件到应用:一步一步向上爬 1 -- 从零编写底层硬件驱动程序
中已经有了编写硬件驱动到linux内核里的步骤,下面就要接着这个工程去看看怎么在硬件抽象层增加硬件模块和我们的内核驱动...
分类:
移动开发 时间:
2014-12-14 22:42:16
阅读次数:
283
通常程序访问的地址都是虚拟地址,用32位操作系统来讲,访问的地址空间为4G,linux将4G分为两部分。如图1所示,其中0~3G为用户空间,3~4G为内核空间。通过MMU这两部分空间都可以访问到实际的物理内存。
进程在用户态只能访问0~3G,只有进入内核态才能访问3G~4G
*进程通过系统调用进入内核态
*每个进程虚拟空间的3G~4G部分是相同的
*进程从用...
分类:
系统相关 时间:
2014-12-10 16:17:30
阅读次数:
278
内核中的并发和竞态 ================= 一般驱动程序运行在内核态中,只能调用内核空间中提供的函数,因此在处理并发和竞态时不能使用用户空间提供的库,如pthread库,内核有着自己的一套内部实现机制。 #并发及其...
分类:
其他好文 时间:
2014-12-09 12:32:41
阅读次数:
289
strace命令详解strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。 strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。 下面记录几个常用 option . 1 -f -F选项告诉strace...
分类:
其他好文 时间:
2014-12-08 12:17:06
阅读次数:
246
进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当...
分类:
系统相关 时间:
2014-12-08 10:35:22
阅读次数:
223
衡量LinuxCPU使用的指标需要关注以下地方:第一段需要关注的值:·使用率·在用户空间所消耗的时间百分比·在系统空间锁消耗的时间百分比·消耗在IO等待上的时间如果一个主机上有大量的cpu消耗在IO等待上,那么说明IO活动非常频繁,而IO子系统性能非常差。因此我们看到wite的时..
分类:
系统相关 时间:
2014-12-07 06:55:22
阅读次数:
348
阻塞I/O 说明1:当上层应用Application1调用recv系统调用时,如果对等方没有发送数据(Linux内核缓冲区中没有数据),上层应用Application1将阻塞[默认:被Linux内核阻塞)说明2:当对等方发送了数据,Linux内核recv端缓冲区数据到达,内核会把数据copy给用户空间。然后上层应用Application1解除阻塞,执行下一步操作。 非阻塞I/O 说明1: 上层应...
分类:
其他好文 时间:
2014-12-06 16:53:38
阅读次数:
208