随心记忆
2016-01-22 00:00
330 查看
摘要: 看到哪儿,记到哪儿。
2016-01-22,成都有雨夹雪
应用程序编程接口:给最上层的应用程序使用。
系统调用接口:在实现中往往以软件中断(linux下使用0x80号中断作为系统调用接口)的方式提供。
运行库:应用程序的提供者是运行库,不同的运行库提供不同的API。
如:Linux下的glibc提供POSIX的API,windows提供windows API,最常见的32位windows API称为win32
运行库:它是用操作系统提供的系统调用接口。
硬件接口:操作系统内核层对于硬件来说是硬件接口的使用者。硬件的接口定义决定了操作系统内核,具体来讲就是驱动程序如何操作硬件,如何与硬件进行通信。(及硬件规格:硬件生产厂商负责提供硬件规格,操作系统和驱动程序的开发者通过阅读硬件规格文档所规定的各种硬件编程接口标准来编写操作系统和驱动程序)
操作系统
功能一:向上提供抽象的接口。
功能二:向下管理硬件资源。(主要的三部分:cpu、存储器、I/0设备)
地址空间
虚拟地址空间:做到进程隔离。
物理地址空间:32位的计算机如果只有512M的内存,那么有效地址空间就是0x0000 0000 ~ 0x1FFF FFFF,其他部分无效(实际还有一些外部的I/O设备映射到物理空间,也是有效的)。
分段:基本思路是把一段与程序所需的内存空间大小的虚拟空间映射到某个足够地址空间。
分页:基本方法是把地址空间人为的等分成固定大小的页,每一页的大小有硬件决定,或硬件支持多种大小的页,由操作系统选择决定页的大小。(多个不同的进虚拟页映射到了相同的物理页,就实现了内存共享)(几乎所有的硬件都采用一个叫MMU(Memory Management Unit)的部件来进行页映射)
编译和链接
预处理 (Prepressing):生成.i文件。gcc -E hello.c -o hello.i 或 cpp hello.c > hello.i
处理宏、预编译指令、删除注释、添加行号和文件名标识(要保留#pragma)
编译(Compilation):生成.s文件。 gcc -S hello.i -o hello.s 或 cc1 hello.c
汇编(Assembly):生成.o文件。 gcc -c hello.s -o hello.o 或 as hello.s -o hello.o
链接(Linking):生成可执行文件。 ld -static crt1.o .............
链接过程包括:地址和空间分配、符号决议、重定位等步骤。
按照可执行文件格式存储的文件(.exe和elf,COFF格式的变种)
静态链接库:windows的.dll 和 linux的.so
动态链接库:windows的.lib 和 linux的.a
ELF文件标准:
linux下文件格式查看:file命令
2016-01-22,成都有雨夹雪
应用程序编程接口:给最上层的应用程序使用。
系统调用接口:在实现中往往以软件中断(linux下使用0x80号中断作为系统调用接口)的方式提供。
运行库:应用程序的提供者是运行库,不同的运行库提供不同的API。
如:Linux下的glibc提供POSIX的API,windows提供windows API,最常见的32位windows API称为win32
运行库:它是用操作系统提供的系统调用接口。
硬件接口:操作系统内核层对于硬件来说是硬件接口的使用者。硬件的接口定义决定了操作系统内核,具体来讲就是驱动程序如何操作硬件,如何与硬件进行通信。(及硬件规格:硬件生产厂商负责提供硬件规格,操作系统和驱动程序的开发者通过阅读硬件规格文档所规定的各种硬件编程接口标准来编写操作系统和驱动程序)
操作系统
功能一:向上提供抽象的接口。
功能二:向下管理硬件资源。(主要的三部分:cpu、存储器、I/0设备)
地址空间
虚拟地址空间:做到进程隔离。
物理地址空间:32位的计算机如果只有512M的内存,那么有效地址空间就是0x0000 0000 ~ 0x1FFF FFFF,其他部分无效(实际还有一些外部的I/O设备映射到物理空间,也是有效的)。
分段:基本思路是把一段与程序所需的内存空间大小的虚拟空间映射到某个足够地址空间。
分页:基本方法是把地址空间人为的等分成固定大小的页,每一页的大小有硬件决定,或硬件支持多种大小的页,由操作系统选择决定页的大小。(多个不同的进虚拟页映射到了相同的物理页,就实现了内存共享)(几乎所有的硬件都采用一个叫MMU(Memory Management Unit)的部件来进行页映射)
编译和链接
预处理 (Prepressing):生成.i文件。gcc -E hello.c -o hello.i 或 cpp hello.c > hello.i
处理宏、预编译指令、删除注释、添加行号和文件名标识(要保留#pragma)
编译(Compilation):生成.s文件。 gcc -S hello.i -o hello.s 或 cc1 hello.c
汇编(Assembly):生成.o文件。 gcc -c hello.s -o hello.o 或 as hello.s -o hello.o
链接(Linking):生成可执行文件。 ld -static crt1.o .............
链接过程包括:地址和空间分配、符号决议、重定位等步骤。
按照可执行文件格式存储的文件(.exe和elf,COFF格式的变种)
静态链接库:windows的.dll 和 linux的.so
动态链接库:windows的.lib 和 linux的.a
ELF文件标准:
可重定位的文件 | linux的.o,windows的.obj |
可执行的文件 | linux和windows的可执行程序 |
共享目标文件 | linux的.so,windows的.dll |
核心转储文件 | linux的core dump文件 |
相关文章推荐
- vollery框架支持https
- 对银行卡号的特殊处理
- Android中通过资源名称获取对应的ID
- 银行卡号的校验规则
- 银行卡号的校验规则
- 金额中加逗号
- 判断是否符合手机号规则
- 获取当前的IP地址
- 时间上的格式化
- EditText输入自动空格
- SpringMVC参数绑定---对象绑定
- MindMapper内置浏览器如何进行使用
- arm-linux头文件相关
- 即时通讯发消息出现ListView左边视图突然闪现,再加载右边视图的bug
- Android ORMLite的使用
- 别让惰性控制你
- 教你Zbrush中的四种裁切笔刷
- 2016/01/22 Python学习3
- 自定义SQL函数 实现SPlit字符截取功能
- 蜂窝教育安卓改变我的命运 现已是高薪工程师