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操作系统及调用接口的更多相关文章

  1. Linux操作系统中系统调用接口

    进程控制 fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 终止进程 _exit 立即终止当前进程 getdtablesize 进程所能打开的最大文件 ...

  2. linux设置定时任务调用接口

    1.设置目录 cd /var/spool/cron 2.编辑文件(当前登录用户,不一定是root) vim root 3.添加内容 0 0 * * * wget http://192.144.141. ...

  3. linux操作系统基础

    计算机概述 1.计算机接收用户输入指令数据,经过cpu数据与逻辑单元运算处理后,产生或储存成有用的信息--->I/O设备+cpu+处理信息=计算机. 2.计算机五大单元:I/O单元 内存单元 c ...

  4. 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解

    http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...

  5. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  6. Linux操作系统学习_用户态与内核态之切换过程

    因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录.页表等,这些操作显然不能随便让任何程序都可以做,于是就产 ...

  7. 第2课 Linux操作系统简介

    1. Linux操作系统的构成 (1)内核(kernel) ①操作系统的核心,负责管理系统的进程.内存.设备驱动程序.文件和网络系统. ②控制系统和硬件之间的相互通信. ③决定着系统的性能和稳定性. ...

  8. 第一次作业:基于Linux操作系统深入源码进程模型分析

    1.Linux操作系统的简易介绍 Linux系统一般有4个主要部分:内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使 ...

  9. Linux操作系统原理

    Linux操作系统原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机经历的四个时代 1.第一代: 真空管计算机,输入和输出:穿孔卡片,对计算机操作起来非常不便,做一件事 ...

随机推荐

  1. Netty学习(4):NIO网络编程

    概述 在 Netty学习(3)中,我们已经学习了 Buffer 和 Channel 的概念, 接下来就让我们通过实现一个 NIO 的多人聊天服务器来深入理解 NIO 的第 3个组件:Selector. ...

  2. 超级干货:动态防御WAF技术原理及编程实战!

    本文带给大家的内容是动态防御WAF的技术原理及编程实战. 将通过介绍ShareWAF的核心技术点,向大家展示动态防御的优势.实现思路,并以编程实战的方式向大家展示如何在WAF产品开发过程中应用动态防御 ...

  3. 1..Net平台的背景

    一:.Net平台的背景 1. 2010之前 的PC时代的时候,互联网规模还不是特别庞大,以静态编译式语言为代表的JAVA和.Net没什么太大区别,.net以windows自居. 2. 2010年以JA ...

  4. activiti设置customSessionFactories时的一个小坑

    现象:activiti设置customSessionFactories不起作用,流程还是走原来的查询方法原因:新实现的XXXEntityManagerFactory的getSessionType方法返 ...

  5. js 任意值变化封装

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. npm和yarn使用

    npm和yarn使用 他们都属于js包管理工具,都可以安装包或者模块yarn 是由facebook.google等联合开发推出的 区别: npm 下载包的话 比如npm install,它是按照包的排 ...

  7. 暴力+辗转相除法——N个数求和

    题目来源 PTA 团体程序设计天梯赛-练习集 L1-009 N个数求和 (20分) https://pintia.cn/problem-sets/994805046380707840/problems ...

  8. .net core 依赖注入, autofac 简单使用

    综述 ASP.NET Core  支持依赖注入, 也推荐使用依赖注入. 主要作用是用来降低代码之间的耦合度. 什么是控制反转? 控制反转(Inversion of Control,缩写为IoC),是面 ...

  9. C语言实现strcat / strlen / strcmp / strcpy

    主要考虑两点: 返回值对使用的便利性. 边界,null的判断. strcat char *m_strcat(char *des, const char *src) { assert((des != N ...

  10. Salesforce LWC学习(十四) Continuation进行异步callout获取数据

    本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.apex_continua ...