2023-2024-1 20231402《计算机基础与程序设计》第9周学习总结

发布时间 2023-11-25 13:26:26作者: 20231402刘穗荷

2023-2024-1 20231402《计算机基础与程序设计》第9周学习总结

作业信息

这个作业属于哪个课程 2023-2024-1-计算机基础与程序设计
这个作业要求在哪里 2023-2024-1计算机基础与程序设计第9周作业
这个作业的目标 自学计算机科学概论第10章,《C语言程序设计》第8章
作业正文 https://www.cnblogs.com/lsh0815/p/17852610.html

教材学习内容总结

《计算机科学概论》

  • 第10章主要介绍了操作系统,内存管理,进程管理,CPU调度,让我了解了操作系统是如何管理内存的,也让我学习到了三种调度方法:先到先服务,最短作业优先和轮询法。

《C语言程序设计》

  • 这章主要讲了一维数组和二维数组,包括一维数组和二维数组的定义和初始化,以及如何向函数传递一维、二维数组。还介绍了交换法排序、选择法排序两种排序方法,顺序查找、折半查找两种查找方法。

教材学习中的问题和解决过程

  • 问题1:用户共享虚拟机中的系统资源时,会因不同用户同时操作同一文件而出问题吗?
  • 问题1解决方案:当多个用户共享虚拟机中的系统资源时,可能会出现一些问题,特别是在同时操作同一文件的情况下。以下是一些可能的问题和解决方法:
  1. 文件冲突: 如果多个用户同时尝试写入或修改同一文件,可能会导致文件冲突。这可能导致数据损坏或丢失。
    解决方法: 使用版本控制系统(例如Git)来管理共享的代码或文档。这样可以跟踪文件的更改历史并协调不同用户之间的工作。

  2. 性能问题: 同时运行大量虚拟机用户可能会导致系统资源争夺,从而影响性能。
    解决方法: 确保虚拟机主机有足够的资源以支持所有用户。监视系统性能,根据需要进行扩展或优化。

  3. 访问权限问题: 不同用户可能具有不同的文件访问权限,这可能导致某些用户无法读取或修改特定文件。
    解决方法: 确保正确配置文件和目录的访问权限。使用用户组来组织用户,并将适当的权限授予这些组。

  4. 网络问题: 如果多个用户同时从虚拟机中下载或上传大量数据,可能会导致网络拥塞。
    解决方法: 对网络流量进行调优,可能采用带宽限制或流量控制来确保公平使用网络资源。

  5. 数据一致性: 在共享虚拟机中,确保数据一致性可能是一个挑战。如果一个用户正在修改数据,另一个用户可能会读取到不一致的状态。
    解决方法: 使用事务或锁定机制来确保数据一致性。这可能涉及到在访问共享数据时实施某种同步机制。

  6. 虚拟机隔离: 虚拟机之间的隔离是关键的,以防止一个虚拟机中的问题影响其他虚拟机。
    解决方法: 使用虚拟化平台提供的隔离功能,确保一个虚拟机的问题不会波及到其他虚拟机。

在共享虚拟机环境中,定期进行备份并监控系统资源的使用情况是非常重要的。这有助于及时发现问题并采取必要的纠正措施。

  • 问题2:为什么把逻辑地址联编到物理地址的时间越迟,得到的灵活度越高?
  • 问题2解决方案:将逻辑地址(或虚拟地址)转换为物理地址是计算机系统中的关键操作,涉及到内存管理。在这个过程中,灵活度通常指的是系统的可移植性和可扩展性。将逻辑地址联编到物理地址的时间越迟,系统的灵活度通常越高,原因如下:
  1. 虚拟内存的支持: 延迟逻辑地址到物理地址的转换使得更容易实现虚拟内存。虚拟内存允许程序使用比物理内存更大的地址空间,这对于大型程序和多任务操作系统非常重要。当程序访问虚拟地址时,实际的物理页面可能在需要时才会加载到内存中,从而支持更大的应用程序和更高的并发性。

  2. 地址空间隔离: 延迟地址转换可以提供更好的地址空间隔离。每个进程可以有自己的地址空间,而不受其他进程的影响。这种隔离性有助于系统的安全性和稳定性,因为一个进程的错误不太可能直接影响其他进程。

  3. 可移植性: 延迟地址转换允许更大的灵活性和可移植性。一个程序可以在不同的计算机系统上运行,而不需要对其逻辑地址的物理地址映射进行太多修改。这使得程序更容易在不同的环境中移植和部署。

  4. 内存管理的动态性: 延迟地址转换使得内存管理更具有动态性。系统可以在运行时根据需要动态调整逻辑地址到物理地址的映射,以更好地满足系统的需求。这对于具有动态内存分配需求的应用程序和系统是至关重要的。

    总体而言,延迟逻辑地址到物理地址的转换通常是由硬件支持的,例如使用内存管理单元(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小时