六、输入输出管理

ops/2024/10/20 0:09:47/

1.输入输出程序接口

由于各种设备的操作所提供的参数或者返回值都不同,也很难做到以设备独立性软件向上提供统一的接口,但是可以将设备进行分类,每一类设备由一种统一的接口操作。

①字符设备接口

get/put 系统调用:向字符设备读/写一个字符

②块设备接口

read/write 系统调用:向块设备的读写指针位置读/写多个字符;seek系统调用:修改读写指针位置

③网络设备接口

网络设备接口,又称“网络套接字(socket)接口’

socket系统调用:创建一个网络套接字,需指明网络协议(TCP?UDP?)

bind:将套接字绑定到某个本地“端口

connect:将套接字连接到远程地址

read/write:从套接字读/写数据

2.阻塞I/O和非阻塞I/O

阻塞I/0: 应用程序发出I0系统调用,进程需转为阻塞态等待

例如:字符设备接口--从键盘读一个字符 get

非阻塞1/0:应用程序发出I0系统调用,系统调用可迅速返回,进程无需阻塞等待

例如:块设备接口--往磁盘写数据 write

3.设备驱动程序接口

设备独立性软件需根据实际操作的设备不同,去调用不一样的驱动程序。

操作系统规定好设备驱动程序的接口标准,各商必须按要求开发设备驱动程序


http://www.ppmy.cn/ops/121925.html

相关文章

【Python】Eventlet 异步网络库简介

Eventlet 是一个 Python 的异步网络库,它使用协程(green threads)来简化并发编程。通过非阻塞的 I/O 操作,Eventlet 使得你可以轻松编写高性能的网络应用程序,而无需处理复杂的回调逻辑或编写多线程代码。它广泛应用于…

ArrayList源码实现(一)

ArrayList源码实现(一) 1. ArrayList的大小是如何自动增加的? 初始化 在构造函数中,可以设定列表的初始值大小,如果没有的话默认使用,提供的静态数据 public ArrayList(int initialCapacity) {if (initi…

双十一可以买什么物品?重磅推荐五款好用品牌!

距离今年的双十一盛典仅剩数十日,您是否已将心爱商品添加至购物车中了呢?还在犹豫未满载的朋友也无需焦虑,特意为您精选了五款好用的宝贝推荐,旨在为您的购物清单增添几分灵感与便捷,期待能为您的双十一购物之旅增添一…

MyBatis-Plus如何分页查询?

MyBatis-Plus提供了一种简单而强大的分页查询功能&#xff0c;可以通过使用Page对象和Mapper接口中的方法来实现。以下是分页查询的基本步骤&#xff1a; 添加分页插件依赖 确保你的项目中已经添加了MyBatis-Plus的分页插件依赖。 <dependency><groupId>com.bao…

RabbitMQ学习笔记

RabbitMQ学习笔记 简介RabbitMQ基础架构RabbitMQ的6种工作模式: RabbitMQ基本使用简单模式(一个生产者对应一个消费者)消息生产端消息消费端 work queues模式(一个生产者对应多个消费者)Publish/Subscribe 发布与订阅模式(通过exchange分发消息)消息生产端消息消费端 Routing路…

Microsoft AI部门的CEO额备忘录

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Oracle控制文件全部丢失如何使用RMAN智能恢复?

1.手动删除所有控制文件模拟故障产生 2.此时启动数据库发现控制文件丢失 3.登录rman 4.列出故障 list failure; 5.让RMAN列举恢复建议 advise failure; 6.使用RMAN智能修复 repair failure;

Oracle 数据库安装和配置详解

Oracle 数据库安装和配置详解 Oracle 数据库是一款功能强大、广泛使用的企业级关系数据库管理系统 (RDBMS)&#xff0c;适用于处理大型数据库和复杂事务。本文将介绍如何在 Linux 和 Windows 环境下安装 Oracle 数据库&#xff0c;并对其进行基本配置&#xff0c;帮助开发者快…