自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 向大家推荐博士数学论坛!

博士数学论坛是国内最全面的中文数学专业网站(http://www.math.org.cn)。博士家园旗下网站,建站于2004年。主要是推广普及数学信息和知识,使数学走近寻常百姓。享受稳定快速的数学资源服务,交流数学问题,寻找数学朋友等。 欢迎真正讨论问题的学生,老师,科研人员参与。每一位用到数学的人都应该有个论坛帐号。现在免费赠送邀请码,快去注册一个会员账号吧!

2015-01-31 18:57:08 2685

原创 Linux内核设计与实现 读书笔记(10)内核同步方法

主要内容:原子操作自旋锁读写自旋锁信号量读写信号量互斥体完成变量大内核锁顺序锁禁止抢占顺序和屏障总结 1. 原子操作原子操作是由编译器来保证的,保证一个线程对数据的操作不会被其他线程打断。原子操作有2类:原子整数操作,有32位和64位。头文件分别为和原子位操作。头文件  原子操作的api很简单,参见相应的头文件即可。原子操作头

2015-01-02 15:58:33 454

原创 Linux内核设计与实现 读书笔记(9)内部同步介绍

主要内容:同步的概念同步的方法-加锁死锁锁的粒度 1. 同步的概念了解同步之前,先了解另外2个概念:临界区   - 也称为临界段,就是访问和操作共享数据的代码段。竞争条件 - 2个或2个以上线程在临界区里同时执行的时候,就构成了竞争条件。 所谓同步,其实防止在临界区中形成竞争条件。如果临界区里是原子操作(即整个操作完成前不会被打断),

2015-01-02 15:57:38 467

原创 Linux内核设计与实现 读书笔记(8)中断处理下半部

主要内容:中断下半部处理实现中断下半部的机制总结中断下半部的实现中断实现示例 1. 中断下半部处理那么对于一个中断,如何划分上下两部分呢?哪些处理放在上半部,哪些处理放在下半部?这里有一些经验可供借鉴:如果一个任务对时间十分敏感,将其放在上半部如果一个任务和硬件有关,将其放在上半部如果一个任务要保证不被其他中断打断,将其放在上半部其他所有任务,考虑放

2015-01-02 15:55:54 402

原创 Linux内核的设计与实现 读书笔记(7)中断处理

主要内容:什么是中断中断类型中断相关函数中断处理机制中断控制方法总结 1. 什么是中断为了提高CPU和外围硬件(硬盘,键盘,鼠标等等)之间协同工作的性能,引入了中断的机制。没有中断的话,CPU和外围设备之间协同工作可能只有轮询这个方法:CPU定期检查硬件状态,需要处理时就处理,否则就跳过。当硬件忙碌的时候,CPU很可能会做许多无用功(每次轮询都是跳过

2015-01-02 15:54:17 442

原创 Linux内核设计与实现 读书笔记(6)内核数据结构

主要内容:链表队列映射红黑树 1. 链表链表是linux内核中最简单,同时也是应用最广泛的数据结构。内核中定义的是双向链表。 1.1 头文件简介内核中关于链表定义的代码位于: include/linux/list.hlist.h文件中对每个函数都有注释,这里就不详细说了。其实刚开始只要先了解一个常用的链表操作(追加,删

2015-01-02 15:52:17 511

原创 Linux内核的设计与实现 读书笔记(5)系统调用

主要内容:什么是系统调用Linux上的系统调用实现原理一个简单的系统调用的实现1. 什么是系统调用简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用的存在,有以下重要的意义:1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。    比如:用户

2015-01-02 15:50:50 432

原创 Linux内核设计与实现 读书笔记(4)进程的调度

主要内容:什么是调度调度实现原理Linux上调度实现的方法调度相关的系统调用1. 什么是调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。这个管理程序就是调度程序,它的功能说起来很简单:决定哪些进程运行,哪些进程等待决定每个进程运行多长时间此外,为了获得更好的用

2015-01-02 15:49:44 511

原创 Linux内核设计与实现 读书笔记(3)Linux的进程

主要内容:进程和线程进程的生命周期进程的创建进程的终止1. 进程和线程进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的。Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的进程。所以下面只讨论进程,只有当线程与进程存在不一样的地方时才提一下线程。

2015-01-02 15:48:39 482

原创 Linux内核设计与实现 读书笔记(2)内核开发的准备

主要内容:获取内核源码内核源码的结构编译内核的方法内核开发的特点 1. 获取内核源码内核是开源的,所有获取源码特别方便,参照以下的网址,可以通过git或者直接下载压缩好的源码包。http://www.kernel.org 2. 内核源码的结构 目录说明arch特定体系结构的代码

2015-01-02 15:46:43 495

原创 Linux内核设计与实现 读书笔记(1)内核简介

主要内容:单内核和微内核内核版本号 1. 单内核和微内核 原理优势劣势单内核整个内核都在一个大内核地址空间上运行。1. 简单。2. 高效:所有内核都在一个大的地址空间上,所以内核各个功能之间的调用和调用函数类似,几乎没有性能开销。一个功能的崩溃会导致整个内核无法使用。

2015-01-02 15:45:23 400

转载 C++资源总汇

关于 C++ 框架、库和资源的一些汇总列表,由 Break发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX library :

2015-01-02 15:32:52 540

原创 Linux内核设计与实现 学习笔记(10)补丁,开发和社区

linux最吸引我的地方之一就是它拥有一个高手云集的社区, 还有就是如果能=为linux内核中贡献代码, 一定是一件令人自豪的事情.下面主要总结一些和贡献代码相关的主要内容.加入社区编码风格提交补丁总结 1. 加入社区如果想为linux贡献代码, 那么加入linux社区是必须的, 加入了社区, 不仅可以及时内核的最新消息, 而且可以及时和社区内有经验的内核开

2015-01-02 15:13:33 676

原创 Linux内核设计与实现 学习笔记(8)内核调试

内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态。也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态。 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来捕获并显示。而内核是直接和硬件交互的,内核出错之后整个系统就无法正常运行了,所以要想熟练的进行内核调试,首先要熟悉内核已经给我们提供的工具,然后实实在在的去做一些

2015-01-02 15:12:08 453

原创 Linux内核设计与实现 学习笔记(9)可移植性

linux内核的移植性非常好, 目前的内核也支持非常多的体系结构(有20多个).但是刚开始时, linux也只支持 intel i386 架构, 从 v1.2版开始支持 Digital Alpha, Intel x86, MIPS和SPARC(虽然支持的还不是很完善).从 v2.0版本开始加入了对 Motorala 68K和PowerPC的官方支持, v2.2版本开始新增了 ARM

2015-01-02 15:10:51 496

原创 Linux内核设计与实现 学习笔记(7)设备与模块

主要内容:设备类型内核模块内核对象sysfs总结 1. 设备类型linux中主要由3种类型的设备,分别是:设备类型代表设备特点访问方式块设备硬盘,光盘随机访问设备中的内容一般都是把设备挂载为文件系统后再访问字符设备键盘,打印机只能顺序访

2015-01-02 15:08:53 635

原创 Linux内核设计与实现 学习笔记(6)页高速缓存和页回写

主要内容:缓存简介页高速缓存页回写 1. 缓存简介在编程中,缓存是很常见也很有效的一种提高程序性能的机制。linux内核也不例外,为了提高I/O性能,也引入了缓存机制,即将一部分磁盘上的数据缓存到内存中。 1.1 原理之所以通过缓存能提高I/O性能是基于以下2个重要的原理:CPU访问内存的速度远远大于访问磁盘的速度(访问速度差

2015-01-02 15:07:28 607

原创 Linux内核设计与实现 学习笔记(5)进程地址空间

进程地址空间也就是每个进程所使用的内存,内核对进程地址空间的管理,也就是对用户态程序的内存管理。主要内容:地址空间(mm_struct)虚拟内存区域(VMA)地址空间和页表 1. 地址空间(mm_struct)地址空间就是每个进程所能访问的内存地址范围。这个地址范围不是真实的,是虚拟地址的范围,有时甚至会超过实际物理内存的大小。 现代

2015-01-02 15:04:38 475

原创 Linux内核设计与实现 学习笔记(4)块I/O层

主要内容:块设备简介内核访问块设备的方法内核I/O调度程序 1. 块设备简介I/O设备主要有2类:字符设备:只能顺序读写设备中的内容,比如 串口设备,键盘块设备:能够随机读写设备中的内容,比如 硬盘,U盘字符设备由于只能顺序访问,所以应用场景也不多,这篇文章主要讨论块设备。块设备是随机访问的,所以块设备在不同的应用场景中存在很大的优化空间。

2015-01-02 15:01:47 506

原创 Linux内核设计与实现 学习笔记(3)虚拟文件系统

虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备。虚拟文件系统本身是linux内核的一部分,是纯软件的东西,并不需要任何硬件的支持。 主要内容:虚拟文件系统的作用虚拟文件系统的4个主要对象文件系统相关的数据结构进程相关的数据结构小结  1. 虚拟

2015-01-02 15:00:15 836

原创 Linux内核设计与实现 学习笔记(1)定时器和时间管理

系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要。 主要内容:系统时间定时器定时器相关概念定时器执行流程实现程序延迟的方法定时器和延迟的例子 1. 系统时间系统中管理的时间有2种:实际时间和定时器。1.1  实际时间实际时间就是现实中钟表上显示的

2015-01-02 14:57:49 702

原创 Linux内核设计与实现,学习笔记(2)内存管理

内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决)。所有内核的内存管理必须要简洁而且高效。主要内容:内存的管理单元获取内存的方法获取高端内存内核内存的分配方式总结 1. 内存的管理单元内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3个区。 1.1 页页

2015-01-02 14:54:14 529

空空如也

空空如也

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

TA关注的人

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