- 博客(6)
- 资源 (13)
- 收藏
- 关注
原创 Linux内核源代码情景分析-系统初始化
我们跳过boot,setup,直接来到head代码,内核映像的起点是stext,也是_stext,引导和解压缩以后的整个映像放在内存从0x100000即1MB开始的区间。CPU执行内核映像的入口startup_32就在内核映像开头的地方,因此其物理地址也是0x100000。 然而,在正常运行时整个内核映像都应该在系统空间中,系统空间的虚拟地址与物理地址间有个固定的位移,这就是0xC00000
2015-05-20 09:04:52 1896
原创 Linux内核源代码情景分析-设备文件系统devfs
我们以前多次讲过到,以主设备号/次设备号为基础的设备文件管理方式是有根本性的缺点的。这种从Unix早期
2015-05-09 16:02:00 2129
原创 Linux内核源代码情景分析-系统调用select以及异步输入/输出
一、系统调用select,把原来当前进程的单睡眠等待状态变成了现在的多睡眠等待状态。具体请看代码,select在内核中的实现为sys_select,代码如下:asmlinkage long sys_select(int n, fd_set *inp, fd_set *outp, fd_set *exp, struct timeval *tvp)//inp,outp,exp是关于已打开文件的位图,t
2015-05-08 08:40:28 1980
原创 Linux内核源代码情景分析-insmod
看本文前,先看着篇文章,Linux字符设备驱动。 insmod,大体上所做的事,有这么一些: 1、打开待安装模块并将其读入到用户空间。所谓“模块”就是经过编译但未经连接的.o文件。 2、模块中必定有一些在模块内部无法落实的符号(函数名或变量名),对这些符号的引用必须连接到内核中的相应符号。为此目的,需要通过系统调用query_module向内核询问这些符号在内核中的地址。如果内核
2015-05-07 08:23:27 2201
原创 Linux内核源代码情景分析-系统调用mknod
普通文件可以用open或者create创建,FIFO文件可以用pipe创建,mknod主要用于设备文件的创建。 在内核中,mknod是由sys_mknod实现的,代码如下:asmlinkage long sys_mknod(const char * filename, int mode, dev_t dev) //比如filename为/tmp/server_socket,dev是设备号 {
2015-05-05 20:25:03 2726
原创 Linux内核源代码情景分析-基于socket的进程间通信
一、利用插口实现进程间通信的流程示意图如下: 有连接插口通信流程示意图 二、client_server_local_sock,利用Unix域协议进行通信的客户端程序和服务端程序。 我们以一个实际的例子来讲解socket进程间通信。 先看server端:#include #include #include
2015-05-02 16:55:18 2874 1
压缩SDK demo
2014-08-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人