2023-2024-1 20231402《计算机基础与程序设计》第9周学习总结
2023-2024-1 20231402《计算机基础与程序设计》第9周学习总结
作业信息
这个作业属于哪个课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2023-2024-1计算机基础与程序设计第9周作业 |
这个作业的目标 | 自学计算机科学概论第10,11章,《C语言程序设计》第8章 |
作业正文 | https://www.cnblogs.com/lsh0815/p/17852610.html |
教材学习内容总结
《计算机科学概论》
- 第10章主要介绍了操作系统,内存管理,进程管理,CPU调度,让我了解了操作系统是如何管理内存的,也让我学习到了三种调度方法:先到先服务,最短作业优先和轮询法。
- 第11章主要讲了文件和目录。介绍了文本文件和二进制文件,文件操作,文件保护,目录树,先到先得磁盘调度法、最短寻道时间优先磁盘调度法、SCAN磁盘调度法三种方法。
《C语言程序设计》
- 这章主要讲了一维数组和二维数组,包括一维数组和二维数组的定义和初始化,以及如何向函数传递一维、二维数组。还介绍了交换法排序、选择法排序两种排序方法,顺序查找、折半查找两种查找方法。
教材学习中的问题和解决过程
- 问题1:用户共享虚拟机中的系统资源时,会因不同用户同时操作同一文件而出问题吗?
- 问题1解决方案:当多个用户共享虚拟机中的系统资源时,可能会出现一些问题,特别是在同时操作同一文件的情况下。以下是一些可能的问题和解决方法:
-
文件冲突: 如果多个用户同时尝试写入或修改同一文件,可能会导致文件冲突。这可能导致数据损坏或丢失。
解决方法: 使用版本控制系统(例如Git)来管理共享的代码或文档。这样可以跟踪文件的更改历史并协调不同用户之间的工作。 -
性能问题: 同时运行大量虚拟机用户可能会导致系统资源争夺,从而影响性能。
解决方法: 确保虚拟机主机有足够的资源以支持所有用户。监视系统性能,根据需要进行扩展或优化。 -
访问权限问题: 不同用户可能具有不同的文件访问权限,这可能导致某些用户无法读取或修改特定文件。
解决方法: 确保正确配置文件和目录的访问权限。使用用户组来组织用户,并将适当的权限授予这些组。 -
网络问题: 如果多个用户同时从虚拟机中下载或上传大量数据,可能会导致网络拥塞。
解决方法: 对网络流量进行调优,可能采用带宽限制或流量控制来确保公平使用网络资源。 -
数据一致性: 在共享虚拟机中,确保数据一致性可能是一个挑战。如果一个用户正在修改数据,另一个用户可能会读取到不一致的状态。
解决方法: 使用事务或锁定机制来确保数据一致性。这可能涉及到在访问共享数据时实施某种同步机制。 -
虚拟机隔离: 虚拟机之间的隔离是关键的,以防止一个虚拟机中的问题影响其他虚拟机。
解决方法: 使用虚拟化平台提供的隔离功能,确保一个虚拟机的问题不会波及到其他虚拟机。
在共享虚拟机环境中,定期进行备份并监控系统资源的使用情况是非常重要的。这有助于及时发现问题并采取必要的纠正措施。
- 问题2:为什么把逻辑地址联编到物理地址的时间越迟,得到的灵活度越高?
- 问题2解决方案:将逻辑地址(或虚拟地址)转换为物理地址是计算机系统中的关键操作,涉及到内存管理。在这个过程中,灵活度通常指的是系统的可移植性和可扩展性。将逻辑地址联编到物理地址的时间越迟,系统的灵活度通常越高,原因如下:
-
虚拟内存的支持: 延迟逻辑地址到物理地址的转换使得更容易实现虚拟内存。虚拟内存允许程序使用比物理内存更大的地址空间,这对于大型程序和多任务操作系统非常重要。当程序访问虚拟地址时,实际的物理页面可能在需要时才会加载到内存中,从而支持更大的应用程序和更高的并发性。
-
地址空间隔离: 延迟地址转换可以提供更好的地址空间隔离。每个进程可以有自己的地址空间,而不受其他进程的影响。这种隔离性有助于系统的安全性和稳定性,因为一个进程的错误不太可能直接影响其他进程。
-
可移植性: 延迟地址转换允许更大的灵活性和可移植性。一个程序可以在不同的计算机系统上运行,而不需要对其逻辑地址的物理地址映射进行太多修改。这使得程序更容易在不同的环境中移植和部署。
-
内存管理的动态性: 延迟地址转换使得内存管理更具有动态性。系统可以在运行时根据需要动态调整逻辑地址到物理地址的映射,以更好地满足系统的需求。这对于具有动态内存分配需求的应用程序和系统是至关重要的。
总体而言,延迟逻辑地址到物理地址的转换通常是由硬件支持的,例如使用内存管理单元(MMU)。这种设计允许系统在更高的层次上管理内存,提高了系统的灵活性和性能。然而,也需要权衡,因为更高级的地址转换可能引入一些开销。
基于AI的学习
代码调试中的问题和解决过程
-
问题1:命名时将函数名与变量名命名相同
-
问题1解决方案:将函数名开头改为大写
-
问题2:没在开头声明函数
-
问题2解决方案:
-
问题3:在编写Search函数时没有考虑到输入学号查找不到的问题,以及for循环和do while循环还不能分清哪种情况用哪个。
-
问题3解决方案:将原来用的while循环改为for循环,并在能找到对应学号时用变量b标记。
将Search函数改为:
void Search(float score[],int num[],int n)
{
int n,i,b;
b=0;
n=0;
scanf(“%d”,i);
for (n=0; n<n; n++)
{
if(num[n]==i)
{
printf("%d %.2f\n",n+1,score[n]);
b=1;
}
}
if (b==0)
printf (“Wrong!\n”);
}
上周考试错题总结
- The Java Virtual Machine is a hypothetical computer that executes Bytecode.
正确答案: 正确
你的作答: 错误
对知识点掌握不充分
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 2/2 | 20/20 | |
第二周 | 100/100 | 2/4 | 40/40 | |
第三周 | 300/300 | 6/7 | 62/60 | |
第四周 | 500/500 | 8/9 | 80/80 | |
第五周 | 800/800 | 10/10 | 100/100 | |
第六周 | 1200/1200 | 11/11 | 120/120 | |
第七周 | 1500/1500 | 13/13 | 140/140 | |
第八周 | 2000/2000 | 14/14 | 160/160 | |
第九周 | 2500/2500 | 16/16 | 178/180 |
-
计划学习时间:20小时
-
实际学习时间:18小时