操作系统的功能:
1 操作系统接口
2 CPU管理
3 内存管理
4 设备管理
5 文件管理
操作系统的设计采用分层结构,越是上层,越接近用户
操作系统=内核+系统程序
系统程序=编译环境+API+AUI
编译环境=编译程序+连接程序+装载程序
Linux内核是单内核结构,即把内核作为一个大整体来实现,而各模块之间可以直接调用相关函数
延迟执行机制----下半部分,软中断,Tasklet,工作队列等
qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。
函数原型:
void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );
函数一共四个参数,没返回值。一个典型的qsort的写法如下:
void qsort(s,n,sizeof(s[0]),cmp);
其中第一个参数是参与排序的数组名(或者也可以理解成开始排序的地址,因为可以写&s[i],这个问题下面有说明);第二个参数是参与排序的元素个数; 第三个参数是单个元素的大小(推荐使用sizeof(s[0])这样的表达式,下面也有说明);第四个参数就是很多人觉得非常困惑的比较函数,关于这个函数,还要说的比较麻烦...
下面来讨论cmp这个比较函数(写成cmp是我的个人喜好,你可以随便写成什么,比如qcmp什么的)。典型的cmp的定义是:
int cmp(const void *a,const void *b);
返回值必须是int,两个参数的类型必须都是const void *,那个a,b是我随便写的两个参数。 假设是对int排序的话,如果是升序,那么就是如果a比b大返回一个正值,小则负值,相等返回0,后面有例子来说明对不同的类型如何进行排序。
在函数体内要对a,b进行强制类型转换后才能得到正确的返回值,不同的类型有不同的处理方法。