一、Linux系统调用及用户编程接口(API)
1、系统调用
操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务
系统调用并不是直接与程序员进行交互的,它仅仅是一个通过软中断机制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编程接口—API
系统命令相对API更高了一层,它实际上一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能
2、用户程序不能直接访问系统内核提供的服务的原因
由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。
核心(Kernel)的基础功能
本地存储
- 文件操作(系统调用、C库函数)
- 数据库(数据库指令、C编程)
多任务
- 进程
- 创建方法:for、vfor;
- 等待wait;
- 退出qxit;
- 让当前进程执行新的任务exec;
- 进程间的通讯
- 管道通信
- 有名
- 无名
- 信号(唯一异步)
- 共享内存;(效率高)
- 消息队列;
- 管道通信
- 线程(同一进程)
- 创建(create)
- 退出(qxit)
- 等待(join)
- 同步(复制锁条件变量)
网络编程
- TCP——有链接、有协议、有先后
- 并发
- socket
- UDP
- 循环——线程节省内存空间
Linux中文件及文件描述符概述
1、Linux文件
- Linux一点哲学,“一切皆为文件”;在Linux中对目录和设备的操作都等同于对文件的操作;
- Linux文件可分为:普通文件,目录文件,链接文件,设备文件;
2、文件描述符
不带缓存的(系统调用)——文件访问
系统调用
- 创建
- 打开
- 关闭
库函数
- 创建
- 打开
- 读
- 写
- 读字符
- 写字符
头文件,编程接口,编程接口对应函数……类型,用法,步骤