4.1_6 文件的基本操作

news2025/1/12 15:50:11

文章目录

  • 4.1_6 文件的基本操作
    • (一)创建文件
    • (二)删除文件
    • (三)打开文件
    • (四)关闭文件
    • (五)读文件
    • (六)写文件
  • 总结

4.1_6 文件的基本操作

image-20240317211513416

(一)创建文件

image-20240317211546520

  进行 Create 系统调用时,需要提供的几个主要参数:

  1.所需的外存空间大小(如:一个盘块,即1KB)

  2.文件存放路径(“D:/Demo”)

  3.文件名(这个地方默认为“新建文本文档.txt”)

  操作系统在处理 Create 系统调用时,主要做了两件事:

  1.在外存中找到文件所需的空间(结合上小节学习的空闲链表法、位示图、成组链接法等管理策略,找到空闲空间)

  2.根据文件存放路径的信息找到该目录对应的目录文件(此处就是 D:/Demo 目录),在目录中创建该文件对应的目录项。目录项中包含了文件名、文件在外存中的存放位置等信息。

(二)删除文件

image-20240317211801425

  进行 Delete 系统调用时,需要提供的几个主要参数:

  1.文件存放路径(“D:/Demo”);

  2.文件名(“test.txt”)。

  操作系统在处理 Delete 系统调用时,主要做了几件事:

  1.根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项

  2.根据该目录项记录的文件在外存的存放位置、 文件大小等信息,回收文件占用的磁盘块。(回收磁盘块时,根据空闲表法、空闲链表法、 位图法等管理策略的不同,需要做不同的处理)

  3.从目录表中删除文件对应的目录项

(三)打开文件

  在很多操作系统中,在对文件进行操作之前,要求用户先使用 open 系统调用“打开文件”,需要提供的几个主要参数:

  1.文件存放路径(“D:/Demo”)

  2.文件名(“test.txt”)

  3.要对文件的操作类型(如:r 只读; rw 读写等)

  操作系统在处理 open 系统调用时,主要做了几件事:

  1.根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项,并检查该用户是否有指定的操作权限。

  2.将目录项复制到内存中的“打开文件表”中。并将对应表目的编号返回给用户。之后用户使用打开文件表的编号来指明要操作的文件

image-20240317212217928

image-20240317212245140

(四)关闭文件

  进程使用完文件后,要“关闭文件”。

  操作系统在处理 Close 系统调用时,主要做了几件事:

  1.将进程的打开文件表相应表项删除;

  2.回收分配给该文件的内存空间等资源;

  3.系统打开文件表的打开计数器count减1,若 count = 0,则删除对应表项。

image-20240317212809924

  要“关闭文件”,也就是把某进程的“打开文件表”当中对应表项删除掉。

(五)读文件

image-20240317212830295

image-20240317212841483

  进程使用read系统调用完成写操作。需要指明是哪个文件(在支持“打开文件”操作的系统中,只需 要提供文件在打开文件表中的索引号即可),还需要指明要读入多少数据(如:读入1KB)、指明读入的数据要放在内存中的什么位置。

  操作系统在处理read系统调用时,会从读指针指向的外存中,将用户指定大小的数据读入用户指定的内存区域中。

(六)写文件

image-20240317213016765

image-20240317213023089

  进程使用 write 系统调用完成写操作,需要指明是哪个文件(在支持“打开文件”操作的系统中,只需要提供文件在打开文件表中的索引号即可),还需要指明要写出多少数据(如:写出1KB)、写回外存的数据放在内存中的什么位置。

  操作系统在处理 write 系统调用时,会从用户指定的内存区域中,将指定大小的数据写回写指针指向的外存。

总结

image-20240317213140116

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1524134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app开发特点和开发流程

uni-app是一个基于Vue.js框架的跨平台应用开发框架,通过一套代码可以同时运行在多个平台上,包括iOS、Android、H5等。它采用了基于流布局的页面渲染机制,可以自动适配不同平台的屏幕尺寸和分辨率。uniapp官网:https://uniapp.dclo…

2024-03-17悠然-思源茶社申时茶会有感

悠悠白云里,独住青山客; 然灯松林静,煮茗柴门香; 思归若汾水,无日不悠悠; 源上花初发,公应日日来; 申章写深谊,唯愿长相聚; 时时思己过,刻刻…

图鸟UI发布免费开源、高颜值小程序UI框架

大家好,今天分享的主题是图表统计。图表统计是使用图表和图形来可视化和呈现数据的方法。它通过将数据转化为柱状图、折线图、饼图等形式来展示各种统计指标和趋势。 图表统计可以帮助我们更好地理解和分析数据,发现数据之间的关联和规律,并…

四、自然语言中的生成式任务

目录 4.0 机器翻译 4.1 文本摘要 4.1.1 抽取式摘要 4.2.2 生成式摘要 NLP学习笔记系列,欢迎收藏交流: 零、自然语言处理开篇-CSDN博客 一、NLP中的文本分类-CSDN博客 二、NLP中的序列标注(分词、主体识别)-CSDN博客 三、NL…

基于单片机的IC 卡门禁系统设计

摘要:针对传统门锁钥匙易丢失、配置不便和忘记携带等问题,提出了一种基于STC89C52 的IC 卡门禁系统设计。该系统以STC89C52 单片机为核心来控制电子锁模块的开关。主要过程是由RFID 模块读取IC卡ID 并通过串口发送至STC89C52 单片机模块,STC89C52 单片机模块可以实现在线对I…

使用广度优先搜索算法找到最短路径,然后绘制路径图

使用广度优先搜索算法找到最短路径,然后绘制路径图 from collections import deque import matplotlib.pyplot as plt# 定义网格环境的参数 GRID_SIZE 5 GRID_WIDTH 4 AGENT_SPEED 2 START_STATE (0, 0) GOAL_STATE (GRID_SIZE - 1, GRID_SIZE - 1)# 定义动作…

Excel小技巧 (4) - Sumif用法

学期末,根据以下表格如果要汇总学生的三门主课分数,如何能快速的汇总呢? sumif就是一个很好用的函数 SUMIF(指定汇总的key范围,汇总值,合计范围)

记录windiwos系统安装homestead环境的一次报错

相关软件版本 VirtualBox 7.0.14Vagrant 2.3.8 报错信息如下 Bringing machine homestead up with virtualbox provider... > homestead: Box lc/homestead could not be found. Attempting to find and install...homestead: Box Provider: virtualboxhomestead: Box Ve…

从电影《沙丘》说起——对人工智能的思考

从《沙丘》开始说起 之前看《沙丘》电影,里面有一类角色叫门泰特,这类人大脑可以飞快地运算,在电影设定里是替换人工智能、机器运算的存在。男主保罗也是这类型的人,但他可能基因更强大,吸食了香料后,他的…

力扣题目训练(22)

2024年2月15日力扣题目训练 2024年2月15日力扣题目训练563. 二叉树的坡度637. 二叉树的层平均值643. 子数组最大平均数 I304. 二维区域和检索 - 矩阵不可变154. 寻找旋转排序数组中的最小值 II 2024年2月15日力扣题目训练 2024年2月15日第二十二天编程训练,今天主要…

Qt for Mac阻止MacOS系统休眠

Qt开发的应用程序如果电脑休眠了会影响软件的使用,因此在软件的使用过程中需要防止电脑休眠,在Win上有专门的API进行处理,在Mac上也必需使用Mac平台自身的API,本篇介绍在Mac平台下使用Qt阻止Mac系统休眠。 要调用Mac系统的API&am…

【开发】Spring整合MyBatis、MyBatisPlus

目录 前言 Spring整合MyBatis 1. 在项目中的pom.xml中导入MyBatis和Spring相关的依赖: 2. 配置数据源 3. 编写实体类 4. 编写API接口 5. 编写单元测试方法(业务) Spring整合MyBatis-Plus 1. 在项目中导入依赖: 2. 配置数…

Java Virtual Machine

JVM 1、初始 JVM 简单描述一下 JVM :JVM 本质是一个运行在计算机上的程序,它的职责是运行字节码文件。 JVM 的三大功能: 解释和运行:对字节码文件中的指令,实时的解释成机器码,让计算机执行内存管理&am…

webpack5零基础入门-10babel的使用

Babel JavaScript 编译器。 主要用于将 ES6 语法编写的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中 1.安装相关包 npm install -D babel-loader babel/core babel/preset-env 2.进行相关配置 2.1第一种写法是在webp…

【C语言入门】浮点型数据在内存中的存储

✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:C语言 个人主页:Celias blog~ 目录 ​编辑 引言 引例 一、浮点型在内存中的存储方式 1.1 …

Employing Multi-Estimations for Weakly-Supervised Semantic Segmentation

eighted selective training (WST) 辅助信息 作者未提供代码

Vue+SpringBoot打造婚恋交友网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…

解决分布式事务,Seata真香!

年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验等…

模型、算法、数据模型、模型结构是什么?它们之间有什么关联和区别?

模型、算法、数据模型、模型结构是什么?它们之间有什么关联和区别? 导读一、算法1、算法定义2、机器学习算法定义 二、模型1、模型定义2、数据模型定义3、机器学习模型定义 三、模型结构1、线性模型2、基于实例的模型3、决策树模型4、支持向量机5、集成方…

WebRTC:真正了解 RTP 和 RTCP

介绍 近年来,通过互联网进行实时通信变得越来越流行,而 WebRTC 已成为通过网络实现实时通信的领先技术之一。WebRTC 使用多种协议,包括实时传输协议 (RTP) 和实时控制协议 (RTCP)。 RTP负责通过网络传输音频和视频数据,而RTCP负责…