51CTO博客开发
共享内存 它允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个运行的进程之间传递数据的一种非常有效的方式。但是我们常需要同步机制来对共享内存进行访问。
标准I/O库提供buffer机制的原因就是为了减少调用底层系统调用I/O的次数。 buffered I/O库函数(fread, fwrite等,用户空 间) <----call---> unbuffered I/O系统调用(read,write等,内核空 间)<-------> 读写磁盘 buffered I/O库函数都是调用相关
文件操作 大多数情况下,只需知道5个基本的函数--open,close,read,write,ioctl(将控制信息传递给设备驱动程序)。在Linux中,一切都是文件。文件除了本身包含的文件内容以外,它还会有一个名字和一些属性,也就是文件的管理信息,包括文件的创建/修改日期和文件的访问权限等。这些属性都被保存在文件的inode节点中,它是文件系统中的一个特殊的数据块,它同时还
Memory mapped I/O就是把磁盘上的file映射到内存上,当我们从内存上fetch byte时,对应的file就被读取。同样的,当我们在内存上存储字节的时候,对应的file就被写入。这就让我们不需通过read和write系统调用而去操作I/O。 mmap内存映射建立一段可以被多个进程读写的内存段。共享内存。 mmap函数作用是告诉内核把给定的文件file映射到
poll函数和select函数非常相似,但是函数接口不一样。 int poll(struct pollfd fdarray[], nfds_t nfds, int timeout); int select(int maxfdp1, fd_set *restrict readfds, fd_set *restrict expectfds, struct timeval *
字节作为最小的可寻址的单位,而不是位bit。机器级程序将存储器看做一个非常大的数组,成为虚拟存储器。存储器的每个字节都由一个唯一的数字来标识,称为它的地址,所有可能的地址的集合就叫虚拟地址空间virtual address space。虚拟地址的主要目的就是展现给程序一个概念性的映像,将访问内存,磁盘,特殊硬件结合起来,为程序提供一个看上去统一的字节数组。 C编译器还把每个指
1. 前言 使用ioctl系统调用是用户空间向内核交换数据的常用方法之一,从ioctl这个名称上看,本意是针对I/O设备进行的控制操作,但实际并不限制是真正的I/O设备,可以是任何一个内核设备即可。 2. 基本过程 在内核空间中ioctl是很多内核操作结构的一个成员函数,如文件操作结构struct file_operations(include/linux/fs.
多路复用 在客户端/服务器模型中,服务器端需要同时处理多个客户端的连接请求,此时就需要使用多路复用。 实现多路复用最简单的方法是采用非阻塞的方式套接字,服务器端不断的查询每一个套接字的状态,如果有数据到达则读出数据,如果没有数据到达则查看下一个套接字。这种方法虽然简单,但是轮询过程中浪费了大量的CPU时间,效率非常的低。 另一种方法是服务器
Linux网络编程 1 套接字地址结构 struct sockaddr{ unsigned short sa_family;//地址类型 char sa_data[14]; //14字节的地址协议} sa_family表示套接字的协议族类型,对应于TCP/IP的协议该是AF_INET; 与该结构体等价的另一个数据结构:sockaddr_in。
本函数影响由fd 参数引用的一个打开的文件。 #include<unistd.h> int ioctl( int fd, int request, .../* void *arg */ ); 返回0 :成功 -1 :出错 第三个参数总是一个指针,但指针的类型依赖于request 参数。 我们可以把和网络相关的请求划分为6 类: 套接口操作
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号