随笔分类 -  操作系统

内存管理——进程创建,执行,缺页,终止
摘要:与分页相关的工作。 1、进程创建时:当进程被创建时,操作系统需要确定程序和数据在初始时有多大,并针对其大小为进程创建页表,操作系统需要在内存中为页表分配空间并进行初始化。此外,操作系统需要在磁盘交换区中分配空间,以用来在一个进程换出时在磁盘上有放置此进程的空间; 2、进程执行时:重置MMU,刷新TL 阅读全文

posted @ 2017-10-30 20:51 chenjx_ucs 阅读(642) 评论(0) 推荐(0)

分页与页表
摘要:概念性内容不再阐述。直接给出解释。 MMU为内存管理单元,其作为硬件用于将虚拟地址映射为物理地址。上图右边部分,箭头所述部分内容即采用MMU完成地址映射。 虚拟地址通过多级页表映射后对应末级页表项,末级页表项中存放的是物理地址页框号。即一个虚拟地址,通过MMU找到对应的物理页框号,通过虚拟地址后12 阅读全文

posted @ 2017-10-27 21:05 chenjx_ucs 阅读(1967) 评论(0) 推荐(0)

空闲内存管理
摘要:学习自《现代操作系统》 操作系统在动态分配内存时(malloc,new),需要对空间内存进行管理。一般采用了两种方式:位图和空间链表。 1、使用位图的存储管理 内存被划分为若干个几字节大小的分配单元,每个分配单元是否是空闲的情况采用位图来进行描述,如果已分配,相应位置1,未分配,置0。当需要分配新内 阅读全文

posted @ 2017-10-27 14:54 chenjx_ucs 阅读(1353) 评论(0) 推荐(0)

缓冲区溢出攻击
摘要:图片来源:http://blog.csdn.net/u010651541/article/details/49849557 主要根据此图给出一些程序变量的分配情况,以及缓冲区溢出攻击的简单原理。 上述图主要描述进程虚拟地址空间,即用户空间内容,进程内核地址空间为所有进程共用(Linux内核中) 栈区 阅读全文

posted @ 2017-10-27 10:34 chenjx_ucs 阅读(242) 评论(0) 推荐(0)

计算机是如何启动的
摘要:转载:http://www.ruanyifeng.com/blog/2013/02/booting.html 作者: 阮一峰 日期: 2013年2月16日 从打开电源到开始操作,计算机的启动是一个非常复杂的过程。 我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示...... 这几天 阅读全文

posted @ 2017-05-19 16:01 chenjx_ucs 阅读(170) 评论(0) 推荐(0)

关于内存对齐
摘要:内存地址对齐,是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐 。 为什么需要内存对齐?对齐有什么好处?是我们程序员来手动做内存对齐呢?还是编译器在进行自动优化的时候完成这项工作? 在现代计 阅读全文

posted @ 2017-05-19 15:51 chenjx_ucs 阅读(2229) 评论(0) 推荐(0)

两个内核模块之间的交互
摘要:这里的通信可以简单点理解,就是模块B如何调用A的函数,变量或者常量。为了简化,我设计一个模块A中的一个函数为printMSG,原型为int printMSG(int n);传入的参数n表示打印几遍一个固定的字符串。模块A()源码: 其中用到了EXPORT_SYMBOL宏来表明导出printMSG这个 阅读全文

posted @ 2017-05-19 15:42 chenjx_ucs 阅读(2810) 评论(0) 推荐(0)

函数调用和局部变量
摘要:转载:http://www.cnblogs.com/ZJAJS/archive/2013/03/08/2949162.html 函数调用和局部变量 要研究函数的调用过程,先来看下面的一段代码: 对于 z = Add(1, 2); 这一句,我们可以看到其汇编代码和机器码如下: 上述指令表明主函数将跳转 阅读全文

posted @ 2017-05-19 15:04 chenjx_ucs 阅读(2333) 评论(0) 推荐(0)

内核符号表的生成和查找过程
该文被密码保护。

posted @ 2017-05-19 15:02 chenjx_ucs 阅读(1) 评论(0) 推荐(0)

函数调用过程探究
摘要:转载:http://www.cnblogs.com/bangerlee/archive/2012/05/22/2508772.html 引言 如何定义函数、调用函数,是每个程序员学习编程的入门课。调用函数(caller)向被调函数(callee)传入参数,被调函数返回结果,看似简单的过程,其实CPU 阅读全文

posted @ 2017-05-19 14:59 chenjx_ucs 阅读(364) 评论(0) 推荐(0)

字符设备驱动ioctl实现用户层内核层通信
摘要:编译memdev,对应的设备驱动 make insmod memdev.ko 在dmesg中会有输出结果init,在/proc/devices中生成对应的设备驱动号249 创建设备节点 cat /proc/devices中生成的memdev节点编号249 mknod /dev/memdev0 c 2 阅读全文

posted @ 2017-05-19 14:53 chenjx_ucs 阅读(2223) 评论(0) 推荐(0)

堆和栈的区别
摘要:转载:http://www.cppblog.com/oosky/archive/2006/01/21/2958.html 堆和栈的区别 (转贴) 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥! 堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部 阅读全文

posted @ 2017-05-19 14:32 chenjx_ucs 阅读(225) 评论(0) 推荐(0)

导航