2024-2025-1 20241314 《计算机基础与程序设计》第九周学习总结

2024-2025-1 20241314 《计算机基础与程序设计》第九周学习总结

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第九周作业
这个作业的目标 操作系统责任 内存与进程管理 分时系统 CPU调度 文件、文件系统 文件保护 磁盘调度
作业正文 正文

教材学习内容总结

计算机科学概论(第七版)第10,11章

第10章:计算机网络
这一章通常聚焦于计算机网络的基本原理和技术,内容可能包括以下几个部分:

  1. 网络的基本概念
    网络定义:什么是计算机网络,网络的功能和目的。
    网络的好处:资源共享、信息通讯、协作工作等优势。
  2. 网络类型
    局域网(LAN):通常覆盖小范围,适用于家庭或办公环境。
    广域网(WAN):覆盖更大区域,通常由多个LAN连接而成,比如互联网。
    个人区域网(PAN):在个人设备之间建立的小范围网络。
  3. 网络拓扑
    星型、总线型、环型拓扑等各种网络拓扑的定义和优缺点。
    各种拓扑对网络性能和故障耐受性的影响。
  4. 网络协议
    TCP/IP协议族:如何工作,分层模型(应用层、运输层、网络层、数据链路层)。
    HTTP/HTTPS、FTP、SMTP等应用层协议的功能和用途。
    IP地址:静态动态IP配置,CIDR,私有IP与公有IP的区别。
  5. 网络安全
    安全威胁:如病毒、木马、拒绝服务攻击(DoS)等。
    安全措施:防火墙、加密、VPN(虚拟私人网络)的基础知识。
    数据隐私与保护:数据传输中的隐私保护方法。
  6. 互联网的构建
    互联网基础设施:如何连接不同的网络,核心路由器、交换机的角色。
    域名系统(DNS):如何将域名转换为IP地址。
    网络互联:ISPs(互联网服务提供商)的角色与运作。

第11章:数据库
这一章通常介绍数据库系统的基本原理及其应用,包括以下内容:

  1. 数据库的基本概念
    什么是数据库:定义及其与其他数据存储形式(如文件系统)的比较。
    数据库管理系统(DBMS):功能和角色,提供数据管理、操控、存取工具。
  2. 数据模型
    关系模型:数据以表格形式组织的基本理论(表、行、列)。
    其他模型:对象数据库、层次数据库和文档数据库的介绍及其应用场景。
  3. SQL(结构化查询语言)
    基本SQL语法:如何使用SELECT、INSERT、UPDATE、DELETE等命令。
    查询操作:如何使用条件、排序和分组等高级查询。
    连接操作:如何在多个表之间关联数据。
  4. 数据库设计
    规范化:如何设计高效、无冗余的数据库结构,包括1NF、2NF、3NF的概念。
    实体-关系模型(ER模型):使用图形化方式设计和可视化数据库。
  5. 数据完整性与安全性
    数据完整性约束:主键、外键和唯一约束的定义及其重要性。
    访问控制:用户角色和权限管理。
    备份与恢复:确保数据不丢失的方法,以及恢复数据库的策略。
  6. 数据库应用
    实际案例分析:数据库在电子商务、社交媒体、银行系统等场景的应用。
    大数据与 NoSQL 数据库的简介:当数据量大到关系数据库无法处理时的解决方案。

《C语言程序设计》第8章

. 指针的基本概念
定义:指针是一个变量,用于存储另一个变量的内存地址。通过指针,我们可以直接访问和操作内存中的数据。
指针类型:每个指针都有对应的数据类型,指针的类型决定了指针所能指向数据的类型。如:
int *p; - 指向整型的指针
char *p; - 指向字符型的指针
float p; - 指向浮点型的指针
2. 指针的声明和初始化
声明:指针的声明与普通变量相似,但前面加上星号(
),以表示这是一个指针类型。
c
int *p; // 声明一个整型指针
初始化:指针可以通过取地址运算符(&)来初始化,指向一个已有变量的地址。
c
int var = 42;
int *p = &var; // p 现在指向 var 的地址
3. 指针的运算
地址运算:可以对指针进行算术操作,指针的加法或减法以该指针指向的数据类型大小为单位。
c
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // 指向数组的首元素
p++; // 现在指向 arr[1]
空指针:使用 NULL 可以初始化一个不指向任何有效内存的指针。
c
int p = NULL; // 指针 p 为空
4. 间接寻址
解引用运算符(
):用于获取指针所指向的地址的值。
c
int value = *p; // 通过 p 取得 var 的值
修改值:可以通过指针修改变量的值。
c
*p = 100; // 此时 var 的值变为 100
5. 指针与数组
数组名作为指针:数组名实际上是指向数组首元素的指针,在表达式中可以直接使用。
c
int arr[] = {1, 2, 3, 4, 5};
int *p = arr; // p 指向 arr[0]
printf("%d", *(p + 2)); // 打印 arr[2] 的值,结果是 3
遍历数组:使用指针遍历数组中的元素。
c
for (int i = 0; i < 5; i++) {
printf("%d ", *(arr + i)); // 用指针访问数组元素
}
6. 指向指针的指针
定义:指向指针的指针可以存储指针变量的地址,通常用于动态内存分配和多级数据结构。
c
int var = 10;
int *p = &var; // p 是一个指向 int 类型的指针
int **pp = &p; // pp 是一个指向指针的指针
printf("%d", **pp); // 输出 var 的值,结果是 10
7. 动态内存分配
内存分配:使用 malloc、calloc、realloc 和 free 等函数进行动态内存管理。
示例:
c
int *arr = (int *)malloc(5 * sizeof(int)); // 动态分配一个整型数组
if (arr == NULL) {
printf("Memory allocation failed\n");
return 1; // 分配失败
}
// 填充数组
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
// 释放内存
free(arr);
8. 指针与函数
指针传参:通过指针传递变量的地址,使得函数可以修改传入变量的值。
c
void increment(int p) {
(
p)++; // 修改指向的值
}

int main() {
int var = 5;
increment(&var); // 传递 var 的地址
printf("%d", var); // 输出修改后的值,结果是 6
}
函数指针:指向函数的指针,可以用于回调或实现动态行为。
c
void sayHello() {
printf("Hello, World!\n");
}

int main() {
void (*funcPtr)() = sayHello; // 声明一个函数指针并指向 sayHello
funcPtr(); // 调用函数
}
9. 指针的常见错误
野指针:未初始化的指针或指向已经释放的内存,这可能导致未定义行为。
内存泄漏:动态分配的内存未被释放,导致内存耗尽。
示例:
c
int *p = malloc(sizeof(int)); // 动态分配内存
// ...
free(p); // 正确释放内存
p = NULL; // 防止野指针

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

问:分时系统实现机制

答:轮转调度:采用时间片轮转(Round Robin)调度算法,每个进程在其时间片内运行,时间片到后进行上下文切换。
进程管理:通过操作系统的进程管理子系统,实现进程的创建、调度、同步和通信等功能。
中断机制:硬件和软件中断机制用于实现任务切换,它允许系统在执行某个任务时中断程序流,以执行其他任务。

问:分时系统优缺点

答:高效利用CPU:多个用户共享CPU时间,提高了资源利用率。
提升用户满意度:快速响应让用户感觉拥有更好的系统体验。
灵活性高:用户可以随时请求计算,适用于动态变化的计算需求。
缺点:

上下文切换开销:频繁的切换可能导致系统开销增大,影响整体性能。
安全问题:不当的资源共享可能导致用户数据和隐私泄露。
资源竞争:多个用户同时访问可能引发资源争用问题。

问:磁盘调度

答:磁盘调度是操作系统中处理磁盘I/O请求的一项重要机制。由于磁盘的访问速度通常比内存慢得多,合理的调度策略能够提高系统的整体性能,减少响应时间,优化磁盘的使用。

  1. 磁盘调度的基本概念
    磁盘I/O请求:在计算机系统中,进程会向磁盘发出读取或写入请求。调度算法负责决定哪些请求应该被优先处理。
    寻道时间:当磁头在磁盘上移动至正确的轨道所需的时间。寻道时间是影响磁盘访问速度的关键因素之一。
  2. 常用的磁盘调度算法
    以下是一些常见的磁盘调度算法:

2.1 先来先服务(FCFS, First-Come, First-Served)
工作原理:磁盘请求按照到达顺序进行处理。
优点:简单易实现,公平性好。
缺点:可能导致长时间的寻道,导致较长的平均响应时间。
2.2 短作业优先(SSTF, Shortest Seek Time First)
工作原理:每次选择离磁头当前位置最近的请求处理,缩短平均寻道时间。
优点:通常能有效减少总寻道时间。
缺点:可能产生“饥饿”现象,即某些请求得不到及时处理。
2.3 扫描算法(SCAN)
工作原理:磁头在磁盘上单向移动,处理经过的所有请求,达到一端后反向移动,继续处理。
优点:响应时间相对较短,减少了极端寻道距离。
缺点:远离扫描方向的请求可能会被延迟处理。
2.4 循环扫描(C-SCAN, Circular SCAN)
工作原理:磁头在一端达到后,会快速返回到另一端,然后继续在同一方向处理请求。
优点:提供了更均匀的等待时间,所有请求在平均时间内都能被处理。
缺点:头部往返回到原始位置时会有一些时延。
2.5 最短寻道时间优先(SSTF)
工作原理:优先处理离当前磁头位置最近的请求。
优点:在一般情况下,能有效降低寻道时间。
缺点:同样可能导致“饥饿”问题。
3. 调度算法的比较
每种调度算法都有其优缺点,适用场景不同。一般来说:

若系统负载较低且请求均匀,可以使用FCFS。
高负载或需提高性能时,推荐使用SSTF或SCAN。
对平均响应时间要求较高时,可以使用C-SCAN。
4. 调度的影响因素
请求模式:连续的请求可能表现出不同的特性,与随机请求相比,更有可能被有效调度。
磁盘性能:不同磁盘的性能变化也会影响调度策略的选择。
系统负载:处理器、内存及网络的负载情况都会影响I/O请求的响应时间。

基于AI的学习







posted @ 2024-11-24 16:36  欧阳嘉盛  阅读(16)  评论(0编辑  收藏  举报