随笔分类 - linux
摘要:7. exit与_exit的差异 为了理解这两个系统调用的差异,先来讨论文件内存缓存区的问题。 在linux中,标准输入输出(I/O)函数都是作为文件来处理。对应于打开的每个文件,在内存中都有对应的缓存,每次读取文件时,会多读一些记录到缓存中,这样在下次读文件时,就在缓存中读取;同样,在写文件时也是
阅读全文
摘要:uart 是一种非常之常见的总线,比如DEBUG信息输出,小数据量数据传输,485,以及蓝牙的控制,GPS,很多都是通过uart 进行数据传输并进行控制。 在Linux kernel 内部,uart 通常是作为 一个 tty 设备对其进行控制,也是就是一个字符设备文件,可对其进行读写操作。 kern
阅读全文
摘要:此驱动程序之前的按键驱动程序(中断方式)上加以优化。用到异步通知。对于内核来讲,既然用户想得到的是按键后的状态,那么自然不必时时都要read状态。当它检测到中断发生变主动通知用户,用户再来读。这样,用户空间、内核就可以着手干点其它的事情,而不必忙等按键按下或释放。那么就先从应用程序上面看。 怎么设置
阅读全文
摘要:1、查看TCP连接状态 2、查找请求80端口最多的20个IP连接 3、查找较多time_wait连接 4、找查较多的SYN连接 5、根据端口列进程 6、获取Web访问前10位的ip地址 7、访问次数最多的文件或页面,取前20 8、列出传输最大的几个rar文件 9、列出输出大于200000byte(约
阅读全文
摘要:谈论进程上下文 、中断上下文 、 原子上下文之前,有必要讨论下两个概念: a -- 上下文 上下文是从英文context翻译过来,指的是一种环境。相对于进程而言,就是进程执行时的环境; 具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。 b -- 原子 原子(atom)本
阅读全文
摘要:前面我们已经学习了platform设备的理论知识Linux 设备驱动开发 —— platform 设备驱动 ,下面将通过一个实例来深入我们的学习。 一、platform 驱动的工作过程 platform模型驱动编程,platform 驱动只是在字符设备驱动外套一层platform_driver 的外
阅读全文
摘要:多进程之间通信方式: 文件映射:本地之间 共享内存:本地之间 匿名管道:本地之间 命名管道:跨服务器 邮件槽:一对多的传输数据,通常通过网络向一台Windows机器传输 剪切板:本地之间 socket:跨服务器 多线程之间通信方式: 全局变量 自定义消息响应 多线程之间同步机制: 临界区:不可以跨进
阅读全文
摘要:上面讲了很多关于nginx的进程模型,接下来,我们来看看nginx是如何处理事件的。 有人可能要问了,nginx采用多worker的方式来处理请求,每个worker里面只有一个主线程,那能够处理的并发数很有限啊,多少个worker就能处理多少个并发,何来高并发呢?非也,这就是nginx的高明之处,n
阅读全文
摘要:注:以下大部分内容摘自Linux内核编程入门篇和linux内核完全注释 在工作的这段时间,发现我的visio画图熟悉了点点,总喜欢把什么源码啊,结构啊之类的就当作流程图来画来理解,因为对于图,有一个很直观的认识,所以接下去也是以图为中心。 关于linux内核体系结构 说到操作系统,我们都会知道win
阅读全文
摘要:常用调度算法总结 分类: 操作系统 2013-08-10 17:59 71人阅读 评论(0) 收藏 举报 目录(?)[+] 先来先服务队列 最短优先优先队列 高优先权优先调度算法 优先权调度算法的类型 高响应比优先调度算法 基于时间片的轮转调度算法 时间片轮转法 多级反馈队列调度算法 电梯调度算法
阅读全文
摘要:首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference): 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作
阅读全文
摘要:【摘要】前文我们分析了一个虚拟硬件的网络驱动例子,从中我们看到了网络设备的一些接口,其实网络设备驱动和块设备驱动的功能比较类似,都是发送和接收数据包(数据请求)。当然它们实际是有很多不同的。 1、引言 首先块设备在/dev目录下有设备节点,而网络设备没有这样的设备入口。read,write等常规的文
阅读全文
摘要:两台服务器 192.168.1.1 【WEB服务器】 192.168.1.2 【录音服务器】 说明 在192.168.1.2服务器上每天有许多录音文件生成,192.168.1.1作为WEB服务器,里面有个应用需要播放录音文件,于是需要NFS把192.168.1.2的录音目录远程挂载到192.168.
阅读全文
摘要:深入理解C语言的函数调用过程 本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程,以加深对一些基础知识的理解。 先看一个最简单的程序: 点击(此处)折叠或打开 /*test.c*/ #include <stdio.h> int foo1(int m,int n,int p) { int x
阅读全文
摘要:本题目也可以说为: 描述从浏览器打开http://www.oldboyedu.com地址回车发送请求到看到页面的过程? 打开浏览器输入网址回车,到看到页面的过程 大纲: 1、用户访问网站流程框架 2、DNS解析原理 ***** 3、tcp/ip三次握手原理 ***** 4、http协议原理(www服
阅读全文
摘要:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lidao.blog.51cto.com/3388056/1914205 老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第33天 第八周 2017年4月24日 命
阅读全文
摘要:做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等。因此在开发系统的时候,表结构设计是否合理,sql语句是否标准,写出的sql性能是否优化往往会成为公司衡量程序员技术水平的标准。 我们程序员不是dba,不需要时刻关注sql运行时间,想方设法优化表结
阅读全文
摘要:Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解 前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢?
阅读全文
摘要:网络设备介绍 网络设备是计算机体系结构中必不可少的一部分,处理器如果想与外界通信,通常都会选择网络设备作为通信接口。众所周知,在 OSI(Open Systems Interconnection,开放网际互连)中,网络被划分为七个层次,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层
阅读全文
摘要:from:深入分析Linux内核源码(http://oss.org.cn/kernel-book/) 时钟中断的产生 Linux的OS时钟的物理产生原因是可编程定时/计数器产生的输出脉冲,这个脉冲送入CPU,就可以引发一个中断请求信号,我们就把它叫做时钟中断。 “时钟中断”是特别重要的一个中断,因为
阅读全文