http://blog.csdn.net/column/details/15153.html
http://blog.csdn.net/column/details/linuxkernel.html
char *dest
注意,在提领运算符的周围加上合适的空格尤为重要。正确的风格是:
char *strcpy(char *dest, const char *src)在提领运算符的一边加上空格是不良的风格:
char * strcpy(char * dest, const char * src) /*BAD STYLE*/
把提领运算符放在紧挨类型的地方也是借用 C++ 风格的一种不良作风:
char* strcpy(char* dest, const char* src) /*BAD STYLE*/
Q:如何查看分区和目录及使用情况?
– fdisk查看硬盘分区表
– df:查看分区使用情况
– du: 查看文件占用空间情况
Q: 为什么要分区,如何分区?
– 可以把不同资料,分别放入不同分区中管理,降低风险。
– 大硬盘搜索范围大,效率低
– 磁盘配合只能对分区做设定
– /home /var /usr/local经常是单独分区,因为经常会操作,容易产生碎片。
每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下:
① 任何一个分区都必须挂载到某个目录上。
② 目录是逻辑上的区分。分区是物理上的区分。
③ 磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。
④ 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。
Linux正统的文件系统(如ext2、3等)将硬盘分区时会划分出目录块、inode Table区块和data block数据区域。一个文件由一个目录项、inode和数据区域块组成。Inode包含文件的属性(如读写属性、owner等,以及指向数据块的指针),数据区域块则是文件内容。当查看某个文件时,会先从inode table中查出文件属性及数据存放点,再从数据块中读取数据。
当我们读取一个文件时,实际上是在目录中找到了这个文件的inode编号,然后根据inode的指针,把数据块组合起来,放入内存供进一步的处理。当我们写入一个文件时,是分配一个空白inode给该文件,将其inode编号记入该文件所属的目录,然后选取空白的数据块,让inode的指针指像这些数据块,并放入内存中的数据。
首先回答最常见的问题,“什么是文件系统”。文件系统是对一个存储设备上的数据和元数据进行组织的机制。
什么是块设备?
阻塞是主动放弃CPU,但不会放弃内存。一般是被动的。
挂起:一般是主动的,由系统或程序发出,甚至于辅存中去。(不释放CPU,可能释放内存,放在外存)
阻塞:一般是被动的,在抢占资源中得不到资源,被动的挂起在内存,等待某种资源或信号量(即有了资源)将他唤醒。(释放CPU,不释放内存)
由软件引发中断控制器工作,所产生的中断叫做软中断。
由硬件引发………………………………………………………硬中断。
(5)硬中断和软中断的区别
软中断是执行中断指令产生的,而硬中断是由外设引发的。
硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
硬中断是可屏蔽的,软中断不可屏蔽。
硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。
1. 上半部和下半部的区别
上半部指的是中断处理程序,下半部则指的是一些虽然与中断有相关性但是可以延后执行的任务。举个例子:在网络传输中,网卡接收到数据包这个事件不一定需要马上被处理,适合用下半部去实现;但是用户敲击键盘这样的事件就必须马上被响应,应该用中断实现。
两者的主要区别在于:中断不能被相同类型的中断打断,而下半部依然可以被中断打断;中断对于时间非常敏感,而下半部基本上都是一些可以延迟的工作。由于二者的这种区别,所以对于一个工作是放在上半部还是放在下半部去执行,可以参考下面四条:
a)如果一个任务对时间非常敏感,将其放在中断处理程序中执行。
b)如果一个任务和硬件相关,将其放在中断处理程序中执行。
c)如果一个任务要保证不被其他中断(特别是相同的中断)打断,将其放在中断处理程序中执行。
d)其他所有任务,考虑放在下半部去执行。
tasklet
由于软中断必须使用可重入函数,这就导致设计上的复杂度变高。作为设备驱动程序的开发人员来说,添加了负担。而假设某种应用并不须要在多个CPU上并行运行,那么软中断事实上是没有必要的。
因此诞生了弥补以上两个要求的tasklet。它具有以下特性:
a)一种特定类型的tasklet仅仅能运行在一个CPU上,不能并行,仅仅能串行运行。
b)多个不同类型的tasklet能够并行在多个CPU上。
c)软中断是静态分配的。在内核编译好之后,就不能改变。但tasklet就灵活很多,能够在运行时改变(比方加入模块时)。
tasklet是在两种软中断类型的基础上实现的。因此假设不须要软中断的并行特性,tasklet就是最好的选择。也就是说tasklet是软中断的一种特殊使用方法。即延迟情况下的串行运行。tasklet不可重入。
并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序。
并行,是每个cpu运行一个程序。
打个比方。并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。