自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (2)
  • 收藏
  • 关注

原创 内存分页机制

 在计算机组成原理课程便接触过内存分页机制,那时候的印象没有现在如此的深刻。    逻辑地址(SEG:OFFSET) --[分段管理机制]--> 线性地址 --[分页管理机制]--> 物理地址    分页机制进行转换时,先是从由寄存器CR0指定的页目录中根据线性地址的高10位得到页表地址,然后在页表中根据线性地址的12-21位得到物理页首地址,将这个首地址加上线性地址低12位便得到物理地址

2007-05-25 17:12:00 2729

原创 BIOS和DOS建立的中断向量表

绝对地址 16进制 10进制 有关内容 00H 0H 0  0做除数时处理器发出的中断 溢出条件是: 除法类型 结果--有符号字 +127有符号双字 +32767无符号字 | >255无符号双字 | >65535--DOS设有INT 00H处理程序,系统将显示“Divide Overflo”, 结束当前程序的执行。04H 1H 1 单步调试时处理器发出的中断 08H 2H 2 非屏蔽中断 0CH

2007-05-25 00:36:00 1009

原创 深入介绍Linux内核(四)

深入介绍Linux内核(四)深入介绍Linux内核(第四篇)第四章本文介绍的Linux作业系统是以Intel公司80X86及相关週边硬体组成的PC系统为基础的。有关80X86 CPU系统程式设计的最佳参考书籍当然是Intel公司发行的一套三卷的英文版《IA-32 Intel体系结构软体发展者手冊》,尤其足其中第3卷:《系统程式设计指南》是理解使用80X86 CPU的作业系统工作原理或进行系

2007-05-25 00:01:00 1062

原创 深入介绍Linux内核(三)续篇

深入介绍Linux内核(三)续篇深入介绍Linux内核 第三章 (续篇)3.3.3 小括号中的组合语句括弧对“{…}”用於把变数宣告和语句组合成一个复合语句(组合语句)或一个语句块,这樣在语义上这些语句就等同於一条语句。组合语句的右大括弧后面不需要使用分号。小括号中的组合语句,即形如“({…})”的语句,可以在GNU C中用作一个运算式使用。 这样就可以在运算式中使用loop、switch

2007-05-24 23:55:00 2323

原创 深入介绍Linux内核(三)

深入介绍Linux内核第三章-上篇语言编译过程就是把人类能理解的高阶语言转換成电脑硬体能理解和执行的二进位机器指令的过程。这种转換过程通常会產生一些效率不是很高的代码,所以对一些执行效率要求高或性能影响较大的部分代码通常就会直接使用低级组合语言来编写,或者对高阶语言编译產生的组合语言程式再进行人工修改最佳化处理。本章主要描述Linux 0.12內核中使用的程式语言、目标档格式和编译环境,主要目标是

2007-05-24 23:18:00 1506

原创 深入介绍Linux内核(八)

第五章 Linux内核体系结构 在本章这里,我们首先要介绍的是Linux內核的编制模式和体系结构,然后详细描述了Linux內核原始码目錄中组织形式和子目錄中各个代码档的主要功 能,以及基本呼叫的层次关系等。接着就是直接走入正题,从內核原始档案Linux/目錄下的第一个档Makefile开始,对每一行代码进行详细注释說 明。本章內容可以看作是对內核原始码的总结概述,也可以作为閱读后续章节

2007-05-24 23:16:00 1079

转载 理解 Xwindow

理解 Xwindow很多人在用 Xwindow,但是他们是在用一些包装掩盖下的 Xwindow,那些包装有些很不稳定,占用大量资源,以至于有人说 Xwindow 是垃圾。其实 Xwindow 是一个非常出色的图形系统,你应该抱怨的是那些不稳定的包装,而不是 Xwindow 本身。 Xwindow 是非常巧妙的设计,很多时候它在概念上比其它窗口系统先进,以至于经过很多年它仍然是工作站上的工业

2007-05-24 15:45:00 591

转载 回调函数、消息和事件例程

回调函数、消息和事件例程                     关键字           回调,消息,事件           回调函数、消息和事件例程                 调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,调用者可以随时跳转至此段代码的起始地址,执行完后再返回跳转时的后续地址。CPU为此准备了现成的调用指令,调用时可以压栈保护现场,调用结束后

2007-05-24 02:20:00 773

原创 Linux实用的主要数据结构

本章列出了Linux实用的主要数据结构。    block_dev_struct      此结构用于向核心登记块设备,它还被buffer cache实用。所有此类结构都位于blk_dev数组中。    struct blk_dev_struct {  void (*request_fn)(void);  struct request * current_request;  struct requ

2007-05-23 15:35:00 619

原创 堆和栈的区别

堆和栈的区别       堆和栈的区别     一、预备知识—程序的内存分配     一个由c/C++编译的程序占用的内存分为以下几个部分     1、栈区(stack)—       由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。     2、堆区(heap)   —       一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回收

2007-05-23 02:50:00 700

原创 明确区分堆与栈

明确区分堆与栈             在bbs上,堆与栈的区分问题,似乎是一个永恒的话题,由此可见,初学者对此往往是     混淆不清的,所以我决定拿他第一个开刀。             首先,我们举一个例子:             void   f()   {   int*   p=new   int[5];   }             这条短短的一句话就包含了堆与栈,看到new,我们

2007-05-23 02:46:00 779

转载 linux操作系统下c语言编程入门--Linux下C开发工具介绍

linux操作系统下c语言编程入门--Linux下C开发工具介绍 Linux的发行版中包含了很多软件开发工具. 它们中的很多是用于 C 和 C++应用程序开发的. 本文介绍了在 Linux 下能用于 C 应用程序开发和调试的工具. 本文的主旨是介绍如何在 Linux 下使用 C 编译器和其他 C 编程工具, 而非 C 语言编程的教程.GNU C 编译器GNU C 编译器(GCC)是一个全功能的

2007-05-23 00:11:00 2797 12

原创 【linux编程】C++内存管理详解(三)

7、内存耗尽怎么办?如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败。通常有三种方式处理“内存耗尽”问题。  (1)判断指针是否为NULL,如果是则马上用return语句终止本函数。例如: void Func(void){ A *a = new A

2007-05-22 19:19:00 672

原创 【linux编程】C++内存管理详解(一)

伟大的Bill Gates 曾经失言:  640K ought to be enough for everybody — Bill Gates 1981  程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式  内存分配方式有三

2007-05-22 19:17:00 582

原创 【linux编程】C++内存管理详解(二)

4、指针参数是如何传递内存的? 如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例7-4-1中,Test函数的语句GetMemory(str, 200)并没有使str获得期望的内存,str依旧是NULL,为什么? void GetMemory(char *p, int num){ p = (c

2007-05-22 19:15:00 617

原创 zz修改Linux内核增加系统调用

修改Linux内核增加系统调用     本文修改内核2.4.29,分两部分,第一部分修改内核并测试,第二部分解释从用户态调用新系统调用的过程。在Intel处理器上,可以通过调用门和软中断两种方式实现系统调用。Linux选择软中断的方式,内核通过软中断(int $0x80)给用户提供服务,即系统调用。本文参考了文后给出地址的文章,甚至系统调用代码也是从中而来,本文重在解释其调用过程。     一,修

2007-05-20 19:46:00 1354 1

原创 zzLinux核心数据结构

Linux核心数据结构- -                                      本章列出了Linux实用的主要数据结构。  block_dev_struct此结构用于向核心登记块设备,它还被buffer cache实用。所有此类结构都位于blk_dev数组中。 struct blk_dev_struct { void (*request

2007-05-20 17:43:00 845

原创 zzinit进程从内核态切换到用户态。

init进程从内核态切换到用户态。 //谢谢lucian_yao 邀请,在此灌水一篇大家都知道如何产生一个新的进程。通过sys_fork,之后再调用sys_execve系统初启后(核心态)的第一个用户态进程是init。这要涉及到内层(特权级高)向外层(特权级低)转移的问题。通常情况下,内核是不会调用用户层的代码,要想实现这逆向的转移,一般做法是在用户进程的核心栈(tss->esp0)压入用户态的S

2007-05-20 17:37:00 989

原创 Linux系统调用讲义

Linux下系统调用的实现 Unix/Linux操作系统的体系结构及系统调用介绍 什么是操作系统和系统调用     操作系统是从硬件抽象出来的虚拟机,在该虚拟机上用户可以运行应用程序。它负责直接与硬件交互,向用户程序提供公共服务,并使它们同硬件特性隔离。因为程序不应该依赖于下层的硬件,只有这样应用程序才能很方

2007-05-20 14:03:00 2889

原创 Linux系统调用列表

2002 年 3 月 01 日本文列出了大部分常见的Linux系统调用,并附有简要中文说明。以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解

2007-05-17 23:50:00 685

原创 zzlinux操作系统下c语言编程入门--信号处理

linux操作系统下c语言编程入门--信号处理Linux下的信号事件前言:这一章我们讨论一下Linux下的信号处理函数.Linux下的信号处理函数:信号的产生信号的处理其它信号函数一个实例1。信号的产生Linux下的信号可以类比于DOS下的INT或者是Windows下的事件.在有一个信号发生时候相信的信号就会发送给相应的进程.在Linux下的信号有以下几个. 我们使用 kill -l命令可以得

2007-05-17 23:03:00 700

原创 (zz)系统调用和库函数

1.11〓系统调用和库函数  所有操作系统都提供多种服务的入口点,由此程序向系统核请求服务。各种版本的Unix都提供经良好定义的有限数目的入口点,经过这些入口点进入系统核,这些入口点被称之为系统调用(system call),系统调用是我们不能更改的一种Unix特征。Unix版本7提供了约50个系统调用,4 3+BSD提供了约110个,而SVR4则提供了约120个。  系统调用界面总是在Unix程

2007-05-17 23:02:00 780

原创 [转帖]FORK()函数的两次返回的具体情况

[转帖]FORK()函数的两次返回的具体情况对于fork来说,父子进程共享同一段代码空间,所以给人的感觉好像是有两次返回,其实对于调用fork的父进程来说,如果fork出来的子进程没有得到调度,那么父进程从fork系统调用返回,同时分析sys_fork知道,fork返回的是子进程的id。再看fork出来的子进程,由copy_process函数可以看出,子进程的返回地址为ret_from_for

2007-05-16 21:00:00 876

原创 NASM中文手册

 NASM中文手册                         ============ 第一章: 简介   1.1 什么是NASM    1.1.1 为什么还需要一个汇编器?    1.1.2 许可条件   1.2 联系信息   1.3 安装    1.3.1 在dos和Windows下安装NASM    1.3.2 在unix下安装NASM  第二章 运行NASM   2.1 NA

2007-05-14 22:59:00 2237

原创 Intel CR寄存器,CPU工作模式

intel中的cr寄存器:    控制寄存器(CR0、CR 1、CR2和CR3)用於控制和确定处理器的操作模式以及当前执行任务的特性。 CR0:中含有控制处理器操作模式和状态的系统控制标志; CR1:保留不用; CR2:含有导致页错误的線性位址。 CR3:中含有页目錄表实体记忆体基底位址,因此该寄存器                                     

2007-05-14 16:08:00 3914 1

原创 zz消息分流器,子控件和API宏

WindowsX.h文件就是一组#define指令,建立了一组供我们使用的宏。WindowsX.h的宏实际分为三组:消息分流器,子控件和API宏一,消息分流器消息分流器(message cracker)使窗口过程的编写更加容易。通常,窗口过程是用一个大的switch语句实现的,利用消息分流器可将switch语句分成小的函数,每个窗口对应一个函数。这样使代码更容易管理。有关窗口过程的另一个问

2007-05-12 22:21:00 742

原创 (zz)对cout << 重载的源代码

#include #include #include #include #include using namespace std; class CA{public: CA(int i) : m_i(i) {  cout  }  CA(const CA& a) : m_i(a.m_i) {  cout  }  CA& operator = (const CA& a) {  m_i = a.m

2007-05-12 15:51:00 1662

原创 对对齐(alignment)的一些认识

关于内存地址对齐,尤其是struct中成员的对齐导致的struct的size问题很多人(包括我:()似乎都没有一个比较清晰的认识,所以产生了整理这方面思路和帖子的想法,下面的文字是资料、文档、实验和推测的混合体,有错误是肯定的:)。能给您提供一点帮助,是我最大的愿望。(有点麻了) 引: struct s {char c;int i;}; 在sizeof(char)=1 sizeof(int)=4的

2007-05-12 13:11:00 2556

原创 Java程序员面试三十二问 转帖

Java程序员面试三十二问  第一,谈谈final, finally, finalize的区别。  第二,Anonymous Inner Class (匿名内部类) 是否可 以extends(继承)其它类,是否可以  implements(实现)interface(接口)?  第三,Static Nested Class 和 Inner Class的不同,说得 越多越好(面试题有的很笼

2007-05-12 11:38:00 625

原创 typedef struct与struct的区别

1. 基本解释  typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。  在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。  至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。  2. t

2007-05-12 11:36:00 619

原创 关于Win32程序的基本原理

为了了解MFC,必须先了解Win32。因为Win32程序的来龙去脉和消息动向等等这些重要的动作在MFC应用程序中被Application Framework 封装起来了,所以对于程序员来说,必须先弄清楚Win32才能很好的理解MFC。 上图所示是Win32应用程序与操作系统之间的关系。 详细的代码框架如下:Generic.h文件中 BOOL InitApplic

2007-04-30 15:22:00 855

原创 解析#pragma指令

转自CSDN在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的

2007-04-30 15:10:00 586

原创 MFC程序和Win32程序的关系

 MFC把具有相当固定行为的WinMain内部操作封装在CWinApp中,把有着相当固定行为的WndProc内部操作封装在CFrameWnd中。 几乎可以说CWinApp用来取代WinMain在SDK程序中的地位,CFrameWnd取代SDK程序中窗口函数的地位。 首先MFC程序需要下面函数库:(1)       Windows C Runtime函数库:LIBC.LIB

2007-04-30 14:28:00 2035 1

原创 pe格式

翻译:Jason Sun(笑笑生) QQ:581613302004年5月10日[译注:仅供大家学习使用,您在复制或使用此文档时请保留这个文件头]Peering Inside the PE: A Tour of the Win32 Portable Executable File FormatMatt Pietrek1994 年3月Matt Pietrek 是Windows Intern

2007-04-12 02:32:00 842

原创 coff格式

COFF – 通用对象文件格式(Common Object File Format),是一种很流行的对象文件格式(注意:这里不说它是“目标”文件,是为了和编译器产生的目标文件(*.o/*.obj)相区别,因为这种格式不只用于目标文件,库文件、可执行文件也经常是这种格式)。大家可能会经常使用VC吧?它所产生的目标文件(*.obj)就是这种格式。其它的编译器,如GCC(GNU Compiler Col

2007-04-12 01:51:00 1133

GCC源代码核心分析

GCC源代码核心分析,很好的学习gcc的资料

2011-02-21

C++编程思想(第二版.附源码).zip

C++编程思想(第二版.附源码).zip

2007-04-03

空空如也

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

TA关注的人

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