自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Shine's Blog

Coding Life~~~

  • 博客(16)
  • 收藏
  • 关注

原创 linux内核设计与实现--内存管理

linux内核设计与实现--内存管理页(page)内核把物理页作为内存管理的基本单位. MMU以页大小为单位来管理系统中的页表.32位系统的页大小一般为4KB, 64位系统的页大小一般为8KB.内核用strcut page结构来表示系统中的每个物理页. 每个物理页有自己的flag(状态标识), count(引用计数), virtual(虚拟地址)域. 区(zone)

2015-10-29 14:44:59 659

原创 linux内核设计与实现--内存寻址

如果这个世界上只有RISC架构的处理器的话, 内存寻址就非常简单了, 无非是虚拟地址转物理地址什么的. 但是由于有X86的存在, 内存管理复杂了许多. 由于历史影响, X86不得不一直保留着传统的段式寻址方式. 内存地址在X86下有逻辑地址(段+偏移量), 线性地址(虚拟地址), 和物理地址.对于X86架构来说, 分段处理单元始终都是在工作的, 所有对于X86架构, C语言操作指针

2015-09-26 22:24:21 738

原创 Linux的进程间通信(信号)

Linux的进程间通信(信号)信号的本质软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。异步意味着我们不需要创建单独的线程来接收信号, 信号在软件层次上是对中断机制的一种模拟。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为

2015-09-17 15:21:57 784

原创 判断子网掩码的合法性

我们知道, 对于一个不为0的数字a, 如果 a & (a-1) 为0的话, 则a是2的n次幂. 完整的c语言表达式如下.if (a && (a & (a-1)) == 0)         //a是2的n次幂对于32位的子网掩码x, 我们知道规则: 前n个bit为1, 后m个bit为0. 我们进行2进制取反的话, ~x就是: 前n个bit为0, 后m个bit为1. 再加上1(~x +

2015-09-16 16:50:07 2706

原创 Linux下的进程状态

Linux下的进程状态一般来说, Linux中的进程状态主要有如下几种:1.        R (TASK_RUNNING),可执行状态。2.        S (TASK_INTERRUPTIBLE),可中断的睡眠状态。3.        D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态。4.        T (TASK_STOPPED or TASK_

2015-09-16 11:58:49 3269 1

转载 linux的任务前后台管理(bg和fg命令)

bg和fg命令linux提供的fg和bg命令,可以让我们轻松调度正在运行的任务  假如你发现前天运行的一个程序需要很长的时间,但是需要干前天的事情,你就可以用ctrl-z挂起这个程序,然后可以看到系统的提示:[1]+ Stopped /root/bin/rsync.sh此时进程处于停止状态, 我们可以让它在后台继续执行#bg 1

2015-09-16 11:39:15 8285

原创 CPU的RISC和CISC架构的区别

CPU的RISC和CISC架构的区别 有关RISC和CISC的区别方面, 之前就有一些零零碎碎的理解, 这里再次做一次总结, 以求深入. CISC架构的代表: x86, C51RISC架构的代码:arm, mips,powerpc, avr, pic 指令集的区别首先从字面上理解就能知道, CISC(Complex Instruction SetComputer)架

2015-09-12 12:28:45 40078

原创 学习笔记-linux中的时间管理

学习笔记-linux中的时间管理这一章太简单了, 以至于都感觉没什么东西可写的. 不过既然学习了, 就留做纪念吧. 因为主要是一些概念性的东西, 了解了之后, 到时候如果要用的话可能需要再查.Linux内核通过定时器中断来更新系统时间, 定时器中断每秒钟发生HZ次. HZ一般设置为100, 在x86上也可以设置为500或者1000. 由于HZ的原因, 我们可以看到linux下msleep的

2015-09-09 15:40:29 525

原创 一次PHY驱动的调试有感

做为一个驱动开发工程师, 经常会碰到十分坑爹的问题. 如果很快解决了还好, 若是运气不好一直找不到思路, 那时候真是处理崩溃边缘. 有时候辛辛苦苦调试了几个月, 最后知道是硬件问题, 那时候真的是想骂娘.最近调试bcm54285这个千兆phy驱动的时候, 就悲催的碰到了这种状况. 通过mdio访问phy芯片寄存器的时候, 一直能读到值, 但是读出来的确是2280, f392这样错误的值.

2015-09-09 10:11:18 5701 2

原创 Linux内核中的并发与同步编程

Linux内核中的并发与同步编程解决并发和同步问题对于一个支持SMP和多任务的操作系统来说是十分重要的, linux操作系统在这方面为我们提供了各种丰富的机制用于满足不同应用场景的需求.造成并发执行的原因中断,软中断和tasklet: 中断和进程, 中断和中断之间有可能会引起并发问题.内核抢占: 一个线程会被另一个线程抢占, 所以线程和线程之间也有同步问题.睡眠:

2015-09-08 16:13:06 1106

原创 Linux下的中断与异常

基本概念中断由硬件产生, 异常由软件产生. 有时我们也称呼它们为异步中断和同步中断. 我们使用中断来和外设之间通信, 使用异常来实现系统调用, 软中断等功能.中断处理程序被称作interrupt request handle或者interrupt serviceroutine(ISR). 一个设备的中断处理程序是它的驱动的一部分.大部分设备中断由do_IRQ()函数开始. 然后根据中断

2015-09-07 10:06:39 877

原创 Linux中的进程

这篇文章算是自己最近学习Linux内核设计与实现的笔记, 主要是对学到的东西做一个总结, 让自己对知识的理解更加清晰.进程是什么进程就是处于执行期的程序. Linux的进程产生方式很特别, 被分解到了fork()和exec()两个系统调用中.进程有时候也被称作任务(task), 这是从进程调度的角度去看进程的. 如果是从资源管理的角度, 我们还是把它们叫做process

2015-09-02 10:45:32 422

原创 autohotkey快捷键显示隐藏文件和文件扩展名

下面是我日常使用的ahk脚本中的一部分.可以很方便的在资源管理器中使用快捷键显示隐藏文件或者文件扩展名, 提高工作效率.#SingleInstance force ;force a single instance#HotkeyInterval 0 ;disable the warning dialog if a key is held down#In

2015-08-29 22:40:53 1273

原创 IP报文格式学习笔记

由于记性不好的原因, 一直对报文格式的字段记的不是很牢固, 故花了一天时间学习IP报文格式, 第二天来总结. 过两天再继续学习TCP和UDP.IP报文格式如下图所示(图片来源—百度百科): 版本(Version, 4bit):为4代表ipv4, 为6代表ipv6报头长度(Header Length, 4bit):一般为5, 代表IP首部一共占用20个字节. (4*5)

2015-07-30 10:24:40 15347 1

原创 一个ahk小函数, 实现版本号的比较

;返回值说明; 大于0, 版本a比版本b新; 小于0, 版本b比版本a新; 等于0, 版本相等verstrcmp(a, b){ StringSplit, m, a, `. StringSplit, n, b, `. Loop % m0>n0 ? m0 : n0 { if(m%A_Index% != n%A_Index%) { Return (0 . m%A_Inde

2015-06-08 11:23:50 707

原创 标记一下

刚刚在CSDN上开通了这个博客, 记录一下这个特殊的日子.    一直以前都是在网上看文章获取资源, 没有做过多少分享的事情, 我觉得我现在是应该做一些改变了.    希望这是一个愉快的开始~

2015-06-07 11:07:13 477

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除