zoukankan      html  css  js  c++  java
  • Linux操作系统及调用接口

    Linux操作系统包含以下各子系统:

     

    系统调用子系统:操作系统的功能调用同一入口;

    进程管理子系统:对执行程序进行生命周期和资源管理;

    内存管理子系统:对系统的内存进行管理、分配、回收、隔离;

    文件子系统    :系统内部一切皆文件,对文件进行管理;

    设备子系统    :对输入、输出设备进行管理;

    网络子系统    :负责对外交流,网络协议栈和收发网络包。

    内核结构图如下:

     

    1.虚拟文件系统VFS

      位于用户空间和内核具体文件系统之间,是各种具体的文件系统提取出来的抽象层,为用户提供标准的文件系统调用接口。对具体的文件系统的数据结构进行抽象,以统一的接口进行处理调用(readopen)。

     

    1. 系统IO操作(接口)

    包括:a.基本文件操作:openreadwrite;  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多路复用IOepollpollselect函数)

      selectpoll基本是差不多的,除了select监听事件个数限制(1024个),其他和poll没有太大区别。用户程序每次监听,都要将其监听事件集从用户态拷贝到内核态执行,然后再返回用户态,一旦有事件触发,只能通过遍历的方式才能找到触发事件,开销很大。

      Epoll最优秀的多路复用机制!监测无上限,在注册新事件时只需一次拷贝所有监听事件到内核即可epoll是只关心活跃的fd,通过回调机制无序遍历,提高效率。

    3标准IO操作

      基本的IO操作(readwriteopen都没有缓冲空间,用户程序必须要从用户态切换至内核态,执行相应的命令操作,再返回用户态继续执行代码。 -> 为提高用户程序执行效率,Linux还提供了标准IO操作(fopen()fread()fwrite()gets()puts()等,r,rb+,w.wb+)。带缓冲区的,基于流缓冲,将数据尽量多的写入缓存区再一次性读取,减少用户态-内核态-用户态的切换,提高程序执行效率。

  • 相关阅读:
    P1006 传纸条
    P1387 最大正方形
    P1417 烹调方案
    P1052 过河
    P1063 能量项链
    P1736 创意吃鱼法
    P1156 垃圾陷阱
    P1220 关路灯
    @P1373 小a和uim之大逃离
    【leetcode】Interleaving String
  • 原文地址:https://www.cnblogs.com/hjh-666/p/11449451.html
Copyright © 2011-2022 走看看