实验3 文件管理
资源管理实验报告

一、实验目的通过本次实验,使学生掌握操作系统资源管理的基本原理和方法,加深对进程管理、内存管理、文件管理和I/O设备管理的理解,提高学生分析和解决实际问题的能力。
二、实验内容1. 进程管理(1)实验目的:掌握进程的基本概念、进程状态转换、进程调度算法和同步机制。
(2)实验步骤:① 创建多个进程,观察进程状态变化;② 实现进程调度算法(如先来先服务、轮转调度等);③ 实现进程同步机制(如信号量、互斥锁等)。
2. 内存管理(1)实验目的:掌握内存分配策略、内存回收策略和虚拟内存管理。
(2)实验步骤:① 实现固定分区分配策略;② 实现动态分区分配策略;③ 实现内存回收策略(如覆盖法、交换法等);④ 实现虚拟内存管理(如分页、分段等)。
3. 文件管理(1)实验目的:掌握文件系统基本概念、文件组织方式、目录结构和文件系统实现。
(2)实验步骤:① 实现文件系统基本操作(如创建、删除、读取、写入等);② 实现文件组织方式(如顺序文件、索引文件等);③ 实现目录结构(如单级目录、多级目录等);④ 实现文件系统实现(如FAT、NTFS等)。
4. I/O设备管理(1)实验目的:掌握I/O设备管理的基本概念、设备驱动程序、中断处理和I/O 调度。
(2)实验步骤:① 实现设备驱动程序;② 实现中断处理;③ 实现I/O调度(如先来先服务、轮转调度等)。
三、实验结果与分析1. 进程管理实验结果:通过实验,我们成功创建了多个进程,并观察到了进程状态的变化。
同时,我们实现了先来先服务、轮转调度等进程调度算法,并实现了信号量、互斥锁等进程同步机制。
2. 内存管理实验结果:通过实验,我们成功实现了固定分区、动态分区分配策略,以及内存回收策略。
同时,我们还实现了分页、分段等虚拟内存管理。
3. 文件管理实验结果:通过实验,我们成功实现了文件系统基本操作,如创建、删除、读取、写入等。
同时,我们实现了顺序文件、索引文件等文件组织方式,以及单级目录、多级目录等目录结构。
计算机应用基础实验教学大纲(实验3)

计算机应用基础实验教学大纲(实验3)
发布:2008-3-21来源:admin浏览:581 次
实验三Windows 2000文件管理操作
【目的要求】
1.掌握资源管理器的启动及其基本用法。
2.熟练掌握剪贴板的各种操作:复制,剪切、粘贴。
3.掌握文件夹的创建、命名、属性设置、删除、复制、移动等操作。
4.掌握文件的各种操作:打开、复制、粘贴、移动、删除、查找。
5.了解使用回收站进行文件的删除与恢复。
【实验类型】验证性
【实验内容】
1.用各种方法启动资源管理器。
2.设置资源管理器窗口中的工具栏。
3.选定文件和文件夹、查看图标、排列图标。
4.对文件或文件夹进行各种操作。
5.到回收站查看所删除文件,并恢复。
【实验仪器设备】
硬件:净化稳压电源、P4计算机、计算机网络、数字投影机、音响设备。
软件:Windows 2000操作系统。
文件管理实验报告

文件管理实验报告一、实验目的文件管理是操作系统的重要组成部分,本次实验的目的在于深入理解文件管理的基本概念和原理,掌握文件的存储、组织、检索和访问等操作,熟悉常见的文件系统结构和功能,提高对文件管理系统的实际操作能力和问题解决能力。
二、实验环境1、操作系统:Windows 102、开发工具:Microsoft Visual Studio 2019三、实验内容1、文件的创建、删除和重命名使用 C++或 Python 编程语言,通过系统调用或相关库函数实现文件的创建、删除和重命名操作。
观察文件在操作系统中的实际表现,如文件的出现和消失,文件名的更改等。
2、文件的读写操作实现对文本文件和二进制文件的读写操作,包括读取文件的全部内容、按行读取文件、向文件写入数据等。
分析不同读写模式(如只读、只写、读写等)对文件操作的影响。
3、文件属性的获取和修改获取文件的基本属性,如文件大小、创建时间、修改时间、访问权限等。
尝试修改文件的部分属性,如只读属性、隐藏属性等,观察修改后的效果。
4、文件目录的操作创建、删除和遍历目录。
实现文件在不同目录之间的移动和复制操作。
四、实验步骤1、文件的创建、删除和重命名以下是使用 Python 实现文件创建、删除和重命名的示例代码:```pythonimport os创建文件file_path ="exampletxt"with open(file_path, 'w') as f:fwrite("This is a test file")删除文件osremove(file_path)重命名文件new_file_path ="renamed_exampletxt"osrename(file_path, new_file_path)```运行代码后,可以在指定的目录中观察到文件的创建、删除和重命名操作的结果。
2、文件的读写操作读取文本文件的示例代码:```pythonfile_path ="text_filetxt"with open(file_path, 'r') as f:content = fread()print(content)```按行读取文本文件的示例代码:```pythonfile_path ="text_filetxt"with open(file_path, 'r') as f:for line in f:print(linestrip())```写入数据到文件的示例代码:```pythonfile_path ="outputtxt"with open(file_path, 'w') as f:fwrite("New data written to file")```分别运行上述代码,观察文件的读写结果。
实验三 Windows XP文件管理与系统配置

实验三Windows XP文件管理与系统配置一、实验目的●进一步熟练掌握Windows窗口基本操作。
●掌握资源管理器的基本操作。
●掌握文件及文件夹管理和磁盘管理的操作。
●掌握Windows系统配置。
●掌握Windows XP的常用命令。
二、知识要点及预备知识1.Windows XP中文件或文件夹的命名规则文件名的格式:主文件名.扩展名其中主文件名1-255个字符;扩展名1-3个字符。
另外文件名不能包含以下9个字符:/ | \ * ? < > " :255字符创建文件名2.Windows XP资源管理器资源管理器是一个用于文件管理的实用程序,它可以迅速的提供关于磁盘文件的信息,并可以将文件分类,清晰的显示文件夹的结构及内容。
资源管理器工作区分为左右两个部分。
3.Windows XP文件和文件夹管理Windows XP采用树型结构管理文件或文件夹,可通过创建、删除、复制、移动文件和文件夹,或通过更改文件和文件夹属性以及管理共享文件夹等方式实现对文件及文件夹的管理。
以下是在“我的电脑”或“资源管理器”中创建、复制、移动和删除文件或文件夹的几种常用方法。
(1)文件或文件夹的创建①单击[文件]/[新建] ->“文件夹”菜单命令或某一文件类型菜单命令。
②在工作区的空白处单击鼠标右键弹出快捷菜单,再单击[新建] ->“文件夹”菜单命令或某一文件类型菜单命令。
③利用记事本等应用程序创建某一类型的文件。
(2)创建快捷方式①单击[文件]/[新建]->”快捷方式”。
②用鼠标右键将目标文件或文件夹拖动到需创建快捷方式的地方,再选择“在当前位置创建快捷方式”菜单命令。
③鼠标右键单击某一文件或文件夹,在弹出快捷菜单中选择“发送”->”桌面快捷方式”菜单命令。
(3)复制文件或文件夹①不同磁盘之间:直接通过鼠标拖动,此时鼠标有“+”。
②选定源文件或文件夹,选择[编辑]/ [复制]命令,在目的窗口选择[编辑]/[粘贴]命令。
文件管理实验报告

一、实验目的1. 理解文件管理的概念和基本原理。
2. 掌握文件系统的结构及其组成。
3. 学会使用文件管理系统进行文件操作。
4. 了解文件系统的性能优化方法。
二、实验环境1. 操作系统:Windows 102. 文件管理系统:Windows Explorer3. 实验工具:文本编辑器(如Notepad)三、实验内容1. 文件系统的基本概念2. 文件系统的结构3. 文件操作4. 文件系统性能优化四、实验步骤1. 文件系统的基本概念(1)打开Windows Explorer,观察文件系统的组织结构。
(2)分析文件系统的组成,包括文件、目录、驱动器等。
(3)了解文件名、扩展名、路径等基本概念。
2. 文件系统的结构(1)创建一个新文件夹,命名为“实验文件夹”。
(2)在“实验文件夹”中创建一个文本文件,命名为“实验报告.txt”。
(3)观察文件系统的树状结构,理解目录与文件之间的关系。
3. 文件操作(1)打开“实验报告.txt”,使用文本编辑器进行编辑。
(2)保存并关闭编辑器。
(3)将“实验报告.txt”复制到“实验文件夹”的子目录中。
(4)删除“实验文件夹”中的“实验报告.txt”。
(5)重命名“实验文件夹”中的子目录。
4. 文件系统性能优化(1)查看磁盘属性,了解磁盘空间占用情况。
(2)对磁盘进行碎片整理。
(3)使用磁盘清理工具清理磁盘中的临时文件。
五、实验结果与分析1. 文件系统的基本概念通过实验,我们了解了文件系统的基本概念,包括文件、目录、驱动器等。
文件系统是操作系统管理文件的一种数据结构,用于存储、检索、更新和删除文件。
2. 文件系统的结构实验中,我们创建了文件夹和文件,并观察了文件系统的树状结构。
文件系统采用分层结构,目录与文件之间通过路径连接。
3. 文件操作实验中,我们进行了文件操作,包括创建、编辑、复制、删除和重命名。
这些操作是文件管理的基本技能。
4. 文件系统性能优化通过磁盘碎片整理和清理磁盘中的临时文件,我们提高了文件系统的性能。
操作系统实验报告文件管理

操作系统实验报告文件管理文件管理是操作系统的重要功能之一,它负责对计算机系统中的文件进行组织、存储和访问。
文件管理系统的设计和实现对操作系统的性能和可靠性起着重要作用。
本文将介绍文件管理的基本概念、文件系统的组织方式和文件的操作方法。
一、文件管理的概念文件是计算机系统中存储和管理数据的基本单位,它可以是文本、图像、音频、视频等各种类型的数据。
文件管理的目标是实现对文件的有效组织和高效访问,使得用户和应用程序可以方便地读取、写入和删除文件。
文件管理系统主要包括以下几个方面:1.文件组织方式:文件可以按照不同的方式进行组织,包括顺序文件、索引文件、哈希文件等。
不同的组织方式有不同的优势和适用场景,可以根据实际需要选择合适的组织方式。
2.文件存储管理:文件在存储设备上的存储方式包括连续存储、链式存储和索引存储等。
不同的存储方式对文件的读写性能和空间利用率有影响,需要根据实际情况进行选择。
3.文件访问控制:对文件的访问需要进行权限控制,保证只有合法的用户或应用程序可以读取和写入文件。
文件访问控制主要通过访问权限和文件属性来实现。
二、文件系统的组织方式1.单级目录结构:这是最简单的文件系统组织方式,所有文件都位于同一个目录下。
由于没有目录的嵌套结构,文件的查找和管理比较简单,但是对于大量文件的管理不够灵活。
2.层次目录结构:该方式通过目录的嵌套结构来组织文件,可以形成一棵树状结构。
目录可以包含子目录和文件,用户可以通过目录路径来访问文件。
这种组织方式可以更好地组织大量的文件,提高文件的查找效率。
3.索引目录结构:该方式使用一个索引表来记录文件的位置和属性信息,用户通过索引表中的索引来访问文件。
索引表可以根据文件名、文件类型等信息快速定位到文件的位置,提高访问效率。
此外,索引表还可以支持对文件的动态增删改查操作。
三、文件的操作方法1.创建文件:文件的创建是指在文件系统中创建一个新文件,并为其分配存储空间。
创建文件时需要指定文件名和文件类型,并根据需要为文件设置访问权限和属性。
实验报告-实验三 利用资源管理器实现文件管理

12、“资源管理器”→选择d:盘→在右边窗口设置显示方式“详细信息”→单击“大小”属性列→按升序排列文件→按ctrl键,同时单击若干小于1MB文件,用鼠标右键拖动到D盘考生文件夹下的my文件夹,在弹出快捷菜单中选择“复制到当前位置”
1)将某一常用文件夹项目添加“库”;也可以右键单击该文件夹,使用快捷菜单实现
2)创建新“库”,为“库”添加项目
3、使用“查看”菜单或“更改浏览视图”按钮、预览窗格按钮
4、使用“搜索框”的“搜索筛选器”搜索文件(夹):
5、体验“地址栏”路径按钮,实现目录跳转
二、打开D盘考生文件夹D:\ks01\150199990010,在考生文件夹150199990010下完成如下操作:
福建警察学院
计算机应用教学实验报告
计算机应用课程实验报告实验地点:三号机房
实验名称
实验三利用资源管理器实现文件管理
指导教师
郑清安
时间
姓名
班级
刑侦一区
学号
组号
同组者姓名
评分
一、实验目的
掌握“资源管理器”窗口构成要素;
掌握查看文件(夹)的方法;
熟练掌握利用“资源管理器”的进行文件(夹)基本操作。
掌握搜索文件(夹)的方法
五、实验体会(遇到的问题及解决方法)
教师签名:
一、打开“计算机”或“资源管理器”,查看构成窗口的要素,并完成以下基本ቤተ መጻሕፍቲ ባይዱ作;
1、使用“组织”菜单:
1)窗口布局:“组织”——布局——预览窗格、细节窗格、菜单栏
最新文件管理实验报告

最新文件管理实验报告
在本次实验中,我们对最新的文件管理系统进行了一系列的测试和评估。
实验的主要目的是验证该系统在处理大量文件时的效率、安全性以及用户体验。
以下是实验的主要发现和结论。
一、系统性能测试
1. 读写速度:通过对比不同大小文件的读写时间,我们发现该系统采用了优化的读写算法,显著提高了文件操作的速度。
2. 多任务处理能力:实验中模拟了多用户同时进行文件操作的场景,系统展现出良好的并发处理能力,无明显延迟现象。
二、安全性评估
1. 加密机制:系统内置了先进的加密算法,对存储的文件进行实时加密,有效防止了数据泄露。
2. 权限管理:通过设置不同的用户权限,系统能够精确控制文件的访问和操作权限,确保了数据的安全性。
三、用户体验分析
1. 界面设计:系统提供了直观的用户界面,使得文件管理变得简单易行,即使是非专业用户也能快速上手。
2. 搜索效率:系统具备强大的搜索功能,支持关键词、文件类型等多种搜索方式,大大提升了查找文件的效率。
四、问题与改进建议
1. 在处理超大型文件时,系统偶尔会出现性能下降的情况,建议进一步优化文件处理算法。
2. 尽管系统提供了基本的备份功能,但缺乏自动化和云同步的选项,建议增加这些功能以提高数据的可靠性。
综上所述,最新的文件管理系统在性能、安全性和用户体验方面均表现出色,但仍有改进空间。
我们期待开发团队能够根据这些反馈继续优化产品,以满足更广泛的用户需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三文件管理一、实验目的理解文件系统的主要概念及文件系统内部功能和实现过程。
二、实验内容采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。
具体如下:1、设计一个有m个用户的文件系统,每个用户最少可保存一个文件。
2、规定用户在一次运行中只能打开K个文件。
3、系统能检查键入命令的正确性,出错时应能显示出错原因。
4、对文件应能设置保护措施,如只能执行、允许读、允许写等。
5、对文件的操作设计提供一套文件操作:CREATE建立文件;DELETE删除文件;OPEN打开文件;CLOSE关闭文件;READ读文件;WRITE写文件。
三、实验要求①详细描述实验设计细想、程序结构及各模块设计思路。
②详细描述程序所用数据结构及算法③给出测试用例及实验结构④为增加程序可读性,在程序中进行适当注释说明⑤认真进行实验总结,包括:设计中遇到的问题、解决方法和收获⑥实验报告撰写要求结构清晰、描述准确逻辑性强四、实验过程举例:主文件目录mfd=recordusername :string[maxlen];files :array[1..K] of ufd;ofiles :arrau[1..S] of uodend;用户打开文件目录表:uod=recordfilename:string[maxlen];attrib:attrib;status:(open,create);rp,up:integer;end;用户文件目录:ufd=recordfielname:string[maxlen];attrib ro,rw);len:integer;addr:integer;end;流程图:二、主要数据结构界面采用VC6 MFC环境开发#define MAXUSER 10 //假想文件系统最多支持的人数#define BLOCKSIZE 32 //虚拟磁盘中物理块为每块32字节#define DISKSIZE BLOCKSIZE*1000 //虚拟磁盘容量为1000*32=32Kstruct UFD //说明文件项的结构数组{char FileName[15];char Time[16]; //文件建立或修改时间如2003/5/6 12:00bool IsExist; //文件是否存在,删除时标为0bool IsShared; //共享标记,共享文件可被其它用户所访问bool AttrRead; //文件是否可读bool AttrWrite; //文件是否可写bool AttrExecute; //文件是否可执行HTREEITEM treeNode; //用于树控件显示的结点句柄USHORT FileLen; //文件占用字节数USHORT BlockNum; //文件占用的物理块数USHORT FileLink[100];//文件物理块地址数组,每块32字节,限定一个文件最大100*32=3200字节};struct MFD{char UserName[10]; //主目录用户名bool IsExist; //该用户否存在UFD ufd[MAXFILE]; //用户文件数组USHORT nItem;//UFD个数};struct HEADBLOCK{BYTE pStack; //堆栈指针SHORT pBlock[10]; //块号 pBlock[10]是下一个盘块号逻辑地址};struct BLOCK //虚拟磁盘的物理块数据结构{union{BYTE block[32]; //一块为32字节HEADBLOCK HeadInfo;};};struct FAT{BLOCK SuperBlock; //超级块,指示第一个空闲块逻辑号USHORT MaxOpen; //该用户同时可打开的最大文件数USHORT UserNum; //最户数MFD Mfd[MAXUSER]; //最多可支持10个用户};//空闲块成组链接法bool OpenList[MAXUSER][MAXFILE]; //描述文件是否打开的布尔型数组FAT FileFAT; //描述文件记录项的FAT结构CFile FATIO; //负责和VDISK.DAT打交道的文件句柄CString CurrentUser; //当前登录的用户名说明:本实验采用模拟文件结构的方法,把记录用户帐号,用户文件和磁盘块的信息用当前目录下的VDISK.DAT来记录,可以把VDISK.DAT看成是一个虚拟的磁盘,其头部是FAT结构,用来记录各个用户和文件信息,紧接着是空闲块成组链接法的数据结构,每块32字节,每组10块,共1000块,也就是说,用户文件数据的总容量是32*1000字节,如果程序当前目录下找不到用于做实验用的VDISK.DAT,在登录时程序会提示是否“格式化虚拟磁盘”也就是新建一个VDISK.DAT文件,接着,程序会显示“用户管理”的窗口,此时应新建几个帐号用于登录做实验。
登录后,程序会显示该用户的所有文件,右方的文件列表会显示每个文件的属性信息,和WINDOWS的“资源管理器”相似。
用鼠标双击列表的每个文件就可以查看文件的内容。
单击“新建文件”按钮可以创建一个新的用户文件。
选中某个文件后,就可以进行相应的操作,如“修改文件”、“删除文件”或是“打开文件”,删除某个文件时检查该文件的属性,如果是只读的,就是显示警告窗口让用户确认是否一定要删除。
硬盘工具可以用图形方式显示“磁盘”块的详细情况,空白块说明该块没有使用,暗红色的说明块已分配,窗口还统计占用的空间大小、用户数等信息。
程序中用到的结构图如下图所示:MFD三、主要算法与部分代码void CDlgUser::OnAddUser(){UpdateData(true);if (erNum>=10){AfxMessageBox("用户数量已达到最大10个,你可以删除一些无用的帐号!");return;}for(int i=0;i<10;i++){if(FileFAT.Mfd[i].IsExist==false){wsprintf(FileFAT.Mfd[i].UserName,m_UserName);FileFAT.Mfd[i].IsExist=true;FileFAT.Mfd[i].nItem=0;break;}erNum++;WriteFAT();ReadFAT();ShowUser();//显示现有的用户列表m_UserName.Empty();UpdateData(false);}bool ReadBlock(int id, BLOCK* buffer) //读指定块号内容(32字节)到buffer所指向的单元{if(!FATIO) return false; //如果虚拟磁盘文件句柄为空,出错返回if(!FATIO.Seek(sizeof(FAT)+(id-1)*BLOCKSIZE,CFile::begin)) return false;//移动文件指针到指定块号if(FATIO.Read(buffer,BLOCKSIZE)!=BLOCKSIZE) return false;//读该块的内容到buffer指定的单元return true;}bool WriteBlock(int id, BLOCK* buffer) //把buffer所指向的单元的内容(32字节)写到指定的物理块中{if(!FATIO) return false;if(!FATIO.Seek(sizeof(FAT)+(id-1)*BLOCKSIZE,CFile::begin)) return false;FATIO.Write(buffer,BLOCKSIZE);return true;}USHORT AllocBlock() //分配一物理块,成功返回逻辑块号,失败返回0;{if(!FileFAT.SuperBlock.HeadInfo.pBlock[FileFAT.SuperBlock.HeadInfo.pStack]) return 0;//没有空间可分配,失败返回if(FileFAT.SuperBlock.HeadInfo.pStack<9)//如果一组的空闲块没有分配完{WriteFAT();//将返回超级块所指的空闲块,再将堆栈指针加一return FileFAT.SuperBlock.HeadInfo.pBlock[FileFAT.SuperBlock.HeadInfo.pStack++];}else //如果分配的空闲块是组头{WriteFAT();USHORT returnBlock=FileFAT.SuperBlock.HeadInfo.pBlock[9];//将要分配的组头复制到超级块,再返回组头作为空闲块if(!ReadBlock(returnBlock,&FileFAT.SuperBlock)) return 0;return returnBlock;}WriteFAT();return 0;}bool FreeBlock(USHORT BlockID) //回收一物理块,成功返回TRUE,失败返回FALSE{if(FileFAT.SuperBlock.HeadInfo.pStack>0)//如果该组的空闲没有回收满{//堆栈指针退一,把回收的块号记入超级块FileFAT.SuperBlock.HeadInfo.pBlock[--FileFAT.SuperBlock.HeadInfo.pStack]=BlockID;BLOCK newBlock;if (!WriteBlock(BlockID,&newBlock)) return false;}else//如果该组已回收满,需要加入一新组的话{if (!WriteBlock(BlockID,&FileFAT.SuperBlock)) return false;//将超级块的栈内容复制到要回收的块中 FileFAT.SuperBlock.HeadInfo.pStack=9;//将超级块的栈指针指向回收的块FileFAT.SuperBlock.HeadInfo.pBlock[9]=BlockID;}WriteFAT();return true;}bool ReadFAT() //从虚拟磁盘中读取FAT结构信息到FileFAT中{ZeroMemory(&FileFAT,sizeof(FileFAT));FATIO.SeekToBegin();if (!FATIO.Read(&FileFAT,sizeof(FileFAT))) return false;return true;}bool Format()//格式化虚拟磁盘,创建VDISK.DAT,所有用户和文件信息将被清空!{CString FATFile;int i;char fname[128];GetCurrentDirectory(128,fname); //FAT表信息保存在当前目录的VDISK.DAT中FATFile.Format("%s",fname);if (FATFile.Right(1)!="\\")FATFile+="\\VDISK.DAT";elseFATFile+="VDISK.DAT";CFile fout;if( !fout.Open(FATFile,CFile::modeCreate|CFile::modeWrite,NULL))return false;ZeroMemory(&FileFAT,sizeof(FileFAT));FileFAT.SuperBlock.HeadInfo.pStack=0;for(i=0;i<10;i++){FileFAT.SuperBlock.HeadInfo.pBlock[i]=i+1;}fout.WriteHuge(&FileFAT,sizeof(FileFAT));BYTE *Buffer;Buffer=(BYTE*)malloc(DISKSIZE);//申请成组链接法所需的磁盘块空间ZeroMemory(Buffer,DISKSIZE);BLOCK newBlock;for (i=10;i<=990;i+=10){ZeroMemory(&newBlock,sizeof(newBlock));newBlock.HeadInfo.pStack=0;for (int k=0;k<10;k++)memcpy(Buffer+32*(i-1),&newBlock,32);}fout.WriteHuge(Buffer,DISKSIZE); //将格式化的块信息写入VDISK.DATfree(Buffer);fout.Close();AfxMessageBox("创建虚拟磁盘文件成功!请选择用户管理添加新用户。