- 博客(16)
- 收藏
- 关注
转载 makefile--自动化编译
源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error),在VC下,这种错误一般是:Link 2001错误,意思说是说,链接器未能找到
2016-08-24 15:53:08 471
原创 linux内核设计与实现读书笔记——设备和模块
一、设备类型1、块设备 blkdev:以块为单位寻址,支持重定位(数据随机访问),通过块设备节点来访问。2、字符设备cdev:不可寻址,提供数据流访问,通过字符设备节点访问。3、网络设备:对网络的访问,通过物理适配器和协议进行访问。4)杂项设备miscdev:表示简单设备;伪设备二、模块可装载内核模块:单独的二进制镜像,允许内核在运行时i动态插入或删除代码。ps 静态编
2015-01-20 14:04:49 400
原创 linux内核设计与实现读书笔记——页高速缓存
一、页高速缓存内容对应磁盘上的物理快的内存物理页面。写缓存实现策略:1)nonwrite:直接写磁盘,同时将缓存中数据失效。2)write-through cache:自动更新内存缓存同时更新磁盘文件。3)写回:写到缓存中并标记页面为脏,加入脏页链表中,由写回进程周期性写回磁盘。(linux使用的方法)缓存回收策略:1)最近最少使用LRU:跟踪页面的访问(或按照访问时间
2015-01-08 09:41:15 485
原创 linux内核设计与实现读书笔记——进程的地址空间
进程的地址空间:由进程可寻址的虚拟内存组成(一般采用平坦地址空间,也有采用段地址空间,内存区域:可呗进程访问的合法地址,可以包含代码段、数据段、未初始化全局变量内存映射(bss段零页),进程用户空间栈内存映射,共享内存段、内存映射文件、匿名内存映射等内存对象。内存描述符:描述进程的地址空间,mm_struct定义在中,包括内存对象的地址、使用该地址的进程、页表等信息,自身链接在双向链表中。
2015-01-06 09:59:33 494
原创 linux内核设计与实现读书笔记——IO层
IO层设备分为两种1)块设备:能够随机访问固定大小的数据片,以安装文件系统的方式使用2)字符设备:按照字符流的方式被有序访问。块设备的管理:1)单位文件快/IO快:扇区的2的整数倍,小于页面大小,访问文件系统的单位。缓冲区:每个缓冲区与一个快对应,是瓷盘快在内存中的表示;缓冲区头:缓冲区的描述符,用buffer_head结构体描述,定义在,描述磁盘快和物理内存缓冲区之间
2015-01-05 09:50:47 334
原创 linux内核设计与实现读书笔记——虚拟文件系统
虚拟文件系统VFS:内核子系统,为内核用户程序提供文件和文件系统的相关接口。一、通用文件系统接口:可以使用通用系统调用对不同介质和文件系统进行操作。原因:内核在底层文件系统接口建立抽象层——通用文件系统模型,包括文件系统常用功能集和行为,使得linux能够支持各种文件系统。实际文件系统通过编程提供VDS期望的抽象接口和数据结构。流程:用户空间操作——> 虚拟文件系统接口——>实际文
2014-12-15 10:30:57 485
原创 linux内核设计与实现读书笔记——内存管理
一、页内存管理的基本单位;页。内核中用struct page表示物理页,位于,属性包括flag页状态、count页的引用计数,virtual页虚拟地址。目的在于描述物理内存本身。??1)获得页 核心:alloc_pages(gft_t gft_mask,order),连续分配2n个连续物理页,返回至向第一个页page结构体的指针;也有函数返回逻辑地址get_free_page;也
2014-12-10 09:59:59 436
原创 linux内核设计与实现读书笔记——内核同步
内核并发原因:1)中断:由于中断可以打断当前正在执行的代码异步发生2)软中断和tasklet:内核可以打断当前正在执行的代码,在任何时刻唤醒或者调度软中断和tasklet3)内核抢占:被其它内核任务抢占4)睡眠、用户空间同步:内和执行的进程睡眠引起程序调度5)对称多处理器:多个处理器同时并发执行代码
2014-12-02 17:31:20 450
原创 系统调用——linux内核设计与实现读书笔记
应用程序——>C库——>内核API:用户空间实现的应用编程接口。POSIX:Unix可移植操作系统标准 和 SUSv3:C库:实现了Unix的主要API,包括标准C库函数和系统调用接口。系统调用: 函数形式: asmlinkage long sys_XXX(void) 系统调用号:内核记录系统调用表中所有已注册的系统调用以及对应调用号,存储于 arch/i386/k
2014-11-26 11:12:32 406
原创 Bochs使用总结
Bochs是由Kevin Lawton 于1994年开始开发的一个用于完全模拟Intel的x86模拟器。使用C++开发的,它被设计成可以运行于多种主流平台下,包括x86, PPC, Alpha, Sun和MIPS。Bochs全部用软件来模拟的,从启动到重启,包括PC的外设键盘,鼠标,VGA卡,磁盘,网卡等。Bochs自带调试器bochsdbg,它可以从PC机刚启动的时就开始模拟。
2014-10-29 09:59:50 544
转载 汇编知识
.section指示把代码划分成若干个段(Section),程序被操作系统加载执行时,每个段被加载到不同的地址,操作系统对不同的页面设置不同的读、写、执行权限
2014-10-23 14:58:44 404
原创 linux读书笔记-硬盘分区
Linux : ext2 档案格式,Windows: FAT表。Linux可支持Windows。磁盘组成:sector-> cyliner -> partitions 。磁盘扇区(sector)一般包括512个字节,扇区(sector)是磁盘的最小存储单位。partition:使用磁盘分割表将硬盘划为不同区块。逻辑扇区blocks是文件系统层的,为操作系统中分配容量和存取数
2014-10-20 10:14:55 328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人