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. Spring注解 - AOP 面向切面编程

    基本概念: AOP:Aspect Oriented Programming,即面向切面编程 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式 前置通知(@Before):在目标 ...

  2. Java 内存模型都不会,就敢在简历上写熟悉并发编程吗

    从 PC 内存架构到 Java 内存模型 你知道 Java 内存模型 JMM 吗?那你知道它的三大特性吗? Java 是如何解决指令重排问题的? 既然CPU有缓存一致性协议(MESI),为什么 JMM ...

  3. 作为一位Vue工程师,这些开发技巧你都会吗?

    路由参数解耦 一般在组件内使用路由参数,大多数人会这样做: export default { methods: { getParamsId() { return this.$route.params. ...

  4. 【MyBatis笔记】mapper文件的配置以及说明

    <!doctype html>[MyBatis笔记]mapper文件的配置以及说明 figure:last-child { margin-bottom: 0.5rem; } #write ...

  5. kerberos系列之kerberos安装

    最近搞了一下kerberos,准备写一个系列,介绍kerberos的安装,和常用组件kerberos配置,今天进入第一篇:kerberOS安装 具体kerberos是什么东西,大家可以百度查一下,这里 ...

  6. iOS开发:判断iPhone是否是刘海屏iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等

    保证能判断,呕心沥血,不行切JIJI 方法一 Objective-C // iPhoneX.iPhoneXR.iPhoneXs.iPhoneXs Max等 // 判断刘海屏,返回YES表示是刘海屏 - ...

  7. wpf xaml CS0426 错误原因

    wpf  程序集中 类命名空间名称和类名不能相同,否则在 xaml生成 i.g.cs时,会导致 自动生成代码无法推到处是类型还是命名空间的问题.   触发这个错误的条件是类命名空间 与 类名相同 并 ...

  8. 利用Docker手动构建WebLogic镜像的步骤

    info 我的Docker环境信息如下: [root@localhost ~]# docker info -f " OSType: {{.OperatingSystem}} {{.Archi ...

  9. AdFind

    C++实现(未开源),用于查询域内信息 http://www.joeware.net/freetools/tools/adfind/index.htm 常用命令如下: 列出域控制器名称: AdFind ...

  10. mybatis高级应用(四)_逆向工程

    1 逆向工程 源码请参考:云盘下工程 generatorSqlmapCustom 1.1     什么是逆向工程 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单 ...