首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
操作系统
订阅
ns7381
更多收藏集
微信扫码分享
微信
新浪微博
QQ
24篇文章 · 0订阅
操作系统-5.7 IO方式
1)每次调用 select(),都需要把 fd 集合从用户态拷贝到内核态,这个开销在 fd 很多时会很大,同时每次调用 select() 都需要在内核遍历传递进来的所有 fd,这个开销在 fd 很多时也很大。 2)单个进程能够监视的文件描述符的数量存在最大限制,在 Linux …
操作系统-5.6 socket编程
1.1. 网络字节序 内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。 因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。 TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字…
操作系统-5.5 标准IO库函数
用户程序调用C标准I/O库函数读写文件或设备,而这些库函数要通过系统调用把读写请求传给内核(以后我们会看到与I/O相关的系统调用),最终由内核驱动磁盘或设备完成I/O操作。 C标准库为每个打开的文件分配一个I/O缓冲区以加速读写操作,通过文件的FILE结构体可以找到这个缓冲区,…
操作系统-5.4 Unbuffered I/O函数
C标准I/O库函数是如何用系统调用实现的。 返回这个FILE结构体的地址。 判断能否从I/O缓冲区中读到下一个字符,如果能读到就直接返回该字符,否则调用read(2),把文件描述符传进去,让内核读取该文件的数据到I/O缓冲区,然后返回下一个字符。 判断该文件的I/O缓冲区是否有…
操作系统-5.3 设备驱动
内核的阻塞机制:当应用程序从内核读取数据时,若此时内核没有数据(硬件没有穿送数据给内核),则会让应用程序等待(睡眠),等有数据时会唤醒应用程序。 进程阻塞是通过链式队列来实现,这个队列称为等待队列。Linux内核提供了有关等待队列来实现的接口:
操作系统-5.2 linux网络
可以使用bash shell中的以下语法打开TCP/UDP套接字。 “文件描述符”是与每个套接字相关联的唯一的非负整数。文件描述符0,1和2分别保留给stdin,stdout和stderr。因此,你必须指定3或更高(以未使用者为准)作为文件描述符。 “<>”意味着套接…
操作系统-5.1 Linux IO协议栈
LinuxIOStackLinuxIO模式及select、poll、epoll详解大话Select、Poll、Epoll
操作系统-4.5 文件和目录
文件IO中认识的文件类型有:普通文件-,目录文件d,链接文件l。 普通文件,符号链接文件及目录文件不仅有inode号,还占用磁盘空间。 管道文件和套接字、字符设备文件、块设备文件不占用磁盘空间,只有innode号。 stat(2)函数读取文件的inode,然后把inode中的各…
操作系统-4.4 实现文件系统
文件系统主要负责管理磁盘上的空间,磁盘上至少要包含三部分数据: superblock,inodes和数据块。 首先得有一个创建文件系统的工具(如ext2文件系统的mke2fs),用来将磁盘分区格式化成想要的格式,主要是初始化superblock和root inode。 读取in…
操作系统-4.3 ext2文件系统
我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息。下图是一个磁盘分区格式化成ext2文件系统后的存储布局。 文件系统中存储的最小单位是块(Bloc…