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

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

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09
这个作业的目标 操作系统责任、内存与进程管理、分时系统、CPU调度、文件、文件系统、文件保护、磁盘调度
作业正文 本博客链接

教材学习内容总结

计算机科学概论(第七版)第10、11章总结

第10章:操作系统基础

  1. 操作系统的概念与功能
    操作系统定义:操作系统是管理计算机硬件和软件资源的程序,它提供用户与计算机硬件之间的接口。操作系统的主要功能是资源管理(CPU、内存、外设等)和任务调度。
    操作系统的核心功能:
    进程管理:管理和调度计算机上的各个进程。
    内存管理:有效分配、回收内存,支持虚拟内存技术。
    文件系统管理:管理存储设备中的文件,提供文件的存取、存储与保护功能。
    设备管理:管理计算机外部设备的输入输出操作。
    用户界面:为用户提供与计算机交互的接口。
  2. 进程管理
    进程的定义:进程是程序的一个执行实例,每个进程都有独立的内存空间和执行状态。
    进程状态:进程有不同的状态,包括运行态、就绪态、阻塞态等。
    进程调度:操作系统根据特定的调度算法来决定哪个进程在何时运行,常见的调度算法有:
    先来先服务(FCFS)
    短作业优先(SJF)
    优先级调度
    时间片轮转(RR)
  3. 内存管理
    内存分配:操作系统负责分配内存给进程使用,常见的内存分配方式有:
    连续内存分配:为每个进程分配一个连续的内存块。
    分页系统:将内存划分为固定大小的页,进程使用页来存储数据。
    分段系统:将进程的内存划分为若干段(如代码段、数据段等)。
    虚拟内存:通过硬盘空间模拟出比物理内存更大的内存空间,让程序看起来可以使用比实际物理内存更多的内存。
  4. 文件系统
    文件的定义与管理:文件是数据存储的基本单位,操作系统需要管理文件的创建、删除、读取和写入。
    文件的组织方式:操作系统为文件提供目录结构,文件可以按照文件名进行组织,并支持对文件进行权限控制(如读、写、执行权限)。
    文件存储:文件通常存储在硬盘或其他外部存储设备上,操作系统通过文件系统来访问和管理这些文件。
  5. 输入输出管理
    输入输出设备:包括键盘、鼠标、显示器、硬盘等外部设备。
    缓冲区管理:操作系统为I/O操作提供缓冲区,以提高数据传输的效率。
    I/O调度:操作系统通过调度算法优化I/O操作的顺序,以减少等待时间,提高性能。

第11章:数据库系统

  1. 数据库系统概述
    数据库的定义:数据库是一个有组织的数据集合,通过数据库管理系统(DBMS)进行管理,提供高效的数据存储、查询、更新和管理功能。
    数据库管理系统(DBMS):DBMS是一种软件,它用于管理数据库中的数据,提供数据存取、管理、更新等功能,确保数据的完整性、一致性和安全性。
  2. 数据模型
    层次模型:数据以树形结构组织,记录间有父子关系,适用于层次化的数据存储。
    网状模型:数据以图形结构组织,记录间可以有多对多的关系,比层次模型更灵活。
    关系模型:数据以二维表格形式组织,每个表由行(记录)和列(字段)组成。关系模型是目前最常用的数据模型,关系数据库管理系统(RDBMS)采用此模型。
  3. 关系数据库
    表(Relation):数据库中的基本存储单位。每张表包含若干列(属性)和行(记录)。
    主键(Primary Key):用来唯一标识每条记录的字段,保证表中每条记录的唯一性。
    外键(Foreign Key):用于建立表之间联系的字段,它指向另一表的主键。
    数据完整性:包括实体完整性、参照完整性和域完整性等,保证数据在存储和操作过程中的正确性和一致性。
  4. SQL语言
    SQL的定义:SQL(结构化查询语言)是一种用于访问和操作数据库的标准语言。
    数据查询(SELECT):从数据库中查询数据,支持过滤、排序、聚合等操作。
    数据操作:包括插入(INSERT)、更新(UPDATE)和删除(DELETE)数据。
    数据定义:包括创建、修改和删除表(CREATE、ALTER、DROP)。
    数据控制:用于控制用户权限,管理数据库安全性(如GRANT、REVOKE)。
  5. 数据库设计
    实体-关系模型(ER图):一种图形化的数据库设计工具,用来描述数据库中的实体及其之间的关系。
    规范化:通过消除冗余数据、避免更新异常等方式,将数据库设计为符合一定规范的结构。常见的规范化范式有:
    第一范式(1NF):要求数据表中的每列都是原子性的。
    第二范式(2NF):在1NF的基础上,要求消除部分依赖。
    第三范式(3NF):在2NF的基础上,要求消除传递依赖。
    C语言程序设计第8章:指针和数组
  6. 指针基础
    指针的定义:指针是存储内存地址的变量,指针变量的值是另一个变量的地址。通过指针可以访问和操作该地址所指向的数据。
    指针运算:指针可以进行加法、减法操作,例如,指针加1表示指向下一个同类型数据的内存地址。
    指针类型:指针的类型必须与所指向的数据类型一致。
  7. 指针与数组的关系
    数组名作为指针:数组名实际上是指向数组首元素的指针。
    通过指针访问数组元素:可以通过指针运算来访问数组的元素。例如,*(arr + i)等同于arr[i]。
    二维数组与指针:二维数组的元素可以通过指针操作进行访问。二维数组可以视为指向指针的指针(如int arr[3][4]可以视为int *arr[3])。
  8. 指针与函数
    通过指针传递参数:使用指针可以传递变量的地址,使得函数能够修改传入的变量。
    指针作为函数返回值:函数可以返回指针,返回动态分配的内存地址等。
  9. 动态内存分配
    动态内存分配函数:
    malloc(size_t size):分配一块指定大小的内存,返回该内存的指针。
    calloc(size_t num, size_t size):分配指定数量和大小的内存,并初始化为0。
    realloc(void *ptr, size_t size):调整已经分配内存的大小。
    free(void *ptr):释放之前分配的内存。
  10. 多维数组与指针
    多维数组:多维数组本质上是指向指针的指针。二维数组可以通过指针进行遍历和访问。
    ..C语言程序设计第8章:指针和数组

C语言程序与设计

  1. 指针基础
    指针的定义:指针是存储内存地址的变量,指针变量的值是另一个变量的地址。通过指针可以访问和操作该地址所指向的数据。
    指针运算:指针可以进行加法、减法操作,例如,指针加1表示指向下一个同类型数据的内存地址。
    指针类型:指针的类型必须与所指向的数据类型一致。
  2. 指针与数组的关系
    数组名作为指针:数组名实际上是指向数组首元素的指针。
    通过指针访问数组元素:可以通过指针运算来访问数组的元素。例如,*(arr + i)等同于arr[i]。
    二维数组与指针:二维数组的元素可以通过指针操作进行访问。二维数组可以视为指向指针的指针(如int arr[3][4]可以视为int *arr[3])。
  3. 指针与函数
    通过指针传递参数:使用指针可以传递变量的地址,使得函数能够修改传入的变量。
    指针作为函数返回值:函数可以返回指针,返回动态分配的内存地址等。
  4. 动态内存分配
    动态内存分配函数:
    malloc(size_t size):分配一块指定大小的内存,返回该内存的指针。
    calloc(size_t num, size_t size):分配指定数量和大小的内存,并初始化为0。
    realloc(void *ptr, size_t size):调整已经分配内存的大小。
    free(void *ptr):释放之前分配的内存。
  5. 多维数组与指针
    多维数组:多维数组本质上是指向指针的指针。二维数组可以通过指针进行遍历和访问。
    ..C语言程序设计第8章:指针和数组
  6. 指针基础
    指针的定义:指针是存储内存地址的变量,指针变量的值是另一个变量的地址。通过指针可以访问和操作该地址所指向的数据。
    指针运算:指针可以进行加法、减法操作,例如,指针加1表示指向下一个同类型数据的内存地址。
    指针类型:指针的类型必须与所指向的数据类型一致。
  7. 指针与数组的关系
    数组名作为指针:数组名实际上是指向数组首元素的指针。
    通过指针访问数组元素:可以通过指针运算来访问数组的元素。例如,*(arr + i)等同于arr[i]。
    二维数组与指针:二维数组的元素可以通过指针操作进行访问。二维数组可以视为指向指针的指针(如int arr[3][4]可以视为int *arr[3])。
  8. 指针与函数
    通过指针传递参数:使用指针可以传递变量的地址,使得函数能够修改传入的变量。
    指针作为函数返回值:函数可以返回指针,返回动态分配的内存地址等。
  9. 动态内存分配
    动态内存分配函数:
    malloc(size_t size):分配一块指定大小的内存,返回该内存的指针。
    calloc(size_t num, size_t size):分配指定数量和大小的内存,并初始化为0。
    realloc(void *ptr, size_t size):调整已经分配内存的大小。
    free(void *ptr):释放之前分配的内存。
  10. 多维数组与指针
    多维数组:多维数组本质上是指向指针的指针。二维数组可以通过指针进行遍历和访问。

基于AI的学习

image

代码调试中的问题和解决过程

问题1:字符串没有正确倒序输出
症状: 程序输出的字符串顺序与预期相反,即从字符串的开头开始输出。
原因: 循环的起始条件设置错误,应该是 i = length - 1 而不是 i = 0。
解决: 检查循环的起始条件,并确保它是从字符串的最后一个字符开始。
问题2:输出包含字符串末尾的空字符
症状: 字符串正确倒序输出了,但是末尾多了一个空字符。
原因: 字符串在C语言中以空字符 '\0' 结尾,循环没有正确地排除这个空字符。
解决: 确保循环在遇到空字符之前停止。可以通过检查 str[i] != '\0' 来实现,或者更简单地,使用 length - 1 作为循环的上限,因为 strlen 函数返回的长度不包括空字符。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 10/70
第五周 300/1600 2/11 10/80
第六周 300/1900 2/13 10/90
第七周 300/2200 2/15 10/100
第八周 300/2500 2/17 10/110
第九周 300/2800 2/19 10/120
posted @ 2024-11-24 01:08  yenai  阅读(13)  评论(0编辑  收藏  举报