信号:1、最初被引入作为用户态进程间通信2、内核也使用信号通知进程系统所发生的事件3、信号很短,发送给进程的唯一信息通常是一个数。4、名称通常以SIG为前缀5、信号时可消费资源,每个信号只能被传递一次使用信号的目标:1、让进程知道已经发送了一个特定的事件2、强迫进程执行它自己代码中的信号处理程序。信...
分类:
系统相关 时间:
2015-08-17 17:17:06
阅读次数:
162
系统调用:用户态进程向内核发出的,实现用户态进程调用硬件设备的函数或者中断;优点:使编程更容易,将用户从学习硬件设备的低级编程特性中解放;提高系统到安全性,内核在满足请求之前可以做正确性检查;提高可移植性;系统调用与API调用的区别:1、API调用是一个函数定义;系统调用是通过软中断向内核发出的明确...
分类:
系统相关 时间:
2015-08-13 11:24:27
阅读次数:
131
read过程 :磁盘数据——>内核态缓冲区(内核态数据可能写回磁盘)——>用户态缓冲区(用户态数据可能被交换到交换区或写回到内核态缓冲区) 一个用户态进程 会有一个文件描述符数组,进程每次open一个文件就会在数...
分类:
系统相关 时间:
2015-08-12 19:56:10
阅读次数:
160
进程里面创建线程数收到总线的限制,32位最多只能访问4G内存,其中2G为用户态使用;而每个线程都有自己的栈大小;测试发现使用createthread创建线程;当栈设置为1M时,只能开大约1426个线程;当设置为512k时,可以开2244个线程,设置为256k时,可以开3122个线程,所以在我们做sock通信服务器时,需要注意,如果一个客户端 connect进来,就用一个线程对它进程处理的话,服务端...
分类:
编程语言 时间:
2015-08-12 19:30:04
阅读次数:
138
每个进程都有一组相关的资源限制来指定进程能使用的系统资源数量
对当前进程的资源限制存放在current->signal->rlim字段
rlim_cur字段是资源的当前资源限制
进程恢复执行前必须装入寄存器的一组数据称为硬件上下文
进程切换只发生在内核态,在执行进程切换之前,用户态进程使用的所有寄存器内容都意已保存在内核态堆栈上
每个进程切换由两部分组成:
切换页全局目录以安装一个新的...
分类:
系统相关 时间:
2015-07-31 18:40:52
阅读次数:
142
用户态对accept的标准用法: if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size)) == -1) { //accept()函数让服务器接收客户的连接请求 perror("accept Error\...
分类:
系统相关 时间:
2015-07-30 12:56:35
阅读次数:
450
select的几大缺点:每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大;每次调用select,内核需要遍历传递进来的所有fd(判断检测文件是否可用)。有时只有部分连接是“活跃”的,但是select/poll每次调用都会线性扫描全部的集合;select支持的文件...
分类:
其他好文 时间:
2015-07-30 12:44:57
阅读次数:
117
共享内存共享内存主要用于实现进程间大量数据传输。共享内存的数据结构定义:系统对共享内存的限制:共享内存与管道的对比:可以看到,共享内存的优势:1.共享内存只需复制2次,而管道需要4次2.共享内存不需要切换内核态与用户态,而管道需要。共享内存效率高!int shmget (key_t __key, s...
分类:
系统相关 时间:
2015-07-30 00:21:13
阅读次数:
284
strace
前言:strace常用来跟踪进程执行时的系统调用的所接受的信号.在linux世界,进程是不能直接访问硬件设备,当进程需要访问硬件(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备.strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间,有其在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用.当你...
分类:
系统相关 时间:
2015-07-29 12:18:39
阅读次数:
385
系统调用
所谓系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理等。
为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在...