学期2024-2025-1 学号20241306《计算机基础与程序设计》第9周学习总结
学期2024-2025-1学号20241306《计算机基础与程序设计》第9周学习总结
作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)) |
---|---|
这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第9周作业(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276)) |
这个作业的目标 | 操作系统责任,内存与进程管理,分时系统,CPU调度,文件、文件系统,文件保护,磁盘调度 |
作业正文 |
教材学习内容总结
1.操作系统责任
操作系统的责任主要包括以下几个方面:
确保系统稳定性和安全性:通过广泛的测试和调试,以及设计详尽的错误日志记录和监控机制,确保系统长时间运行不出现重大问题,同时设计并实现多层次的安全机制,保护用户数据和隐私。
优化系统性能:通过高效的资源管理机制和性能监测与调优,提高系统的整体性能和资源利用率,确保用户获得良好的使用体验。
管理硬件和软件资源:操作系统负责管理计算机的硬件资源,提供用户与计算机硬件之间的接口,协调各个程序的运行,实现对计算机的有效管理。
处理异常情况:操作系统还需负责处理硬件故障、软件错误或安全问题等异常情况,以确保系统的稳定运行。
2.内存与进程管理
内存与进程管理是操作系统中的两个核心功能,它们共同确保计算机系统的高效、稳定运行。
进程管理:
负责创建、调度、同步、通信和终止进程。
通过系统调用创建新进程,并为其分配地址空间和建立进程控制块。
使用调度算法选择合适的进程分配CPU时间片。
提供机制实现进程间的同步和通信,以及互斥访问共享资源。
内存管理:
负责为进程分配合适的内存空间,满足其需求。
采用连续内存分配、分页内存分配等方式。
确保内存分配、地址变换、存储保护、存储共享和存储扩充等功能的实现。
通过动态分配方式,根据进程需要申请附加内存空间,提高内存利用率。
3.分时系统
分时系统是一种允许多个用户同时交互使用同一台计算机的操作系统。
定义与原理:
分时系统通过时间片轮转的方式,将计算机的系统处理机时间与内存空间按一定的时间间隔,轮流切换给各终端用户的程序使用。
每个用户感觉就像独占计算机一样,因为时间间隔很短。
特点:
可有效增加资源的使用率,提高系统效率。
用户可以通过终端以交互方式使用计算机,对系统资源进行时间上的分享。
实现:
设立时间片,每个用户程序执行一个时间片后被中断,CPU转向下一个用户程序。
操作系统负责时间片的分配和调度,保证每个用户都能获得及时响应。
4.CPU调度
CPU调度是对CPU进行分配的过程,它是多道程序操作系统的基础。以下是关于CPU调度的详细解释:
调度层次:
高级调度:从外存的后备队列中挑选作业调入内存,并创建进程。
中级调度:提高内存利用率,将暂时不能运行的进程调至外存等待,待条件满足时再调入内存。
低级调度:从就绪队列中选择一个进程,将CPU分配给它,是最基本且频率最高的调度。
调度目的:
充分利用CPU资源,避免浪费。
确保多个进程能并发执行,提高系统效率。
调度算法:
分时系统常采用时间片轮转法。
其他算法还包括最高优先权、先来先服务、随机等。
调度时机:
进程主动或被动放弃CPU时。
如进程正常终止、时间片用完、有更高优先级的进程进入就绪队列等。
5.文件、文件系统
文件和文件系统是计算机科学中的基本概念,对于数据的存储、组织和管理至关重要。
文件:
是数据的集合,是计算机存储数据的基本单位。
可以包含文本、图像、音频、视频、程序代码等各种类型的数据。
内部结构通常具有层次性,包含记录和数据项,便于数据的组织和管理。
文件系统:
是操作系统中统一管理信息资源的一种软件。
负责管理文件的存储、检索、更新,提供安全可靠的共享和保护手段。
支持文件的创建、删除、打开、关闭、读写等操作。
提供对文件存储空间的管理,以及文件的保护和保密措施。
文件系统还负责为用户建立文件、控制文件的存取,并在用户不再使用时撤销文件。
6.文件保护
文件保护是确保文件数据安全性和完整性的重要措施。以下是几种常见的文件保护方法:
设置密码保护:为文件设置打开密码,只有输入正确的密码才能访问文件内容。这种方法可以有效防止未经授权的访问。
使用只读模式:将文件设置为只读模式,他人可以打开文件查看内容,但无法进行编辑。这有助于保护文件不被意外修改。
加密文件:通过加密技术保护文件内容,即使文件被非法获取,也无法轻易读取其中的信息。
文件隐藏与伪装:通过修改文件后缀或将其隐藏在压缩文件中,增加文件被发现的难度,从而保护文件安全。
7.磁盘调度
磁盘调度是操作系统中管理磁盘I/O请求的过程,旨在优化磁盘访问性能和资源利用率。以下是关于磁盘调度的详细解释:
目的:
磁盘调度的主要目的是减少磁盘I/O操作的延迟,提高磁盘的访问速度。
通过合理安排磁盘请求的执行顺序,可以优化磁盘的旋转和寻道时间,从而提高整体系统性能。
调度算法:
先来先服务(FCFS):按请求到达的先后顺序进行调度,简单但可能不是最优。
最短寻道时间优先(SSTF):选择距离磁头当前位置最近的请求进行调度,以最小化寻道时间。
电梯算法(SCAN):磁头只沿一个方向移动,直到到达磁盘的一个端点,然后反向移动,同时处理在途中的请求。
循环扫描(C-SCAN):与SCAN类似,但磁头在到达磁盘的一个端点后,会立即回到起点,并重新开始扫描。
性能考虑:
磁盘调度的性能受多种因素影响,包括磁盘的旋转速度、寻道时间、I/O请求的到达模式等。
不同的调度算法在不同的工作负载下可能表现出不同的性能。
实际应用:
在实际的操作系统中,磁盘调度算法通常会结合其他优化技术,如缓存、预取等,以进一步提高磁盘I/O性能。
磁盘调度也是数据库系统、文件系统等高层软件中需要考虑的重要问题。
教材学习中的问题和解决过程(先问 AI)
- 问题1:数组作函数参数需要注意什么
- 问题1解决方案:
- 问题2:在C语言中,函数内如何获取数组大小
- 问题2解决方案:
- 问题3:比如在主函数里数组的大小是由键盘输入决定的,那么数组怎么做函数参数才能遍历
- 问题3解决方案:
如果在主函数中数组的大小是由键盘输入决定的,那么数组将是动态分配的,并且你需要将这个动态分配数组的大小传递给将要处理数组的函数。在C语言中,这通常通过传递一个指向数组的指针和一个表示数组大小的整数来实现。
以下是一个示例,展示了如何创建一个动态分配的数组,并将其作为参数传递给一个函数进行遍历:
Copy Code
include <stdio.h>
include <stdlib.h>
函数声明,接收一个整数指针和一个整数大小
void traverseArray(int *arr, int size);
int main() {
int size;
printf("Enter the size of the array: ");
scanf("%d", &size);
// 动态分配数组
int *arr = (int *)malloc(size * sizeof(int));
if (arr == NULL) {
fprintf(stderr, "Memory allocation failed\n");
return 1;
}
// 填充数组(这里只是简单地赋值为0到size-1)
for (int i = 0; i < size; i++) {
arr[i] = i;
}
// 调用函数遍历数组
traverseArray(arr, size);
// 释放动态分配的内存
free(arr);
return 0;
}
函数定义,接收一个整数指针和一个整数大小
void traverseArray(int *arr, int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
在这个示例中:
主函数main首先提示用户输入数组的大小,并读取这个值。
使用malloc函数动态分配一个整数数组,大小为用户输入的值。
检查malloc是否成功分配了内存。如果失败,打印错误消息并退出程序。
填充数组,这里只是简单地将每个元素设置为其索引值。
调用traverseArray函数,将动态分配的数组和数组大小作为参数传递。
在traverseArray函数中,使用传递的大小来遍历数组,并打印每个元素。
最后,在main函数中释放动态分配的内存,以避免内存泄漏。
基于AI的学习