2023-2024-1 20231306 《计算机基础与程序设计》第九周学习总结
作业信息
这个作业属于哪个课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2023-2024-1计算机基础与程序设计第九周作业 |
这个作业的目标 | 操作系统责任、内存与进程管理、分时系统、CPU调度、文件、文件系统、文件保护、磁盘调度 |
作业正文 |
教材学习内容总结
《计算机科学概论》第10章——操作系统:
-
分时系统
分时系统允许多个用户同时与计算机进行交互,多道程序设计法允许同时有多个活动进程,从而给了程序员直接与计算机系统交互且仍然共享其资源的能力。
以下是分时系统的特点:
1.时间片轮转调度: 在分时系统中,操作系统将处理器时间分割成小的时间片,每个时间片被分配给一个任务。当一个任务的时间片用完后,操作系统将切换到下一个任务。这种调度方式使得多个任务可以看起来同时运行。
2.多用户支持: 分时系统支持多用户同时登录并使用计算机资源。每个用户感觉自己在独占地使用计算机,而实际上,计算机资源在不同用户之间共享。
3.交互性: 分时系统注重用户交互性,允许用户通过终端或其他输入设备与系统进行实时交互。这与批处理系统不同,批处理系统一般是批量地处理作业而不需要实时用户输入。
资源共享: 分时系统实现了对计算机资源的高效共享,包括处理器时间、内存、设备等。这使得计算机能够更加灵活地满足不同用户的需求。
4.响应时间: 分时系统追求较短的响应时间,以提供用户良好的交互体验。这是通过及时地切换任务、合理分配时间片等方式实现的。
任务切换开销: 由于需要频繁地切换任务,分时系统通常需要考虑任务切换的开销。这包括保存和恢复任务的上下文信息等操作。 -
分区内存管理
1.有两种主要的分区内存管理策略:定长分区和可变长分区。
定长分区:
等长分区: 将物理内存划分为固定大小的区域,每个分区都有相同的大小。这种方法通常简单,但可能导致内存浪费,因为某些分区可能无法完全利用。
动态分区: 将物理内存划分为固定大小的区域,但这些分区的数量可以根据程序的需要而动态变化。这种方式更灵活,但需要更复杂的管理机制来动态分配和释放内存。
可变长分区:
分区页式: 将物理内存和逻辑内存划分为固定大小的页,进程的地址空间也被划分为相同大小的页面。这样,物理内存中的页面可以根据需要被映射到逻辑内存中,从而实现更灵活的内存管理。
分区段式: 将逻辑内存划分为若干段,每个段表示一个逻辑单位(如代码段、数据段),每个段的大小可以不同。物理内存中的分区也相应地分成不同大小的块,以匹配逻辑内存的段。
3.三种常用的分区选择法:
最先匹配:把第一个足够容纳程序分区分配给它。
最佳匹配:把最小的能够容纳程序的分区分配给它。
最差匹配:把最大的能够容纳程序的分区分配给它。
- CPU调度
1.分为抢先调度和非抢先调度。
2.周转周期:从进程进入准备就绪状态到它退出运行状态到时间间隔。
3.三大调度方法:
先到先服务 (FCFS):
原理: 按照任务到达的先后顺序进行调度,最早到达的任务先被执行。
特点: 简单、易实现,但可能导致"等待时间长"的问题,即先到达的任务占用处理器时间过长,后面到达的任务需要等待。
最短作业优先 (SJF):
原理: 选择下一个执行的任务时,选择执行时间最短的任务。这可以通过提前知道每个任务的执行时间,或者根据历史执行时间来估算。
特点: 可以减少平均等待时间,但需要准确估算或预测每个任务的执行时间,对于长任务可能导致饥饿问题(长任务一直等不到执行机会)。
轮询法 (RR):
原理: 将处理器时间划分成固定大小的时间片(时间量子),每个任务按照到达的顺序轮流执行一个时间片。如果任务没有执行完,它会被放到队列的末尾等待下一次轮到。
特点: 公平、简单,避免了FCFS的"等待时间长"问题。但可能导致上下文切换频繁,影响系统性能。合适的时间片大小可以平衡公平性和性能。
总结:CPU的轮询算法可能是应用最广泛的。它一般支持所有的作业,被认为是最公平的算法。
《计算机科学概论》第11章——文件系统和目录:
1.文本文件和二进制文件
文本文件:
字符编码: 存储的数据是由字符组成的,通常使用 ASCII 或 Unicode 等字符编码表示。
可读性: 文本文件内容是以人类可读的形式呈现的,可以使用文本编辑器打开查看。
换行符: 换行通常由回车符(CR,Carriage Return)和换行符(LF,Line Feed)组成,不同操作系统使用不同的方式表示换行(例如,Windows使用CRLF,Unix/Linux使用LF)。
文件大小: 由于文本文件存储的是字符,文件大小通常较小。
编辑: 可以使用文本编辑器直接编辑文本文件,对文件内容进行修改。
示例: .txt 文件、.html 文件、.csv 文件等。
二进制文件:
数据表示: 存储的数据不是以字符形式,而是以二进制形式表示。可以包含任意的数据,包括图像、音频、视频等。
可读性: 二进制文件内容通常不是人类可读的,需要特定的程序或工具进行解析和处理。
换行符: 二进制文件没有特定的换行符概念,数据的组织形式取决于文件的类型和格式。
文件大小: 由于二进制文件可以包含任意类型的数据,文件大小通常较大。
编辑: 直接编辑二进制文件可能会破坏文件结构,通常需要使用专门的工具。
示例: 图片文件(如.jpg、.png)、音频文件(如.mp3)、可执行文件(如.exe)等。
2.顺序文件访问和直接文件访问
顺序文件访问:
数据按照存储的顺序一个接一个地读取或写入。
文件指针在文件中按照顺序移动,一般只能前进不能后退。
适用于以线性方式处理数据的场景,例如文本文件或者记录顺序固定的文件。
直接文件访问(或随机文件访问):
允许通过记录的关键字或位置直接访问文件中的数据,而不需要按照顺序逐个读取。
文件指针可以在文件中随意移动,支持随机读写。
《C语言程序设计》第8章
-
数组
1.把数组的长度用宏常量或const常量来定义。
2.在定义数组时不能使用变量定义数组的大小。
3.编译程序不检查下标值是否越界,一旦下标越界,将访问数组以外的空间。 -
二维数组
1.定义和声明:
在许多编程语言中,二维数组的定义类似于一维数组,但需要指定两个维度的大小。
例如,在C语言中,可以使用 int arr[3][4]; 定义一个3行4列的整数型二维数组。
2.访问元素:
通过使用两个索引可以访问二维数组中的元素,一个索引表示行,另一个表示列。
例如,arr[1][2] 表示第2行第3列的元素。
3.内存布局:
二维数组在内存中通常是按行存储或按列存储的,具体取决于编程语言和编译器。
4.应用场景:
二维数组常用于表示矩阵、图像、地图等具有二维结构的数据。
在算法和数据分析中,二维数组也经常用于处理表格数据。
5.初始化:
二维数组可以在声明的同时初始化,或者在后续的代码中进行初始化。