Linux操作系统及调用接口
Linux操作系统包含以下各子系统:
系统调用子系统:操作系统的功能调用同一入口;
进程管理子系统:对执行程序进行生命周期和资源管理;
内存管理子系统:对系统的内存进行管理、分配、回收、隔离;
文件子系统 :系统内部一切皆文件,对文件进行管理;
设备子系统 :对输入、输出设备进行管理;
网络子系统 :负责对外交流,网络协议栈和收发网络包。
内核结构图如下:
1.虚拟文件系统VFS
位于用户空间和内核具体文件系统之间,是各种具体的文件系统提取出来的抽象层,为用户提供标准的文件系统调用接口。对具体的文件系统的数据结构进行抽象,以统一的接口进行处理调用(read、open)。
1. 系统IO操作(接口)
包括:a.基本文件操作:open、read、write等; b.文件锁(避免多个用户进程对同一文件竞争操作,fcntl()对文件进行上锁),解决文件共享问题; c.多路复用:解决I/O复用问题(系统接口重复使用)
2.1.linux IO模型(5种)
应该是:同步阻塞IO、同步非阻塞IO、多路复用IO、信号驱动IO、异步IO
阻塞IO模型:系统调用的IO(接口)函数未完成,会一直阻塞挂起,直到数据拷贝完成;
非阻塞IO模型:无论应用程序在系统调用时是否完成,都立即返回!
多路复用IO模型:系统调用未完成,函数等待,系统IO还可以操作其他的函数调用;(多功能)
异步IO:进程先让内核完成IO操作,内核在通知进程操作完成;(分道)
前四种都是同步IO,只有最后一种才是异步IO。
2.2多路复用IO(epoll、poll、select函数)
select和poll基本是差不多的,除了select有监听事件个数限制(1024个),其他和poll没有太大区别。用户程序每次监听,都要将其监听事件集从用户态拷贝到内核态执行,然后再返回用户态,一旦有事件触发,只能通过遍历的方式才能找到触发事件,开销很大。
Epoll最优秀的多路复用机制!监测无上限,在注册新事件时只需一次拷贝所有监听事件到内核即可,epoll是只关心活跃的fd,通过回调机制无序遍历,提高效率。
3标准IO操作
基本的IO操作(read、write、open都没有缓冲空间,用户程序必须要从用户态切换至内核态,执行相应的命令操作,再返回用户态继续执行代码。 -> 为提高用户程序执行效率,Linux还提供了标准IO操作(fopen()、fread()、fwrite()、gets()、puts()等,r,rb+,w.wb+)。带缓冲区的,基于流缓冲,将数据尽量多的写入缓存区再一次性读取,减少用户态-内核态-用户态的切换,提高程序执行效率。
Linux操作系统及调用接口的更多相关文章
- Linux操作系统中系统调用接口
进程控制 fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 终止进程 _exit 立即终止当前进程 getdtablesize 进程所能打开的最大文件 ...
- linux设置定时任务调用接口
1.设置目录 cd /var/spool/cron 2.编辑文件(当前登录用户,不一定是root) vim root 3.添加内容 0 0 * * * wget http://192.144.141. ...
- linux操作系统基础
计算机概述 1.计算机接收用户输入指令数据,经过cpu数据与逻辑单元运算处理后,产生或储存成有用的信息--->I/O设备+cpu+处理信息=计算机. 2.计算机五大单元:I/O单元 内存单元 c ...
- 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解
http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- Linux操作系统学习_用户态与内核态之切换过程
因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录.页表等,这些操作显然不能随便让任何程序都可以做,于是就产 ...
- 第2课 Linux操作系统简介
1. Linux操作系统的构成 (1)内核(kernel) ①操作系统的核心,负责管理系统的进程.内存.设备驱动程序.文件和网络系统. ②控制系统和硬件之间的相互通信. ③决定着系统的性能和稳定性. ...
- 第一次作业:基于Linux操作系统深入源码进程模型分析
1.Linux操作系统的简易介绍 Linux系统一般有4个主要部分:内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使 ...
- Linux操作系统原理
Linux操作系统原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机经历的四个时代 1.第一代: 真空管计算机,输入和输出:穿孔卡片,对计算机操作起来非常不便,做一件事 ...
随机推荐
- Java 抽象类 抽象方法 使用说明
知识点 什么是抽象类 抽象类与普通类主要两点不同: 1.在类的修饰符后面多了一个abstract关键字 2.抽象类是不允许通过new来实例化的 由于抽象类不能通过new来实例化,所以基本上是在继承中当 ...
- 移动端1px的适配问题
先看个概念: window.devicePixelRatio = 物理像素 / dips(独立像素) window.devicePixelRatio是设备的物理像素和独立像素的比例,可以叫设备像素比. ...
- eetcode必要技巧--动态规划(一)
首先我们要搞清楚什么是动态规划 动态规划是运筹学中用于求解决策过程中的最优化数学方法.当然,我们在这里关注的是作为一种算法设计技术,作为一种使用多阶段决策过程最优的通用方法. 当然这个很难理解,但是按 ...
- vue-element-admin 模板 登录页面 post请求通过django的csrf认证,处理304错误
经过一天的研究,终于把 vue-admin-template 模板的 post 请求 和django的api 弄通了 没有了那该死的304报错了 直接贴代码: 在main.js中 我直接给设置了一个 ...
- HTC推出了VIVE Comos 全新 VR(虚拟现实)系列产品
据 The Verge 报道,近日,HTC 推出了 VIVE Comos 全新 VR(虚拟现实)系列产品.包括 Cosmos 精英套装.VIVE Cosmos XR 版.Cosmos Play 基础版 ...
- Echart饼形图和折线图的循环展示及选择展示
需求:根据不同的入参调同一接口,循环展示一组饼形图或折线图: 主要问题:在于给定的数据格式不符合图表的配置项格式,需要拆分组装数据:首先默认展示几个图表,当选中一个类别,需要展示其中一个的时候,页面中 ...
- mongo请求超时
no_cursor_timeout=True参数的使用 实例: import pymongo handler = pymongo.MongoClient().db.col with handler.f ...
- The Game Of Life – 数据结构与算法的敲门砖
The Game Of Life(生命游戏,又称为细胞自动机)几乎是所有数据结构与算法导论教程前言的一个很经典的程序了.这是一个零玩家游戏,发生在一个平面网格里.每个格子的细胞都有死亡和存活两种状态, ...
- 英伟达GPU虚拟化---申请英伟达测试License
此文基于全新的License 2.0系统,针对vGPU License的试用申请以及软件下载和License管理进行了详细的说明,方便今后我们申请测试License,快速验证GPU的功能. 试用步骤: ...
- Spring集成axis2
1.新建一个项目,结构如下 2.引入项目所需jar包 axis相关jar文件说明请查阅该博文 3.配置web.xml,注册axis2信息 <?xml version="1.0" ...