2024-2025-1 20241409《计算机基础与程序设计》第九周学习总结
|这个作业属于哪个课程| https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP|
|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09|
|作业正文|https://www.cnblogs.com/smpj/p/18565710
教材学习内容总结
磁盘调度:是对磁盘读写请求进行合理安排的策略,常见算法有先来先服务、最短寻道时间优先、扫描算法等,目的是提高磁盘读写效率。
文件保护:通过设置访问权限(如读、写、执行权限)、口令、加密等多种方式,防止文件被非法访问、篡改或破坏,保障文件数据安全。
文件系统:负责管理文件的存储、检索、更新等操作,包括对文件存储空间的分配、目录结构管理等,如FAT、NTFS是常见的文件系统类型。
CPU调度:根据一定的算法(如先来先服务、短作业优先、时间片轮转等)从就绪队列中选择进程分配CPU资源,以充分利用CPU、提高系统性能。
分时系统:把CPU时间划分成时间片,多个用户通过终端轮流使用计算机,在用户感觉上好像是独占系统,实现多个用户同时交互使用计算机资源。
内存与进程管理:内存管理负责内存的分配、回收及内存空间的合理利用,如采用分页、分段等存储管理方式;进程管理涉及进程的创建、撤销、状态转换以及进程间的同步与互斥等操作,保障多个进程协调运行。
操作系统责任:总体上要对硬件资源进行有效管理(如上述磁盘、CPU、内存等资源),为用户和应用程序提供方便、安全、高效的运行环境,协调各部分有序工作,实现资源共享等功能。
教材学习中的问题和解决过程(先问 AI)
问题1:怎么新增数据进数组?
问题1解决方案:在C语言中,数组的大小是固定的,一旦在编译时确定,就不能在运行时改变。因此,你不能直接向一个已经定义好的数组“新增”数据,因为那样会超出数组的边界,导致未定义行为(可能是内存损坏、程序崩溃等)。
不过,有几种方法可以间接地实现向数组中添加数据的效果:
使用更大的数组:在定义数组时,预估一个足够大的大小,以确保在程序运行期间不会超出这个边界。当然,这种方法会浪费一些内存空间,特别是当预估的大小远大于实际使用时。
动态内存分配:使用malloc、calloc或realloc等函数在堆上动态地分配内存。特别是realloc函数,它可以在不丢失原有数据的情况下调整已分配内存块的大小。这种方法需要手动管理内存,包括在适当的时候释放内存。
使用结构体或类:如果你使用的是C++或其他支持面向对象编程的语言,可以定义一个结构体或类来封装数组和它的当前大小,并提供添加元素的方法。这个方法内部可以处理数组的扩容(例如,当数组满时,分配一个更大的新数组,将旧数组的数据复制过去,然后释放旧数组的内存)。
使用标准库容器:在C++中,你可以使用std::vector等标准库容器,它们会自动处理内存的分配和释放,以及数组的扩容。