Linux操作系统及调用接口

news/2024/7/9 17:59:13 标签: 操作系统, epoll, 网络

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+)。带缓冲区的,基于流缓冲,将数据尽量多的写入缓存区再一次性读取,减少用户态-内核态-用户态的切换,提高程序执行效率。

转载于:https://www.cnblogs.com/hjh-666/p/11449451.html


http://www.niftyadmin.cn/n/904005.html

相关文章

操作系统中进程调度策略有哪几种?

FCFS(先来先服务),优先级,时间片轮转,多级反馈-调度算法。 先来先服务调度算法:是一种最简单的调度算法,每次调度是从进程队列中选择一个最先进入该队列的进程,为之分配资源投入运行。该进程一直运行完成或…

open_basedir的配置

.user.ini的使用 1.限制目录访问 解锁:chattr -i .user.ini加锁:chattr i .user.ini .user.ini配置 open_basedir/项目路径/:/tmp/:/proc/ 例: open_basedir/www/aaa/:/tmp/:/proc/ 转载于:https://www.cnblogs.com/huay/p/11451529.ht…

阿里云oss 直传

sts获取 参考https://help.aliyun.com/document_detail/28792.html?spma2c4g.11186623.6.786.6fb238dfI9iiqA 配置config.php 获取sts信息 <?phpnamespace common\coment; include_once aliyun-php-sdk/aliyun-php-sdk-core/Config.php;use DefaultProfile; use DefaultAc…

[Arc102B]All Your Paths are Different Lengths_构造_二进制拆分

All Your Paths are Different Lengths 题目链接&#xff1a;https://atcoder.jp/contests/arc102/tasks/arc102_b 题解&#xff1a; 构造题有技巧&#xff0c;如果题目中要求了20和60&#xff0c;那就从这里入手好了。 发现没法入手因为太平凡了.... 但是&#xff0c;他要求了…

linux 配置compoer

配置默认php 删除rm -f /usr/bin/php 改到php7.3版本的composerln -sf /www/server/php/73/bin/php /usr/bin/php 多版本支持 配置php7专用composer70 cd /www/server/php/70/bin/ curl -sS https://getcomposer.org/installer | ./php 配置启动文件 vi /usr/local/bin/compos…

看着四年前的代码,那时奋斗的模样,百感滋味

第一次感受到代码&#xff0c;也冲滞着无尽的时光&#xff0c;带着现在的我&#xff0c;感受着回忆的力量。 大学&#xff0c;校园&#xff0c;实验室&#xff0c;智能车竞赛...那些的真的很美好&#xff0c;都是加油奋斗的身影&#xff0c;很充实&#xff0c;很满足&#xff0…

yii2 钩子函数

插入时间 public function beforeSave($insert) {$this->created_attime();return parent::beforeSave($insert); // TODO: Change the autogenerated stub } 转载于:https://www.cnblogs.com/huay/p/11460013.html

yii2 分页

基于数据提供者 public function actionIndex(){$page Yii::$app->get(page, 0);$modelClass $this->modelClass;return new ActiveDataProvider([query > $modelClass::find()->asArray(),pagination > [pageSize >10, page > $page],]);} 基于分页类 …