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. 教你用纯Java实现一个网页版的Xshell(附源码)

    前言 最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:Gat ...

  2. django 博客搭建

    comment1.安装django pip install django 2.创建项目 django-admin startproject mysite 3.在mysite文件夹下创建app pyth ...

  3. 【春招】 java static 执行顺序

    package static类型.执行顺序; public class Test { Person person = new Person("Test"); static{ Sys ...

  4. react 新创建项目

    1,先创建一个文件夹用于存放项目 2,运行cmd,路径选择到你创建的文件夹内 3,  npm install -g create-react-app         create-react-app ...

  5. 对象数组化 Object.values(this.totalValueObj).forEach(value => {

    对象数组化 Object.values(this.totalValueObj).forEach(value => {

  6. Java多线程并发05——那么多的锁你都了解了吗

    在多线程或高并发情境中,经常会为了保证数据一致性,而引入锁机制,本文将为各位带来有关锁的基本概念讲解.关注我的公众号「Java面典」了解更多 Java 相关知识点. 根据锁的各种特性,可将锁分为以下几 ...

  7. 《仙剑奇侠传柔情版》Java的简单实现(二)

    基于<仙剑奇侠传柔情版>Java的简单实现(二) 2018-12-02 by Kris 需要上次的GameFrame.class中窗口框架承载:https://www.cnblogs.co ...

  8. 【Java】反射调用与面向对象结合使用产生的惊艳

    缘起 我在看Spring的源码时,发现了一个隐藏的问题,就是父类方法(Method)在子类实例上的反射(Reflect)调用. 初次看到,感觉有些奇特,因为父类方法可能是抽象的或私有的,但我没有去怀疑 ...

  9. 【开源】使用Angular9和TypeScript开发RPG游戏

    RPG系统构造 通过对于斗罗大陆小说的游戏化过程,熟悉Angular的结构以及使用TypeScript的面向对象开发方法. 项目地址 人物 和其他RPG游戏类似,游戏里面的人物角色大致有这样的一些属性 ...

  10. vue-element框架通过blob进行后端token权限验证下载

    在项目中,后端要求下载时要进行后端的权限验证,发现a链接进行直接下载无法满足这个需求,只能通过blob对象来进行下载操作,翻阅大量资料最后实现该功能.以下是我个人的理解,如有不足,请各位大佬多指教 / ...