程序员的自我修养九

Windows中,一个进程能够分配给堆用的空间不是连续的

 

一块连续的虚拟地址空间由可能是若干个不连续的物理页拼凑而成

 

堆分配算法:链表(free list)、位图(bitmap)、对象池

 

Msvc的I/O初始化主要进行了如下几个操作:建立打开文件表;如果能够继承自父系统,那么从父进程获取继承的句柄;初始化标准输入输出。在I/O初始化完成之后,所有的I/O函数就可以自由使用了

 

Linux下,x86下,系统调用由0x80中断完成,各个通用寄存器用于传递参数,EAX寄存器用于表示系统调用的接口号,比如EAX=1表示退出进程(eixt);EAX=2表示创建进程(fork);EAX=3表示读取文件或IO(read),EAX=4表示写文件或IO(write)

 

中断一般具有两个属性,一个称为中断号(从0开始),一个称为中断处理程序(interrupt service routine,ISR),不同的中断具有不同的中断号,而同时一个中断处理程序一一对应一个中断号。在内核中,由一个数组被称为中断向量表(interrupt vector table),这个数组的第n项包含了指向第n号中断的中断处理程序的指针

 

在i386下,windows里绝大多数系统调用都是由int 0x2e来触发的,而Linux则使用int 0x80来触发所有的系统调用

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值