第一周总结
2010-08-29 23:17
260 查看
精通windows api:
1.文件系统:
卷(volumes)
磁盘和驱动器管理: 操作驱动器挂载点
文件和目录管理: 获取程序所在的目录,程序模块路径,获取和设置当前目录
查找文件,遍历指定目录下的文件和子目录
递归遍历目录树
获取,设置文件属性和时间
内存映射文件: 使用Mapping File提高文件读写的效率
通过Mapping File在进程间传递和共享数据
2.内存管理:
虚拟地址空间: 为了访问内存的统一和方便,操作系统允许其上运行的程序访问所有的4GB内存空间中的地址;
进程的内存空间: 32位的window操作系统将4GB的虚拟内存划分为两个部分,进程使用2GB,称为用户进程空间;内核使用2GB,称为系统地址空间或内核地址空间(也可设置为用户进程空间使用3GB,内核使用1GB),用户空间的地址范围为0x00000000~0x7FFFFFFF,内核空间的地址范围为0x80000000~0xFFFFFFFF
分页与分段内存管理,内存映射与地址转换: 32位地址的高10位称为页目录索引(Directory),次10位称为页表索引(Table),余下的12位为偏移(Offset)
进程的内存空间: 虚拟内存与物理内存的对应关系window系统中每个进程都有一个私有的虚拟地址空间,系统需要将每个进程的虚拟地址都映射到物理内存地址上;系统为每一个进程都创建一个页目录(Directory)和一组页表;每个进程的页表是独立的,而内核空间的页表是所有进程共享的
虚拟内存布局,内存的分工,堆与栈: 进程的虚拟内存空间分为两个部分,低2GB(或3GB)由应用程序使用,高2GB(或1GB)由系统内核程序使用;系统内核的内存空间中包括驱动程序,系统内核可执行程序,用于内存管理的数据结构(页目录,页表等),用于进程管理,线程调度的数据结构,各种中断处理程序,系统缓存等; 应用程序可使用的低地址空间中包括了应用程序的代码,数据(全局变量等),系统和用户DLL的代码,各线程的栈,堆等; 进程的每个线程都有自己的栈,栈与函数的调用,执行和返回及局部变量的保存有关,一般情况下,栈中保存着函数的参数,返回地址和局部变量,调用函数将参数入栈,调用指令将函数返回地址入栈,被调用函数负责保存调用函数的相关栈指针,为局部变量分配空间等; 堆是一种可以动态分配和释放的内存,由堆管理器进行管理,用户在程序中使用的内存分配函数都是通过堆进行分配的
堆管理: 用户使用内存分配函数分配的内存都位用堆中,所以使用堆管理函数对内存进行分配,释放等是最为直接的方式;Window系统中,每个进程都有自己的堆,每个进程的堆的数量也有所不同;堆(Heap)并不是内存块,而是一种用于内存管理的对象,也是一种内存组织的形式;
虚拟内存管理:进程的虚拟地址空间内存页面分为3种状态:空闲的(free),保留的(reserved)和提交的(committed); 如果直接分配内存为"提交的",那么在分配完成后就可以对内存进行访问
内存操作与内存信息管理:CopyMemory, FillMemory, MoveMemory, ZeroMemory
C++ primer plus:
类内存分配(C,C++技术交流群):
class A
{}
类大小为1,编译器为空类加入一个char,使类在内存中有个唯一的地址,不是空类时,就不会加
class A
{
char a;
int b;
char c;
}
大小为12
class A
{
char a;
char b;
int c;
}
类大小为:8
class A
{
char a;
int b;
double c;
}
类大小为16
class A
{
char a;
double b;
int c;
}
类大小为24
以上为类的内存地址对齐方式;
const Stock& topval ( const Stock& s)const
括号中的const表明,该函数不会修改被显式地访问的对象;
括号后的const表明,该函数不会修改被隐式地访问的对象;
由于该函数返回了两个const对象之一的引用,因此返回类型也应为const引用;
数据结构:
串:
KMP算法:晕了几天,还是没搞懂;最后,大概弄懂了意思,只是没从代码角度去理解;
中缀表达式,后缀表达式
递归两个条件:一是规模较大的问题能分解成为一个或多个规模较小,但具有类似于原问题特性的子问题,即较大的问题可用较小的子问题来描述,解原问题的方法同样可用来解这些子问题,如有必要,这种分解可以继续下去;二是存在一个或多个无须分解,可直接求解的最小子问题;前者称为递归步骤,后者称为终止条件;(典型:汉诺塔)
1.文件系统:
卷(volumes)
磁盘和驱动器管理: 操作驱动器挂载点
文件和目录管理: 获取程序所在的目录,程序模块路径,获取和设置当前目录
查找文件,遍历指定目录下的文件和子目录
递归遍历目录树
获取,设置文件属性和时间
内存映射文件: 使用Mapping File提高文件读写的效率
通过Mapping File在进程间传递和共享数据
2.内存管理:
虚拟地址空间: 为了访问内存的统一和方便,操作系统允许其上运行的程序访问所有的4GB内存空间中的地址;
进程的内存空间: 32位的window操作系统将4GB的虚拟内存划分为两个部分,进程使用2GB,称为用户进程空间;内核使用2GB,称为系统地址空间或内核地址空间(也可设置为用户进程空间使用3GB,内核使用1GB),用户空间的地址范围为0x00000000~0x7FFFFFFF,内核空间的地址范围为0x80000000~0xFFFFFFFF
分页与分段内存管理,内存映射与地址转换: 32位地址的高10位称为页目录索引(Directory),次10位称为页表索引(Table),余下的12位为偏移(Offset)
进程的内存空间: 虚拟内存与物理内存的对应关系window系统中每个进程都有一个私有的虚拟地址空间,系统需要将每个进程的虚拟地址都映射到物理内存地址上;系统为每一个进程都创建一个页目录(Directory)和一组页表;每个进程的页表是独立的,而内核空间的页表是所有进程共享的
虚拟内存布局,内存的分工,堆与栈: 进程的虚拟内存空间分为两个部分,低2GB(或3GB)由应用程序使用,高2GB(或1GB)由系统内核程序使用;系统内核的内存空间中包括驱动程序,系统内核可执行程序,用于内存管理的数据结构(页目录,页表等),用于进程管理,线程调度的数据结构,各种中断处理程序,系统缓存等; 应用程序可使用的低地址空间中包括了应用程序的代码,数据(全局变量等),系统和用户DLL的代码,各线程的栈,堆等; 进程的每个线程都有自己的栈,栈与函数的调用,执行和返回及局部变量的保存有关,一般情况下,栈中保存着函数的参数,返回地址和局部变量,调用函数将参数入栈,调用指令将函数返回地址入栈,被调用函数负责保存调用函数的相关栈指针,为局部变量分配空间等; 堆是一种可以动态分配和释放的内存,由堆管理器进行管理,用户在程序中使用的内存分配函数都是通过堆进行分配的
堆管理: 用户使用内存分配函数分配的内存都位用堆中,所以使用堆管理函数对内存进行分配,释放等是最为直接的方式;Window系统中,每个进程都有自己的堆,每个进程的堆的数量也有所不同;堆(Heap)并不是内存块,而是一种用于内存管理的对象,也是一种内存组织的形式;
虚拟内存管理:进程的虚拟地址空间内存页面分为3种状态:空闲的(free),保留的(reserved)和提交的(committed); 如果直接分配内存为"提交的",那么在分配完成后就可以对内存进行访问
内存操作与内存信息管理:CopyMemory, FillMemory, MoveMemory, ZeroMemory
C++ primer plus:
类内存分配(C,C++技术交流群):
class A
{}
类大小为1,编译器为空类加入一个char,使类在内存中有个唯一的地址,不是空类时,就不会加
class A
{
char a;
int b;
char c;
}
大小为12
class A
{
char a;
char b;
int c;
}
类大小为:8
class A
{
char a;
int b;
double c;
}
类大小为16
class A
{
char a;
double b;
int c;
}
类大小为24
以上为类的内存地址对齐方式;
const Stock& topval ( const Stock& s)const
括号中的const表明,该函数不会修改被显式地访问的对象;
括号后的const表明,该函数不会修改被隐式地访问的对象;
由于该函数返回了两个const对象之一的引用,因此返回类型也应为const引用;
数据结构:
串:
KMP算法:晕了几天,还是没搞懂;最后,大概弄懂了意思,只是没从代码角度去理解;
中缀表达式,后缀表达式
递归两个条件:一是规模较大的问题能分解成为一个或多个规模较小,但具有类似于原问题特性的子问题,即较大的问题可用较小的子问题来描述,解原问题的方法同样可用来解这些子问题,如有必要,这种分解可以继续下去;二是存在一个或多个无须分解,可直接求解的最小子问题;前者称为递归步骤,后者称为终止条件;(典型:汉诺塔)
相关文章推荐
- 20145101《Java程序设计》第一周学习总结
- 集训第一周总结
- 第一周CoreDRAW课总结
- 20162302 《程序设计与数据结构》第一周学习总结
- Linux第一周学习 总结!
- 20162307 《程序设计与数据结构》第一周学习总结
- 20162303《程序设计与数据结构》第一周学习总结
- in-第一周总结
- 《信息安全系统设计基础》 第一周学习总结
- 第一周总结
- 第一周总结
- c语言第一周总结-Basic
- 20155216 2017-2018-1 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155322 《信息安全系统设计》第一周学习总结
- 暑期留校学习总结(第一周)
- 第一周工作总结及计划表
- 第一周工作总结
- 2017开学训练第一周周中总结
- Python第一周学习总结
- 20165322 王瑶佳第一周学习总结