插口层简介(一)
来源:互联网 发布:js声明二维数组 编辑:程序博客网 时间:2024/05/04 17:07
1.描述符的概念
通过调用socket函数,可以获得一个socket描述符,这个描述符具体其他Unix描述符的所有特性:可以用这个描述符调用read和write,调用fork后,父进程和子进程可以共享它;
一个描述符是进程的进程表表项的一个数组的下标,这个数组项指向一个打开文件表的结构;
进程可以通过描述符访问插口上的网络连接;
2. 系统调用
进程同内核的交互是通过一组已经定义好的函数来进行的,这些函数就称为系统调用;
在BSD内核中,每个系统调用都对应一个编号,当进程执行一个系统调用时,标识系统调用的整数作为参数被传递给内核函数syscall,根据编号syscall在表中找到请求的系统调用的sysent结构;
struct sysent{int sys_narg;/* 参数个数 */int (*sy_call) ();/* 要执行的函数 */};struct sysent sysent[] = {/* ... */{3, recvmsg},/* 27 = recvmsg */{3, sendmsg},/* 28 = sendmsg */{6, recvfrom},/* 29 = recvfrom *//* ... */};
syscall将参数从调用进程复制到内核中,并分配一个数组来保存系统调用的结果,当系统调用执行完后,syscall将结果返回给进程;
例如:
socket系统调用的原型是:
int socket(int family, int type, int protocol);
实现socket系统调用的内核函数的原型是:
socket(struct proc *p, struct socket_args *uap, int *retval);指针p指向调用系统调用的进程表项;
retval是用来保存系统调用返回结果的数组;
0 0
- 插口层简介(一)
- 插口层
- 《TCP/IP详解卷2:实现》笔记--插口层
- UIView 简介(一)ios 显示图层的层次框架
- UI层自动化测试框架(一)-简介和环境搭建
- 弹出层(一)
- 应用层(一)
- 网络层(一)
- Android设备调试(一)没有USB插口,通过TCP/IP调试
- 3 运输层(一)
- 网络层基础(一)
- CCNA学习笔记一 网络术语简介,OSI七层模型简介
- JavaScript 简介(一)
- 拓扑学简介(一)
- CSS简介(一)
- CRF简介(一)
- SVM简介(一)
- NIMM简介(一)
- linux ftp服务器配置
- js: touch 事件,滑动的实现
- Ubuntu 14.10更换软件源问题
- 技术干货:人工智能和机器学习领域中有趣的开源项目
- OC核心语法
- 插口层简介(一)
- jvm编码
- ListView的连续getView两轮的解决方法
- 指针变量的交换
- HDU 4106 Fruit Ninja 区间k覆盖问题 最小费用流
- ajax 提交form数据
- iOS APP 架构漫谈
- 有关vector元素的取地址
- 《C#高级教程》学习笔记3