关闭

Linux用户空间与内核空间

Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。 Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存...
阅读(299) 评论(0)

Linux0.11内核--内核空间、用户空间之间的数据传输

内核空间、用户空间之间的数据传输 内核空间数据段的选择符为0x10,用户空间数据段选择符为0x17。内核空间、用户空间之间的数据传输,是段间数据传输。C语言中的赋值语句编译成汇编后,“=”两边的变量默认段选择符都是DS,因此只能用于同一段内数据传输。 在segment.h中定义了一系列用于内核空间和用户空间传输数据的函数。从用户空间取得数据的函数中, mov指令的源操作数段寄存器都明确...
阅读(645) 评论(0)

全局变量什么时候分配内存

c语言中的全局变量,分为初始化的(int abc=100),和未初始化的(int abcd). 初始化的全局变量,在程序加载的时候,会从程序文件中,映射(大部分操作系统,只有第一次使用该地址空间时,才加载到内存中)到内存的数据段。 未初始化的全局变量部分,映射到进程地址空间的数据段,Unix中,用到该数据的时候,自动0填充。 进程的运行过程如下。 1)地址映射,代码段,数据段等...
阅读(821) 评论(0)

Intel X86 CPU系列的寄存器

一、32位CPU系统级寄存器和数据结构 二、寄存器分类介绍 通用寄存器:8个,分别为EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI 标志寄存器:1个,EFLAGS 控制寄存器:5个,分别为CR0-CR4 调试寄存器:8个,分别为DR0-DR7 系统地址寄存器:4个,GDTR、IDTR、LDTR和TR 16位段寄存器:6个,分别为CS,DS,ES,FS,GS,SS...
阅读(596) 评论(0)

fork()与_syscall0(int,fork) 关系

static inline _syscall0(int,fork) 其中_syscall0()是unistd.h中的内嵌宏代码,它以嵌入汇编的形式调用Linux的系统调用中断int 0x80。根据include/unistd.h文件第133行上的宏定义,我们把这个宏展开并替代进上面一行中就可以看出这条语句实际上是int fork()创建进程系统调用,见如下所示。 // unistd.h文件中_...
阅读(668) 评论(0)

计算机程序和进程的区别?

进程(Process)是最初定义在Unix等多用户、多任务操作系统环境下用于表示应用程序在内存环境中基本执行单元的概念。以Unix操作系统为例,进程是Unix操作系统环境中的基本成分、是系统资源分配的基本单位。Unix操作系统中完成的几乎所有用户管理和资源分配等工作都是通过操作系统对应用程序进程的控制来实现的。 C、C++、Java等语言编写的源程序经相应的编译器编译成可执行文件后,提交给计...
阅读(812) 评论(0)

系统调用与库函数调用的区别

1、系统调用和库函数的关系 系统调用通过软中断int 0x80从用户态进入内核态。 函数库中的某些函数调用了系统调用。 函数库中的函数可以没有调用系统调用,也可以调用多个系统调用。 编程人员可以通过函数库调用系统调用。 高级编程也可以直接采用int 0x80进入系统调用,而不必通过函数库作为中介。 如果是在核心编程,也可以通过int 0x80进入系统调用,此时不能使用函数库。因为函数库...
阅读(367) 评论(0)

指令字长度与机器字长

一个指令字中包含二进制代码的位数,称为指令字长度。计算机能直接处理的二进制数据的位数称为机器字长,它决定了计算机的运算精度,机器字长通常与主存单元的位数一致。 指令字长度等于机器字长的指令,称为单字长指令;指令字长度等于半个机器字长的指令,称为半字长指令;指令字长度等于两个机器字长的指令,称为双字长指令。例如,IBM 370系列32位机的指令格式有半字长的,单字长的,还有一个半字长的。在Pent...
阅读(1021) 评论(0)

linux 系统调用

5.1.5  如何使用系统调用 如图5.2所示,用户应用可以通过两种方式使用系统调用。第一种方式是通过C库函数,包括系统调用在C库中的封装函数和其他普通函数。   图5.2  使用系统调用的两种方式 第二种方式是使用_syscall宏。2.6.18版本之前的内核,在include/asm-i386/unistd.h文件中定义有7个_syscall宏,...
阅读(510) 评论(0)

磁盘的磁道(Track)

写这篇文章,主要是为了解决长久以来的一个困惑。由此也可以看出偶以前确实不太聪明。 哈哈(虽然现在仍然还是) 以前见到的很多磁道的示意图都是这样的:注意标线的位置,“指向一条线”,我当时的理解好像是这条线就是磁道。还有的解释是说磁道就是一个“同心圆”的集合 那么,我的疑问就是,既然那条线是同心圆,那么两条线之间的那快空白是什么呀? 什么也不是? 空着的? 就是为了分开磁道?晕倒。...
阅读(663) 评论(0)

CMOS与BIOS的关系

实际上我们是通过BIOS这个程序,去设置CMOS里的参数的。 CMOS是一块芯片,集成在主板上,里面保存着重要的开机参数,而保存是需要电力来维持的,所以每一块主板上都会有一颗纽扣电池,叫CMOS电池。   CMOS里存放着参数,要设置它,我们必须通过程序把设置好的参数写入CMOS,所以,就利用BIOS程序来读写。    BIOS是什么?   BIOS就是(Basic Input/Output S...
阅读(968) 评论(0)

XSS 前端防火墙(1):内联事件拦截

XSS 前端防火墙(1):内联事件拦截 原文出处: 百度FEX - zjcqoo    关于 XSS 怎样形成、如何注入、能做什么、如何防范,前人已有无数的探讨,这里就不再累述了。本文介绍的则是另一种预防思路。 几乎每篇谈论 XSS 的文章,结尾多少都会提到如何防止,然而大多万变不离其宗。要转义什么,要过滤什么,不要忘了什么之类的。尽管都是众所周知的道理,但 XSS 漏洞...
阅读(502) 评论(0)

js之事件冒泡和事件捕获一

事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。 (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。   IE 5.5: div -> body -> document   IE 6.0: div -> body -> html -> document   Mozilla 1.0: div -> body ...
阅读(563) 评论(0)

js之事件捕获和冒泡二

对“捕获”和“冒泡”这两个概念,我想我们对冒泡更熟悉一些,因为在我们使用的所有浏览器中,都支持事件冒泡,即事件由子元素向祖先元素传播的,就 像气泡从水底向水面上浮一样。而在像firefox,chrome,safari这类所谓的标准浏览器中,事件传播还有个阶段,那就是捕获阶段,这个很少 有用武之地,所以被人疏忽遗忘也在所难免了,不常用不代表它不存在,本着科学严谨的态度,我们有必要去看一下它的庐山真面...
阅读(545) 评论(0)

C语言中内存分配

C语言中内存分配...
阅读(553) 评论(0)
142条 共10页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:172249次
    • 积分:2157
    • 等级:
    • 排名:第19352名
    • 原创:26篇
    • 转载:116篇
    • 译文:0篇
    • 评论:4条
    最新评论