![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux OS
文章平均质量分 74
zgolee
我要站在什么位置,才能触及阳光、感受幸福呢?
展开
-
并行性和并发性的区别
前段时间被别人问起关于内核并发性的问题,当时随便说了一下,但后来细想,我还真不知道什么是并发性,回想一下当年在学校里学操作系统这门课程的时候,这两个概念都是一知半解的,更别说这么几年过去了,更加就模糊了。 网上搜了一大堆资料,下面来整理一下思路! 所谓并行性(parallelism)是指在同一时刻或是同一时间间隔内完成两种或两种以上性质相同或不相同的工作。只要时间上互相重叠,就存在并行性。严格来讲,把两个或多个事件在同一时刻发生的并行性叫做同时性(simultaneity);而原创 2010-12-28 11:48:00 · 9934 阅读 · 0 评论 -
linux内核定时器使用及原理
<br />下面只是原文的一部分,全文参考网址:<br />http://wenku.baidu.com/view/cab7028fcc22bcd126ff0c58.html<br /> <br />内核定时器使用<br /> <br /><br />内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 <linux/timer.h> 和 kernel/timer.c 文件中。<br />被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程转载 2011-05-09 11:40:00 · 28058 阅读 · 0 评论 -
字符设备管理机制分析(一)
字符设备是linux最常见的一种设备类型,也是相对比较简单的。Linux文件系统的注册是先注册文件系统的类型,比如sysfs、devtmpfs、rootfs等,然后再初始化一个文件系统实例添加进系统中。字符设备的注册其实也是采用这种方式:先向系统注册一个字符设备类型,包括主次设备原创 2011-07-24 17:33:21 · 2607 阅读 · 0 评论 -
字符设备管理机制分析(二)
2.2 添加字符设备实例 添加设备实例和其他的设备添加一样,都是调用函数device_add()来实现。 以input子系统中添加event设备为例:@ kernel/driver/input/evdev.c -- evdev原创 2011-07-24 17:36:47 · 4772 阅读 · 0 评论 -
Android系统启动流程 -- bootloader
摘要:本文讲解Android系统在启动过程中的关键动作,摈弃特定平台之间的差异,讨论共性的部分,至于启动更加详细的过程,需要结合代码分析,这里给出流程框架,旨在让大家对开机过程更明了。 关键词:U-boot、Linux、Android 目录: 第一部分:Bootloader启动一、Bootloader的定义和种类二、Arm特定平台的Bootloader三原创 2011-11-27 20:32:11 · 60408 阅读 · 7 评论 -
Android系统启动流程 -- linux kernel
第二部分:linux启动 一、zImage是怎样炼成的? zImage是linux内核编译之后产生的最终文件,它的生成过程比较复杂,这里不谈编译过程,只聊聊编译的最后阶段: 1. arm-linux-gnu-ld用arch/arm/kernel/vmlinux.lds、arch/arm/kernel/head.o、arch/arm/kernel/init_task原创 2011-11-30 21:56:56 · 9786 阅读 · 2 评论 -
Android系统启动流程 -- android
第三部分:Android启动 Android的启动过程是从进程init开始的,所以它是后续所有进程的祖先进程。一、init进程源码位于system/core/init目录。主要做了以下事情:1. 重新设置子进程终止时信号SIGCHLD的处理函数。act.sa_handler = sigchld_handler; //调用了wait函数等待子进程退出。act.原创 2011-11-30 22:04:06 · 17032 阅读 · 5 评论 -
Linux下的多线程编程
还就没碰这块,生疏了,今天遇到一个多线程的问题,搜到了一篇好文,转载了。原文网址:http://blog.csdn.net/sailor_8318/article/details/3867074 Linux下的多线程编程Sailor_forever sailing_9806@163.com 转载请注明http://blog.csdn.net/sailor_8318/archi转载 2011-12-05 17:42:57 · 1938 阅读 · 0 评论 -
Linux 内核中的 GCC 特性
原文地址:http://www.ibm.com/developerworks/cn/linux/l-gcc-hacks/更多关于gnu gcc对c/c++的扩展,参考gnu在线文档:http://gcc.gnu.org/onlinedocs/ Linux 内核中的 GCC 特性 GCC 和 Linux 是出色的组合。尽管它们是独立的软件,但是 Linux 完全依靠 GCC 在新转载 2011-12-22 17:53:47 · 2101 阅读 · 0 评论 -
Linux 技巧:谈 Linux GNU 实用工具兼容性
http://www.ibm.com/developerworks/cn/linux/l-cn-posix/index.html Linux 系统的兼容性问题 POSIX 定义:POSIX 表示可移植操作系统接口:Portable Operating System Interface,电气和电子工程师协会(Institute of Electrical and Electron转载 2011-12-22 17:50:23 · 2027 阅读 · 0 评论 -
Linux 2.6中断下半部机制分析
http://hi.baidu.com/starmyth/blog/item/5ee2f6ceb80f730093457e70.htmlLinux 2.6中断下半部机制分析作者:流星摘要 本文主要从使用者的角度对Linux 2.6内核的下半部机制softirq、tasklet和workqueue进行分析,对于这三种机制在内核中的具体实现并未进行深入分析,倘若读者有兴趣了解,可转载 2012-01-31 19:39:59 · 2740 阅读 · 0 评论 -
FAT over NAND Flash
文章转自:http://rubynroll.iteye.com/blog/375771 引子最近有一个项目需要在NAND FLASH裸片上建立文件系统,由于必须通过USB给Windows访问,所以FAT是唯一的选择。由于FAT不是为Flash设计,因此需要透过FTL(Flash Translation Layer)来访问NAND FLASH。 原本以为FTL的支持在嵌入式Lin转载 2012-02-08 11:01:56 · 2718 阅读 · 0 评论 -
select(poll)系统调用实现解析(一)
上层要能使用select()和poll()系统调用来监测某个设备文件描述符,那么就必须实现这个设备驱动程序中struct file_operation结构体的poll函数,为什么?因为这两个系统调用最终都会调用驱动程序中的poll函数来初始化一个等待队列项, 然后将其加入到驱动程序中的等待队列头,这样就可以在硬件可读写的时候wake up这个等待队列头,然后等待(可以是多个)同一个原创 2011-06-26 20:23:00 · 32663 阅读 · 8 评论 -
select(poll)系统调用实现解析(三)
三、讨论几个细节 3.1、fop->poll() fop->poll()函数就是file_operations结构体中的poll函数指针项,该函数相信很多人都知道怎么写,网上大把的文章介绍其模板,但是为什么要那么写,而且它做了什么具体的事情?本小节来揭开其神秘面纱,先贴一个模板上来。 static unsigned int XXX_poll(st原创 2011-06-26 20:29:00 · 15242 阅读 · 2 评论 -
select(poll)系统调用实现解析(二)
二、重要结构体之间关系 比较重要的结构体由四个:struct poll_wqueues、struct poll_table_page、struct poll_table_entry、struct poll_table_struct,这小节重点讨论前三个,后面一个留到后面小节。 2.1、结构体关系每一个调用select()系统调用的应用进程都会存在一个stru原创 2011-06-26 20:27:00 · 15350 阅读 · 0 评论 -
并发环境中多进程之间的关系
<br />进程并发运行的环境中,多个进程之间存在如下竞争和合作的关系:<br />- 进程中的资源争用(间接作用)<br />当并发进程竞争使用同一个资源时,它们之间就会发生冲突。为了避免冲突,当一个进程获得资源时,另一个进程必须等待。这种情况需要通过互斥机制来解决。<br />- 进程间通过共享的合作(间接作用)<br />一个进程等待另一个进程的执行,并以另一个进程的执行结果作为本进程的执行条件,就形成了同步机制<br />- 进程间通过通信的合作原创 2011-01-05 14:00:00 · 10775 阅读 · 0 评论 -
《linux内核设计与实现》 - 读书笔记:内核同步介绍
<br />多年之前,在单一处理器的时候,只有在中断发生的时候,或者在内核代码中显示地请求重新调度,执行另一任务的时候,数据才有可能被并发访问。从2.0开始,内核开始支持对称多处理器,这就意味着内核代码可以运行在两个或者更多的处理器上,因此,如果不加以保护,运行在两个不同处理器上的内核代码完全可能在同一时刻并发访问共享数据。随着2.6内核的出现,linux内核以发展成为抢占式内核,这意味这不加保护的情况下,调度程序可以在任何时刻抢占正在运行的内核代码,重新调度其他进程执行。<br /> <br />并发与竞原创 2011-01-07 15:08:00 · 1421 阅读 · 0 评论 -
linux内核线程创建销毁机制
<br />这个话题乍一听貌似比较大,其实线程创建本身就是一件很平常的事情。<br />下面将要介绍的是,新版linux中创建内核线程的机制做了一些变化(其实本质没变,最终还是调用do_fork()来实现),和控制线程的时候需要注意的地方。<br /> <br />本文引用的几个源码文件:<br />@ kernel/kernel/kthread.c<br />@ kernel/include/linux/kthread.h<br />@ kernel/include/linux/wait.h<br />@原创 2011-05-08 19:27:00 · 8580 阅读 · 0 评论 -
linux进程调度浅析
<br />原文地址:<br />http://cchxm1978.blog.163.com/blog/static/35428253201092910491682/<br />相当不错的文章,读了后收藏,多谢博主分享!<br /> <br />操作系统要实现多进程,进程调度必不可少。<br />有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱离了实际环境,这些结论是比较片面的。<br /><br />而进程调度究竟转载 2011-04-11 16:45:00 · 1241 阅读 · 0 评论 -
linux进程状态浅析
<br />原文地址:<br />http://cchxm1978.blog.163.com/blog/static/35428253201092994955153/<br />相当不错的文章,读了后收藏,多谢博主分享!<br /> <br />众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。<br /> 在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同转载 2011-04-11 16:09:00 · 2102 阅读 · 0 评论 -
linux中断线程化
<br />引用网址:<br />http://edu.codepub.com/2010/0209/20378.php linux的中断线程化实现<br />http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/index.html <br />Linux 内核中断内幕<br /><br /><br /><br /><br /><br />中断线程化介绍(Interrupt Threads)<br />在嵌入式领域,业界对 L转载 2011-04-11 17:44:00 · 3193 阅读 · 0 评论 -
工作队列实现机制(一)
walle project android 2.2 and linux 2.6.32一、工作项、工作队列和工作者线程把推后执行的任务叫做工作(work),描述它的数据结构为work_struct ,这些工作以队列结构组织成工作队列(workqueue),其数据结构为workqueue_struct ,而工作线程就是负责执行工作队列中的工作。系统默认的工作者线程为event原创 2011-06-09 10:52:00 · 6465 阅读 · 0 评论 -
工作队列实现机制(二)
三、默认工作队列和工作者线程创建过程系统默认的工作队列名称是:keventd_wq, 默认的工作者线程叫:events/n, 这里的n是处理器的编号, 每个处理器对应一个线程。比如,单处理器的系统只有events/0这样一个线程。而双处理器的系统就会多一个events/1线程。默认的工作者线程会从多个地方得到被推后的工作。许多内核驱动程序都把它们的下半部交给默认的原创 2011-06-09 10:57:00 · 6192 阅读 · 0 评论 -
THIS_MODULE ?
<br /> 一直都在耿耿于怀,这个THIS_MODULE到底是个什么玩意,linux内核中无处不在的东西。今天上网搜了一下,算是基本明白了。网上牛人写的已经比较详细,另外目前暂时没有时间往更深层次分析,所以直接贴过来得了。。。<br /> <br />转帖网址:<br />http://blog.csdn.net/a954423389/archive/2010/12/27/6101369.aspx<br /> <br />源码位置:<br /><br />@ kernel/module.c<b转载 2011-04-23 16:42:00 · 17546 阅读 · 0 评论 -
select(poll)分析背景
我们编写驱动程序的时候,通常需要告诉上层应用程序设备的状态:是否可读写。 应用程序可以直接通过read/write系统调用(阻塞和非阻塞模式)进入内核态驱动程序,那么驱动程序的read/write至少需要支持阻塞和非阻塞模式的读写: 上层阻塞模式调用read时,如果设备驱动的read_buffer中没有数据可以供上层读取,就让该进程睡眠(阻塞)直到有数据才被唤醒,然后取到数据返回用户态;如原创 2011-06-26 20:16:00 · 2151 阅读 · 1 评论 -
select(poll)在应用程序中如何使用
select()和poll()系统调用的本质一样,前者在BSD UNIX中引入的,后者在System V中引入的。 一、select应用程序中最广泛用到的是BSD UNIX中引入的select()系统调用,其原型如下:int select(int maxfdp, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct原创 2011-06-26 20:18:00 · 3116 阅读 · 0 评论 -
Linux下如何创建loop device
原文来自:http://tomszrp.itpub.net/post/11835/487815 在Linux中,有一种特殊的块设备叫loop device,这种loop device设备是通过影射操作系统上的正常的文件而形成的虚拟块设备。因为这种设备的存在,就为我们提供了一种创建一个存在于其他文件中的虚拟文件系统的机制.下面是一个示例:第一步:create a file with转载 2012-02-08 11:03:23 · 4270 阅读 · 0 评论