自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 对Linux系统的理解以及学习Linux内核的心得

在上了Linux内核这门课后,我对Linux内核开始有了初步的了解,关于Linux内核,我觉得最重要的部分还是进程的创建以及切换,这是整个内核的核心部分。以下是一些我在学习Linux内核过程中的总结:1、计算机是如何解读高级语言的2、操作系统是怎么进行任务操作的3、Linux内核的启动过程4、系统调用的工作机制5、系统调用system_call的处理过程6、Linux系统是

2016-05-01 20:50:32 4114 1

原创 学习Linux内核的心得

自从学习了Linux内核之后,我开始对linux系统是怎样运行的有了初步的了解,并开始对linux产生了浓厚的兴趣。以下是我学习linux的一些总结:1、关于计算机将c代码转换成汇编代码的过程秒速2、基于时间片轮转多道程序内核代码分析操作系统的工作过程  3、跟踪分析Linux内核的启动过程4、使用API和C代码中嵌入汇编实现同一个系统的调用5、基于从system_call

2016-05-01 20:35:18 959

原创 Linux进程调度时机和进程切换

进程的调度时机与进程的切换操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已。对于理解操作系统的工作机制,反而是进程的调度时机与进程的切换机制更为关键。进程调度的时机中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用

2016-04-17 00:45:16 3020

原创 Linux内核如何装载和启动一个可执行程序

在了解Linux内核是如何装载和启动一个可执行程序的之前,我们首先要知道可执行文件的创建顺序,可执行文件的创建顺序是先进行预处理,然后进行编译,再进行目标文件的连接,最后生成可执行文件。接下来我们需要了解execve这个函数:可执行程序的装载命令行参数和shell环境,一般我们执行一个程序的Shell环境,我们的实验直接使用execve系统调用。Shell本身不限制命令行参数的

2016-04-10 21:38:58 581

原创 Linux系统如何创建一个新进程

对于Linux系统是如何创建一个新进程的,关于fork函数又是怎样具体实现系统调用的,我们通过这次实验来做一个初步的了解。在做实验前我们要先了解下fork函数具体完成了哪些功能,fork函数是创建一个子进程,但是子进程是处于就绪态的,它需要被调度才能进入运行态。而fork函数对应的系统调用为sys_clone,下面我们通过用gdb跟踪sys_clone来了解Linux系统是如何创建一个新进程的

2016-04-02 00:14:36 11907 1

原创 系统调用system_call的处理过程

关于system_call,虽然它有函数申明,但它其实是关于系统调用的一段汇编代码的起点,所以使用gdb无法跟踪到它。下面我们通过实验来了解system_call的处理过程,首先我们需要用一个新的内核,然后把我们的系统调用函数加载进去:             然后使用make rootfs重新编译一下,就能看到新加载进去的系统调用了,接下来

2016-03-27 19:51:29 3909

原创 系统调用的工作机制

谈起系统调用,不得不提一下Linux下对文件操作的两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在Linux程序设计里面就是底层调用的意思,面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的API,采用这样的方式有很多种原因,第一:双缓冲技术的实现;第二,可移植性;第三,底层调用本身的一些性能方面

2016-03-19 21:03:55 1212

原创 Linux内核的启动过程

x86 CPU启动的第一个动作CS:EIP=FFFF:0000H(换算为物理地址为000FFFF0H,因为16位CPU有20根地址线),即BIOS程序的位置。BIOS例行程序检测完硬件并完成相应的初始化之后就会寻找可引导介质,找到后把引导程序加载到指定内存区域后,就把控制权交给了引导程序。这里一般是把硬盘的第一个扇区MBR和活动分区的引导程序加载到内存(即加载BootLoader),加载完整后

2016-03-13 15:50:12 809

原创 操作系统是怎么进行任务操作的

计算机工作需要三大法宝:1、存储程序计算机工作模型,计算机系统最最基础性的逻辑结构:2、函数调用,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能;enter  pushl %ebp movl %esp,%ebpleave  movl %ebp,%esppopl %ebp函数

2016-03-06 18:15:07 1956

原创 计算机是如何解读高级语言的

大家都知道,C语言是一种应用非常广泛的高级语言,而且标准的C语言程序可以在很多电脑平台上进行编译,但是大家是否知道计算机是怎么解读C语言的呢?下面我通过一个小小的例子来为大家分析一下:首先是编写一段简单的C语言程序,如下图所示:然后我们把它反编译成汇编语言,因为汇编语言是最接近机器语言的,如图:接下来我们通过这段汇编语言来分析这段C语言是怎么运行的:g:1     push

2016-02-27 21:02:40 4986

opencv-python

opencv-python-toturial中文版

2016-01-10

空空如也

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

TA关注的人

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