2023-2024-1 20231323《计算机基础与程序设计》第九周学习总结
2023-2024-1 20231323《计算机基础与程序设计》第9周学习总结
作业信息
所属课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
作业要求在哪里 | 2023-2024-1计算机基础与程序设计第九周作业 |
作业目标 | 学习《计算机科学概论》第10,11章,《C语言程序设计》第8章并完成云班课测试 |
作业正文 | 本博客链接 |
教材学习内容总结
1.操作系统的两个重要责任是:(1)通过资源管理,提高系统的使用效率;(2)改善人机交互界面,向用户提供友好的工作环境。
2.内存是计算机中的一种重要硬件,它用于暂时存储正在运行的程序和数据。
3.进程管理是操作系统的核心职责之一,主要包含对进程的创建、调度、撤销等操作。当一个应用程序需要内存时,操作系统会进行合理的分配;当应用程序不再使用内存时,操作系统则会及时释放这部分内存,防止内存被某个应用程序长期占用而导致其他应用程序无法使用或者系统崩溃。
4.当CPU运行一个进程时,会为该进程分配一个特定的内存区域,这个内存区域就是虚拟机。逻辑地址是指相对于程序来说的一个地址,每当CPU运行一个进程时,它都会为该进程生成对应的逻辑地址。而物理地址则是指主储存设备中的真实地址。通过这种方式,每个进程都认为自己在一个独立的、完整的计算机系统(即虚拟机)中运行,但实际上它们都是在同一个物理主机上运行的。这是分时操作创造虚拟机假象的原理。
5.逻辑地址和物理地址之间的转换通常由操作系统协助完成,进程使用虚拟内存的逻辑地址,而操作系统会将这些逻辑地址转换成真正的物理地址。
6.在单块内存管理中,内存被分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。这种方式实现简单,适用于单用户、单任务的操作系统,但是对要求内存空间少的程序可能会造成内存浪费。分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区式存储管理可以支持并发,但难以进行内存分区的共享。页式内存管理是把主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位。每个进程也以块为单位进行划分,进程在执行时,以块为单位逐个申请主存中地块空间。进程只会在为最后一个不完整地块申请一个主存块空间时才会产生缺页中断。
7.固定分区中,内存的存储空间被分为若干个固定的区域,每个区域的大小相同或不同。每个分区只能装入一个进程。这种方式可以充分利用内存空间,但是如果某个进程需要更多的内存或磁盘空间,则无法从其他分区中获得,可能导致资源浪费。动态分区则是将内存的存储空间划分为若干个区域,这些区域的个数和大小是动态变化的。当进程需要更多的内存或磁盘空间时,可以动态地增加区域的数量或大小。这种方式可以更有效地利用内存空间,进程可以根据需要动态地获得更多的内存。
8.最先分配(First Fit)是从低地址开始查找,找到第一个能满足大小的空闲分区进行分配。这种算法简单快速,只需要遍历一次空闲分区链表,但可能会造成内存碎片的问题,因为小的空闲分区可能无法被充分利用。
最佳分配(Best Fit)是在所有满足要求的空闲分区中,选择一个最小的分区进行分配。这种算法可以最大限度地利用所有空闲分区,避免产生较大的内存碎片。但是它需要进行全局搜索以找到最佳的空闲分区。
最差分配(Worst Fit)会在满足要求的空闲分区中选择一个最大的分区进行分配。这种算法可能在大内存分配的情况下表现出较好的性能,但可能会产生较多的内存碎片。
9.进程的生命周期包括创建、就绪、运行、挂起和终止等多个状态。
创建阶段:当一个程序被加载到内存中并分配资源后,形成了一个进程。
就绪阶段:当进程所需的资源都准备就绪,操作系统会将进程放入就绪队列中,等待CPU的调度。在这个阶段,进程已经具备执行的条件,但由于CPU正在处理其他任务,所以进程暂时无法运行。
运行阶段:当CPU从就绪队列中选择一个进程来执行时,进程进入运行状态。在运行状态下,进程正在占用CPU进行实际的计算或处理任务。
挂起阶段:在某些特殊情况下,如用户请求或者系统故障等,进程可能会被暂停运行,进入挂起状态。此时,进程虽然暂时无法运行,但仍会被保留在系统中,以便后续恢复。
终止阶段:当进程完成其任务或者因为某种原因需要被强制结束运行时,它就进入了终止状态。在终止状态下,进程将被彻底清除出系统,释放其所占用的资源。
10.CPU调度算法:
先到先服务(FCFS):根据进程请求CPU的顺序来执行,即先请求的进程先得到CPU,当一个进程得到CPU后,它会一直占用CPU直到该进程结束。
最短作业优先(SJF):这种调度算法会选择预计需要最短处理时间的进程来执行。这种方式可以降低平均周转时间,提高系统的响应速度。但是,由于需要预估每个进程的处理时间,所以实现起来较为复杂。
轮询法(ROUND ROBIN):这是一种分时调度算法,它将系统分为若干个时间段,每个时间段内 CPU 轮流分配给各进程。相对于其他算法,RR算法能更好地平衡各个进程之间的负载。
11.文件是计算机系统中数据存储的基本单位,由文件名、文件类型、文件长度、文件创建时间等信息组成。文件系统是在操作系统中对文件进行管理的有关软件和数据的集合,负责为用户提供统一的接口来访问和管理文件,管理文件的存储空间。
12.磁盘调度算法:
先到先服务(FCFS):按照进程请求访问磁盘的顺序进行调度;
最短寻道时间优先(SSTF):选择与当前磁头所在位置距离最近的磁道服务;
SCAN:磁头沿一个方向移动,访问经过的磁道。
教材学习中的问题和解决过程
-
问题1:在分区内存管理中,不明白最先匹配、最佳匹配和最差匹配算法应该怎样执行
-
问题1解决方案:查找资料
-
问题2及解决:在最先匹配算法中,
基于AI的学习
代码编写的问题和解决过程
- 问题1:输出结果总是0;
long double p, i, total;
int n;
scanf("%Lf%Lf%d", &p, &i, &n);
total = p * pow((1 + i), n);
printf("%.4Lf\n", total);
return 0;
解决方案:将long double 改成double
- 问题2:求一个数的立方根,指数不知道怎么表达
float a,b;
scanf("%f",&a);
b=pow(a,1.0/3.0);
printf("%.4f",b);
return 0;
- 问题2解决方案:C语言中,整数除法会向下取整,而浮点数除法则会得到一个更精确的结果。因此,使用1.0/3.0而不是1/3可以确保得到正确的立方根结果。
上周考试错题总结
- 1.Which of the following is executed by the Java Virtual machine? Java虚拟机执行以下哪项操作?
A.Procedure程序 B.Interpreter解释器 C.Bytecode字节码 D.Paradigm范式 E.Compiler编译器
正确答案:C 我的作答:E - 2.Which of the following paradigms is based on the mathematical concepts of symbolic logic? 以下哪项范式是基于符号逻辑的数学概念?
A.Imperative命令式 (or procedural过程式) B.Functional函数式 C.Logic D.Object-oriented面向对象
正确答案:C 我的作答:B
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 6/6 | |
第二周 | 300/500 | 2/4 | 6/12 | |
第三周 | 100/600 | 4/8 | 10/22 | |
第四周 | 60/660 | 3/11 | 40/62 | |
第五周 | 300/960 | 2/13 | 26/88 | |
第六周 | 150/1110 | 3/16 | 20/108 | |
第七周 | 100/1210 | 1/17 | 10/118 | |
第八周 | 100/1310 | 2/19 | 20/138 | |
第九周 | 200/1510 | 1/20 | 35/173 |
-
计划学习时间:40小时
-
实际学习时间:35小时