2023-2024 20231313《计算机基础与程序设计》第九周学习总结
作业 | 速达 |
---|---|
作业课程 | 班级链接 |
作业要求 | 计算机基础与程序设计第九周学习总结 |
作业内容 | 计算机科学概论第10,11章《C语言程序设计》第8章并完成云班课测试,操作系统责任、内存与进程管理、分时系统、CPU调度、文件、文件系统、文件保护、磁盘调度 |
作业正文 | 我的作业 |
目录
教材总结
总结
《计算机科学概论》:首先,介绍了操作系统的角色,从内存进程CPU管理、批处理、到分时和其他OS要素,其次是内存管理,介绍了三种技术单块,分区和页式的基本原理,再次,是进程管理,使我们了解到进程在计算机中正确运行所需要的管理信息和管理方法,先到先服务、最短作业优先、轮询法,然后,下一章讲述了文件系统和目录,用来存储信息,文本文件和二进制文件,包括有文件类型的详细介绍,对文件的操作,访问和保护,目录是文件的有名集合,又目录树,路径名和磁盘的调动,以及调动的方法。
《C语言程序设计》:数组和算法基础,介绍了一维数组和二维数组以及他们适用的范围和场景类型,讲述了怎么定义和初始化,和数组名称的特殊含义的理解,以及如何向函数传递数组信息,在算法基础里,讲述了一些基础的选择、快速排序算法和查找算法。
学习过程中的问题
对于一系列复杂抽象的概念的理解的把握的能力需要提升,存在对抽象的概念初步认识时理解的不是很到位,可以通过在csdn上进一步了解相关资料
《计算机科学概论》第十、十一章
操作系统的角色
应用软件是为了满足特定需要一一解决现实世界中的问题一一而编写的;系统软件负责在基础层上管理计算机系统,它为创建和运行应用软件提供了工具和环境。系统软件通常直接与硬件交互,提供的功能比硬件自身提供的更多;计算机的操作系统是系统软件的核心。
在了解这些概念之后,就需要了解内存、进程和CPU管理,多道程序设计是在主存中同时驻留多个程序的技术;内存管理,以明确内存中有哪些程序以及它们驻留在内存的什么位置;可以将它定义为正在执行的程序。程序只是一套静态指令,进程则是动态的实体,表示正在执行的程序;进程管理,以跟踪进程的进展以及所有中间状态。内存管理和进程管理都需要CPU调度即确定某个时刻CPU要执行内存中的哪个进程。
早期计算机时期,程序员需要分批组织作业,所以就可以在多道程序设计的环境中设计分批操作系统;之后也包含了一种分时的概念,即系统允许多个用户同时对一台计算机进行交互,多道程序算法给这一操作前提,也给讲述了古老的哑终端的构成只有一个显示器和键盘。
其他的OS要素简要包括,实时系统和响应时间,分别代表应用程序决定响应时间的至关重要的系统和收到信号和生成响应之间时间。
内存管理
逻辑地址是指定了一个普通地址的值,这个地址是相对于程序而不是相对于主存的。物理地址是主存储设备中的真实地址;逻辑地址和物理地址间的映射叫作地址联编,或者说是逻辑地址和物理地址间的映射。
单块内存管理
把主存分为两部分,每个程序占用一部分,操作系统所需要的空间留下,剩余的分配给应用程序,
内存分区管理
划分内存的方法还有两个,一是固定分区,就是将主存划分为特定数目的分区,大小可以不一样,但在操作系统初始引导后就固定下来了,二是动态分区,就是根据程序的需要来进行划分,当CPU开始运行一个程序时,OS将把程序的分区起始地址存储到基址寄存器中。同样,分区的长度将被存人界限寄存器,当逻辑地址被引用时,首先它将与界限寄存器中的值进行比较,确保该引用属于分配给程序的内存空间。如果是这样,那么逻辑地址的值将被加到基址寄存器中的值上,以生成物理地址。
对于一个崭新的程序,可以使用常见的三种分区选择法,最先匹配,最佳匹配,最差匹配,三者分别是将第一个足够容纳的分区、最小的足够容纳程序的分区和最大的容纳程序的分区;
页式内存管理,在页式内存管理中,主存被分为固定的帧大小,进程被划分为页,而且为了掌握进程页的分布,操作系统需要为每个进程设置页映射表,页与帧都是从零开始编号的,
页式内存管理法的图解,可以进一步详细更好的理解该方法,并且在该方法中进行交互时会需要许多新定义的概念和重要扩展等,包括页面交换,虚拟内存,请求分页之类的
进程管理
先到先服务FCFS
进程按照他们运行的先后顺序传到了CPU,在该FCFS方法调度中,运用到了许多因素,但是并没有将他们用到计算最佳程序调度的顺序中,而只是单纯地按照传递顺序来进行的
最短作业优先SJN
在该调度中,CPU是处于一种随时调查查看处于准备就绪的状态的进程,并分配一个具有最短服务时间的,与FCFS相同的是,他也是非抢先式的,同时他计算出来的最短作业也并非具有最佳性
轮询法
CPU-的轮询法将把处理时间平均分配给所有准备就绪的进程。该算法建立单独的时间片,即在每个进程被抢占并返回准备就绪状态之前收到的时间量。被抢占的进程最终会得到其他的 CPU 时间片。这个过程将持续到进程得到了完成所需的全部时间从而终止了为止。
文件系统
学习前先需要明确,文件、文件系统和目录的概念,他们分别是指数据的有名集合,是用来组织二级存储设备、操作系统为他管理的文件提供逻辑视图、文件的有名分组。
文本文件和二进制文件
所有的文件都可以分为这两类,在文本文件中,数据字节是ASCii或Unicode字符集中的字符,二进制文件中,要求基于文件中的数据给位串一个特定的解释;文件类型,不论是文本还是二进制,大多数都有特定类型的信息,文件名称包括主文件名和文件扩展名,常见的文件类型和文件扩展名如下表所示,改变文件扩展名并不会改变文件内数据或者内部格式,而是如果在专门的程序中打开扩展名不匹配的文件,则会发生错误,文件操作,常见的有创建、删除、打开、关闭、读取数据、写入等,文件的访问也是比较重要的,两种主要的有顺序访问和直接访问,最常见和最容易实现的是顺序文件访问,即把文件看作是一种线性结构,根据读写的数据量移动当前的文件指针;直接文件访问的文件会被概念性的分为带编号的逻辑记录,直接访问允许用户指定记录编号,从而将文件指针设置为某个特定的记录;文件保护,在多用户系统下,文件保护和文件的安全性就非常重要了,确定文件的特定访问的合法性是不可或缺的;
目录
目录是文件的有名集合,是一种按照逻辑方式对文件分组的方法
目录树
一个目录还可以包括其他的目录,这个大的目录叫做父目录,被包括的叫做子目录,子目录也可以有他的子目录,形成了一种分级结构,所以文件系统常被视为目录树,最高层的叫做根目录,(个人认为和树图有异曲同工之妙),但是不论目录有多少,你总会在一层中的某一目录中,所以该目录我们称之为工作目录,
路径名
路径名是用来指定一个特殊的文件系统或目录,要用文本表示文件必须说明该文件的路径是什么,就是找到能到达这个文件的一系列路径,这当中还包括着绝对路径和相对路径,绝对路径是从根目录出发来谈的,相对路径则是从工作目录,但是两种路径都能到达所需文件中去,在Windows中的路径如下所示的,就是我们所常见的在主窗口下方一点的路径显示窗口中的内容
磁盘调度
最重要的二级存储设备是磁盘驱动器,由于二级I/0是一般计算机系统中最慢的部分,所以访问磁盘驱动器上的数据的方法对于文件系统至关重要。在计算机同时处理多个进程时,将建立一个访问磁盘的请求列表。操作系统用于决定先满足哪个请求的方法叫作磁盘调度。简言之就是,决定先满足哪个磁盘I/O请求的操作。
先到先服务磁盘调度法FCFS、最短寻道时间优先磁盘调度法SSTF、SCAN磁盘调度法
与之前的CPU调度方法极其类似,都是最容易实现的,按照请求发送的顺序来进行处理,而非考虑读写头的当前位置;SSTF是将移动尽可能少的读写头来当作实现原则,与FCFS相比有改进,SCAN磁盘调度算法的工作方式与之类似,只是在磁盘调度算法中没有上下移动,而是读写头向轴心移动,然后再向盘片边缘移动,就这样在轴心和盘片边缘之间来回移动。
《C语言程序设计》第八章
一维数组的定义和初始化
数组是一组具有相同类型的变量的集合,它是一种顺序存储、随机访问的顺序表结构。使用一个统一的名字来标识这组相同类型的数据,这个名字称为数组名。构成数组的每个数据项称为数组元素,C程序通过数组的下标实现对数组元素的访问。如:int score [5];
在该声明语句中,int代表该数组的基类型,即数组中元素的类型下标的个数表明数组的维数,本例中下标个数为1,表明数组score是维数组。score 后方括号内的数字代表数组元素的个数。因此,该语句通过指定数组元素的类型、名字和元素个数,定义了一个有5个元素的一维nt型数组score,这就是数组的定义和初始化
二维数组的定义和初始化
类型名 数组名[元素个数]是一维数组的定义,而二维的只需要在一维的基础上,再加上一维下标即可,编程类型名 数组名[第一类长度][第二类长度];如数组int matirx[3][4];与一维数组占用的字节相比,他的求算需要加上行列sizeof(基类型)。
向函数传递数组
传递数组形参的三种写法,一、形式参数是一个指针;二、形式参数是一个已定义大小的数组;三、形式参数是一个未定义大小的数组。
查找排序
交换排序的算法核心就是,for (i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
若 score[j]>score[i]
则交换 score[j]和 score[i]的值;
在交换法上演变改进的一种选择排序,他的基本实现思路如图
除了这两种排序方法,还有其他的二分法,快排,冒泡排序等一系列时空复杂度不一的方法;
基于AI的学习
代码行数(新增/累积) | 学习时间(新增/累积) | |
---|---|---|
目标 | 2000行 | 100小时 |
第一周 | 50/50 | 2/2 |
第二周 | 50/50 | 2/2 |
第三周 | 50/50 | 2/2 |
第四周 | 50/50 | 2/2 |
第五周 | 300/300 | 2/2 |
第六周 | 300/300 | 2/2 |
第七周 | 200/200 | 1/1 |
第八周 | 200/200 | 1/1 |
第九周 | 200/200 | 1/1 |