不少人把同步、异步、阻塞、非阻塞放到一起讨论,很多时候难以区分。
这里从根上剖析下该怎么看待这几个概念。
首先,异步和同步是相对的,而同步情况下又有阻塞和非阻塞之分。
异步很容易理解。当用户程序需要进行IO的时候,发出IO请求,然后就立刻返回,可以继续做其它事情。
例如,从网络收包,当包抵达后放到内核某个缓存区,并且从内核空间放置到程序需要的用户空间后(一种是直接复...
分类:
其他好文 时间:
2014-10-10 23:07:44
阅读次数:
166
摘要:本文主要讲述内核空间资源的收回,分析了wait和waitid函数的基本使用方法,以及它们之间的差异....
分类:
其他好文 时间:
2014-10-10 14:31:14
阅读次数:
260
摘要:本文主要介绍进程资源和进程状态.进程资源由两部分组成:内核空间进程资源以及用户空间进程资源.进程状态,就绪/运行状态、等待状态(可以被中断打断)、等待状态(不可以被中断打断)、停止状态和僵死状态....
分类:
其他好文 时间:
2014-10-10 12:01:54
阅读次数:
226
我们经常会在C程序中调用malloc()函数动态分配一块连续的内存空间并使用它们。那么,这些用户空间发生的事会引发内核空间什么样的反应呢?
malloc()是一个API,这个函数在库中封装了系统调用brk。因此如果调用malloc,那么首先会引发brk系统调用执行的过程。brk()在内核中对应的系统调用服务例程为SYSCALL_DEFINE1(brk, unsigned long, brk),参数brk用来指定heap段新的结束地址,也就是重新指定mm_struct结构中的brk字段。
br...
分类:
其他好文 时间:
2014-10-09 02:09:57
阅读次数:
279
首先说明,对于linux系统而言,tcp/ip协议栈是工作在内核空间中实现而且在内核中是按照流水线方式实现的当我们去接收一个报文时,由各栈去解封装,而这是由流水线去处理的而流水线是非copy类型的,所谓非copy类似就是直接送往下一个流水线而不是从TCP内存中复制到IP栈的内存,..
分类:
系统相关 时间:
2014-09-29 21:26:13
阅读次数:
522
Wireless-Extensions--旧的无线驱动框架 mac80211--为softMAC驱动服务的API cfg80211--新的配置API nl80211--新的用户控件<->内核空间通讯方式 组件交互的基本原理图 [Wireless Card] ? ?? ?| [Linux Kernel...
分类:
其他好文 时间:
2014-09-29 19:26:21
阅读次数:
238
首先说一下keepalived:
Keepalived大致分两层结构:用户空间userspace和内核空间kernelspace
在
这个结构图里,处于下端的是内核空间,它包括ipvs和NETLINK两个部分。Ipvs的作用在前面的章节已经做过描述,不再重复叙述;netlink
提供高级路由及其他相关的网络功能,如果我们..
分类:
其他好文 时间:
2014-09-29 17:33:31
阅读次数:
231
When a process running in user mode requests additional memory, pages are allocated from the list of free page frames maintained by the kernel. This l...
分类:
系统相关 时间:
2014-09-28 22:27:25
阅读次数:
419
一 概念
内核分配的一块存储去,多个进程可以将物理内存映射到进程的虚拟地址空间,从而实现对内存的直接操作,是效率最高的IPC。
消息队列和管道都有在用户地址空间和内核空间相互复制产生的开销。
二 操作函数
1 创建共享内存
#include
#include
int shmget( key_t key, //代...
分类:
其他好文 时间:
2014-09-22 15:56:52
阅读次数:
312
Linux操作系统和内核操作系统内核设计一直分为两个阵营:微内核和单内核。单内核是两大阵营中一种较为简单的设计,指的是整个内核从整体上作为一个单独的大过程来实现,并且同时运行在一个单独的地址空间内。所有的内核服务都在这样一个大的内核空间运行,内核之间的通信可以简..
分类:
系统相关 时间:
2014-09-18 16:42:34
阅读次数:
198