自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

朝闻道

一个电气工程学生的软件学习笔记

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

原创 Linux内核分析学习笔记:system_call中断处理过程

前两篇博文从汇编的角度分析了linux系统的系统调用方法,本博客在实验楼平台下写了一个简单的系统调用程序,并分析系统调用的实际过程。本文实验平台为实验楼Linux内核分析的第5个实验:分析system_call中断处理过程。

2016-03-27 17:33:32 799

原创 Linux asm系统调用:32位和64位的区别

最近在学习系统调用,一段用asm内联汇编写的简单程序始终得不出正确的系统调用结果。经过提醒,我才了解到这是32位平台和64位平台的系统调用方法不同的原因。在此列出相关的程序和我的理解。

2016-03-26 15:48:47 3610 1

原创 用asm内联汇编实现系统调用

原创内容(cxsmarkchan 陈晓爽) 转载请注明出处 《Linux内核分析》MOOC课程学习笔记 为保证系统的稳定运行,CPU运行状态被分为内核态和用户态。操作系统在内核态下运行,因此拥有所有计算机资源的操作权限。而一般的应用程序则在用户态下运行,它们不能直接操作底层的硬件设备,从而保证应用软件不会破坏系统的稳定。但是,应用程序在运行时常常需要和各种资源打交道,为此,操作系统提供了“系统

2016-03-20 23:11:16 3602

原创 C++运算符重载:怎样定义函数才“符合常理”

最近在尝试实现C++ STL库,遇到的一个很重要问题就是在容器、迭代器中的运算符重载。运算符重载看上去比较简单,但如果希望重载结果“符合常理”,即符合C++的运算习惯,也不是非常容易。这些问题通常出现在函数定义中:- 重载函数的返回值,是原类型、引用类型,还是常引用类型?- 重载函数的参数,是原类型、引用类型、常引用类型,还是右值引用类型?- 重载函数是否需要const标记?这篇博客主要讨论这些问题。

2016-03-15 18:12:13 636

原创 linux内核分析学习笔记:用gdb跟踪linux内核启动过程

原创作品(陈晓爽 cxsmarkchan) 转载请注明出处 《Linux内核分析》MOOC课程学习笔记 操作系统的内核启动是一个复杂的过程,在这里,我们仅仅抓住内核启动的主要脉络,了解linux内核的启动过程。需要了解的问题包括:linux内核启动入口、启动时的初始化操作、0号进程和1号进程的启动、主循环的启动等。 本文实验平台为实验楼Linux内核分析,实验所用的代码可以参考这里。1 li

2016-03-13 13:40:17 941

原创 array和list排序算法对比(二):归并排序

归并排序的特点是采用二分的策略,将数组的子数组进行排序,然后将两个有序的子数组合并成一个大的有序数组。如果采用数组结构,二分是非常简单的操作,但二分后的合并空间开销相对较大。如果采用链表结构,合并的空间开销是相对较小的,但二分则需要精心设计。这也造成了两种数据结构在算法设计上会有一定的差别,复杂度也不同。

2016-03-10 21:58:04 857

原创 array和list的排序算法对比(一):快速排序

一般来说,我们讨论排序都是针对数组结构。数组的特点是:可以很方便地进行随机访问,但是增删元素比较耗时。因此,针对数组的排序,通常会避免元素的增删操作,改为元素交换。同时,常采用二分的方法实现高效排序算法。 链表与数组相反,随机访问非常耗时,但增删元素很简单。因此链表的排序和数组也会有所不同。 这篇博客针对数组和链表的不同,分析了常用排序算法——快速排序在数组和链表中的实现。注:我们规定排序的语义

2016-03-08 23:41:08 4538 1

原创 linux内核分析学习笔记:操作系统的进程切换

原创作品(陈晓爽 cxsmarkchan) 转载请注明出处 《Linux内核分析》MOOC课程学习笔记操作系统中有大量进程在运行,而在单核CPU中,每个时刻只能有一个进程的指令在被执行。因此,操作系统需要不断进行进程切换,即分时工作。问题是:如果一个进程在执行过程中被中断,如何记录其中断位置?在下一次执行的时候,如何保证该进程的数据没有被破坏?这些都是进程切换时需要做的工作。

2016-03-04 17:33:47 1022 2

原创 swap函数的高效实现:右值引用和move

原创内容:cxsmarkchan 转载请注明出处 右值引用是C++11的重要特性之一,合理采用右值引用,可以避免不必要的复制操作,提高程序运行的效率。本文以swap函数的实现为例,说明右值引用的相关应用。

2016-03-03 21:50:19 2835 4

原创 汇编学习笔记:函数调用过程中的堆栈分析

原创作品:陈晓爽(cxsmarkchan) 转载请注明出处 《Linux操作系统分析》MOOC课程 学习笔记本文通过汇编一段含有简单函数调用的C程序,说明在函数调用过程中堆栈的变化。

2016-02-28 11:52:52 4813 4

空空如也

空空如也

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

TA关注的人

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