文件的基本操作

news2024/11/29 2:49:39

文章目录

  • 创建文件
  • 删除文件
  • 打开文件
  • 关闭文件
  • 读文件
  • 写文件

这些基本功能都是操作系统提供给应用程序的系统调用

创建文件

在这里插入图片描述

  • 提供的参数
    • 所需的外存空间大小
    • 文件的存放路径
    • 文件名(操作系统会有对应的默认名)
  • 操作系统做的工作
    • 在外存中找文件所需的空间——空闲链表法,位示图,成组链接法等管理等方法找到空闲空间
    • 根据文件的存放路径的信息找到对应的目录文件,然后在目录文件中创建对应的目录项

删除文件

在这里插入图片描述

  • 提供的参数
    • 文件的存放路径
    • 文件名
  • 操作系统做的事情
    • 根据文件存放路径找到相应的目录文件,根据文件名到目录文件中找到对应的目录项
    • 根据目录项中的信息找到在外存的存放位置,文件大小等信息,回收占用的磁盘块
    • 从目录表中删除对应的目录项

打开文件

在这里插入图片描述

  • 需要提供的参数

    • 文件的存放路径
    • 文件名
    • 要对文件的操作类型(只读R,读写RW)
  • 操作系统做的事情

    • 根据我们的文件存放路径,找到对应的目录文件,从目标文件中根据文件名找到对应的目录项,并检查该用户是否有指定的操作权限
    • 将目录项复制到内存中**“打开文件表”**中,并把对应的表目的编号返回给用户,之后操作系统要打开文件表的编号要指明要操作的文件
      • 打开文件表的作用我们再操作文件,就不需要重新查目录了,可以加快文件的访问速度

    两种文件打开表

在这里插入图片描述

  • 会为每个用户进程分配一个进程打开文件表
    • 记录了对应编号 ,文件名
    • 读写指针(来记录每个进程在这个文件的读和写所到的位置)
    • 访问权限(每个进程对文件的访问权限不一样)
    • 系统表索引号——因为其他关于这个文件的信息在系统的打开文件表
  • 系统有一个大的打开文件表——方便实现文件的共享
    • 有着文件的对应的信息
    • 打开计数器:表明现在有几个进程在访问

关闭文件

在这里插入图片描述

  • 根据进程给文件对应的编号去进程的打开文件表去查询
    • 删除进程打开文件表相应的表项
    • 回收分配给该文件的内存空间等资源
    • 系统打开文件表的打开计数器count-1,若count=0,删除对应的表项

读文件

在这里插入图片描述

  • 比如我们双击打开一个txt文件,起始是记事本应用程序通过操作系统提供的读文件的系统调用功能,将文件从外存读入内存,并显式在屏幕上
  • 提供的参数
    • 在支持打开文件的操作系统中,只需要提供文件在打开文件表中的索引号即可(读文件之前已经进行打开操作)
    • 要读入多少数据
    • 读入的数据放到内存的什么地方
  • 操作系统做的事情
    • 根据打开文件表中的指针位置从外存中将需要的数据读入内存

写文件

在这里插入图片描述

  • 提供的参数
    • 在支持打开文件的操作系统中,只需要提供文件在打开文件表中的索引号即可(写文件之前已经进行打开操作)
    • 要写多少数据
    • 写回数据要放到外存的什么地方
  • 操作系统做的事情
    • 根据打开文件表中的指针位置从外存中将需要的数据读入内存

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

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

相关文章

Python趣味算法入门 - 百钱百鸡

问题描述 中国古代数学家张邱建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只? 分析 这也是经典问…

所见即所得即MySQL函数

✨✨hello,愿意点进来的小伙伴们,你们好呐! 🐻🐻系列专栏:【MySQL初阶】 🐲🐲本篇内容:MySQL函数的详解 🐯🐯作者简介:一名现大二的三非编程小白&…

【Spring】核心部分之IOC:通过列举代码例子,从底层刨析,深入源码,轻轻松松理解Spring的核心IOC,IOC有这一篇足以

IOC一,概念和原理1.概念:控制反转2.原理:(xml解析,工厂模式,反射)3.IOC接口:两个主要容器实现类(加载xml配置文件)二,操作Bean管理1.基于 xml 配置…

React - 实现瀑布流加载

React - 实现瀑布流加载一. 瀑布流实现1.1 处理重复请求问题一. 瀑布流实现 先来看下原本的效果,一次性加载完所有的信息然后展示: 其次,我们需要去监听这个滚轮的滚动事件,那么React页面就可以添加一个监听器: use…

SpringSecurity Oauth2实战 - 04 自定义AuthProvider实现登录认证

文章目录1. 搭建资源服务器1. Token存储配置类 TokenStoreAutoConfiguration2. 资源服务器配置类 ResourceServerAutoConfiguration3. 在META-INF/spring.factories文件下添加配置类2. 搭建授权服务器1. 密码加密配置类 PasswordEncodeConfig2. RestTemplateConfig3. 授权服务器…

k3s 离线部署指南

文章目录1. 简介2. Docker 手动部署镜像方式2.1 安装docker2.2 导入镜像2.3 安装 k3s2.4 查看3. Containerd 手动部署镜像方式3.1 导入镜像到 containerd 镜像列表3.2 授予可执行权限3.3 安装 K3s4. Containerd 私有镜像仓库方式4.1 配置 K3s 镜像仓库4.2 授予可执行权限4.3…

集合(Set)和有序集合(ZSet)的基本使用方法详解【Redis】

文章目录一. Redis中的集合(Set)1.1基本的一些操作1.1.1 smembers查看集合中的所有成员1.1.2 scard删除成员数量1.1.3 smove移动成员1.1.4 sinterstore 存储俩个集合的交集二.Redis中的有序集合(ZSet)2.1 基本的一些操作2.1.1 zadd添加1到多个成员2.1.2 zcount 返回指定分数区间…

【HarmonyOS】鸿蒙轻量级智能穿戴应用可以集成华为分析SDK吗?

1、问题描述 我们的项目是基于鸿蒙系统开发的轻量级智能穿戴应用,目前在做的主要是运动手表GT3。 我们在项目中使用了华为分析服务,但是在Build Hap时出现问题: 因此,我们想了解轻量级智能穿戴应用项目中是否能够集成华为分析服…

计算机毕业设计(附源码)python在线影评系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Leetcode-每日一题1106. 解析布尔表达式(DFS模拟栈)

题目链接:点击跳转 思路 方法一、DFS模拟栈 题目意思很简单让你去判断与或非布尔表达式的结果,我们可以看布尔表达式看成一棵树,需要我们解决的是从最底层的嵌套布尔表达式产生的结果不断向上的结果,如图: 既然他是…

云栖大会开源重磅升级!PolarDB-X v2.2: 企业级和国产化适配

2022 年云栖大会上,PolarDB-X 发布 2.2.0 版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产化适配,共包括八大核心特性,全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普…

自定义分页器

文章目录自定义分页器1、分页推导2、分页器代码封装自定义分页器 1、分页推导 queryset对象支持切片操作 确定用户访问的页码 url?page1 current_pagerequest.GET.get(page,1)前端获取到 的都是字符串数据,需要类型转换 current_page request.GET.get(page,…

为什么C语言执行效率高,运行快?

目录 简述C语言由来 BCPL语言及代码B语言以及代码C语言 编程语言 机器语言汇编语言高级语言 C为何快速 简述 都说C语言编写的程序执行效率比较高,那么到底高在哪里,我们一块来学习学习。 C语言由来 C语言源自于BCPL、B两种语言。 BCPL语言以及代码…

django csrfMiddleware的一些理解跨站和跨域

术语 术语解释备注跨域两个 URL 的“协议主机名端口”3者只要有一个不一致http://www.taobao.com/和https://www.taobao.com/跨站两个 URL 的 eTLD1 不相同a.github.io 和 b.github.ioeTLDeffective top level domain (有效顶级域名).com、.co.uk、.git…

第六节:数组的定义与使用【java】

目录 📃1. 数组的基本概念 1.1 为什么要使用数组 1.2 什么是数组 1.3 数组的创建及初始化 1.4 数组的使用 🎒2. 数组是引用类型 2.1 初始JVM的内存分布 2.2 基本类型变量与引用类型变量的区别 2.3 认识 null 2.4 再谈引用变量 📖3. …

Redis的RDB持久化配置以及数据恢复

文章目录Redis的RDB持久化配置以及数据恢复配置RDB持久化机制RDB持久化机制的工作流程基于RDB持久化机制的数据恢复Redis的RDB持久化配置以及数据恢复 配置RDB持久化机制 在 redis 的配置文件中找到如下内容: 以 save 60 10000 为例,表示每隔 60s&…

Springboot 整合与文件配置

哈喽~大家好,这篇看看Springboot 整合与文件配置。 🥇个人主页:个人主页 🥈 系列专栏:【Java框架】 🥉与这篇相关的文章: 【JAVAEE框架】MyBatis与Spring的整合&#xff0…

Unity-huatuo热更新调研

文章目录1. 相关资料2. 环境准备2.1 项目和编辑器版本2.2 安装huatuo插件2.3 在build settings里面勾选Export Project2.4 导出Android studio工程3. 验证热更新3.1 更改读取目录3.2 运行android apk3.3 热更新1. 相关资料 bilibili视频:https://www.bilibili.com/…

学院打卡第十四天

今天是一道困难题,难得有困难题!! 如题: 但是这个困难题感觉也不是很”困难“!!! 算法思想: 第一感觉就是利用栈的思想,这种题做多了,一看见就是想到栈&…

2021年上半年软件设计师下午真题及答案解析(三)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某中医医院拟开发一套线上抓药APP,允许患者凭借该医院医生开具的处方线上抓药,并提供免费送药上门服务。该系统的主要功能描述如下: &#…