2021-2022-1 20211420《信息安全专业导论》第九周学习总结
作业信息
|作业属于|2021-2022-1信息安全专业导论
|作业要求|2021-2022-1信息安全专业导论第九周作业
- 学习目标
- 操作系统责任
- 内存与进程管理
- 分时系统
- CPU调度
- 文件、文件系统
- 文件保护
- 磁盘调度
|班课作业链接|
熟悉编程语言
俄罗斯方块
小学四则运算编程实践
教材学习内容总结
第10章
- 操作系统的角色
- 计算机的操作系统:有两个责任,即管理计算机资源并为系统交互提供界面的系统软件,是系统软件的核心
- 现代软件:分为应用软件和系统软件
- 应用软件:帮助我们解决现实世界问题的程序
- 系统软件:管理计算机系统并与硬件进行交互的程序
- 双引导(多引导)系统:计算机可以具备两个或更多个操作系统并可以使用户选择使用哪一个操作系统的配置
- 内存,进程与CPU管理
- 相关概念
- 内存:程序在计算机中运行的地方
- 内存管理:了解主存中载有多少个程序以及它们的位置的动作
- 多道程序管理:同时在主存中驻留多个程序,由它们竞争CPU的技术
- 进程:程序执行过程中的动态表示法
- 进程管理:了解活动进程的信息的动作
- CPU调度:确定主存中的那个进程可以访问CPU以便执行的动作
- 批处理
- 作业:程序和系统指令集合在一起
- 分批:将需要相同或相似资源的作业分成一批
- 分时
- 分时:多个交互用户同时共享CPU时间的系统
- 虚拟机:分时系统创建的每个用户都有专有机器的假象
- 分时系统最初的构成:一台主机,一组连接到主机的哑终端
- 主机:一个大型的多用户计算机,通常与早期的分时系统相关
- 哑终端:在早期的分时系统中用户用于访问主机的一套显示器和键盘
- 分时系统允许多个用户同时与计算机进行交互
- 分时系统创建了每个用户都专有这台计算机的假象,每个用户都不必主动竞争资源。即使用户可能知道自己在和其他用户共享这台机器,但不必为此付出额外的操作,因为操作系统在幕后管理资源共享
- 在分时系统中,每个用户都有一台虚拟机,在其中使用所有系统资源(实际由多个用户共享)
- 在主机中每个用户由一个登录进程表示,用户运行程序时会竞争CPU资源,只要CPU够快,用户就不会发现自己在等待
- 其他OS要素
- 实时系统:应用程序的特性决定了响应时间至关重要的系统
- 响应时间:收到信号和生成响应之间的延迟时间
- 相关概念
- 内存管理
- 两种地址(实际上在前面的学习中的寻址模式就有涉及到)
- 逻辑地址(虚拟地址或相对地址):指定了一个普通地址的值,这个地址是相对于程序而不是相对于主存的
- 物理地址:主存储设备中的真实地址
- 地址联编:逻辑地址和物理地址间的映射
- 三种技术
- 单块内存管理
- 定义:把应用程序载入一段连续的内存区域的内存管理方法
- 在这种内存管理机制中,要生成物理地址只需要用逻辑地址加上程序在物理主存中的起始地址即可
- 分区内存管理
- 两种方法
- 固定分区法:把内存分成特定数目的分区以载入程序的内存管理方法
- 动态分区法:根据容纳程序的需要对内存分区的内存管理方法
- 任何时候内存都是被划分为一组分区,有些是空的,有些分配给了程序
- 两种寄存器
- 基址寄存器:存放当前分区的起始地址的寄存器
- 界限寄存器:存放当前分区的长度的寄存器
- 三种常用的分区选择法
- 最先匹配:即把第一个足够容纳程序的分区分配给它
- 最佳匹配:即把最小的能够容纳程序的分区分配给它
- 最差匹配:即把最大的能够容纳程序的分区分配给它
- 最先匹配和最佳匹配适用于固定分区,最差匹配适用于动态分区
- 两种方法
- 页式内存管理
- 页式内存管理法:把进程划分为大小固定的页,载入内存时存储在帧中的内存管理方法
- 帧:大小固定的一部分主存,用于存放进程页
- 页:大小固定的一部分进程,存储在内存帧中
- 页映射表:操作系统用于记录页和帧之间的关系的表
- 页和帧都是从0开始编号的,这样可以简化地址的计算
- 逻辑地址的转换:逻辑地址/页面大小=商(页编号)......偏移量
- 逻辑地址通常表示为<页编号,偏移量>
- 物理地址生成:查看PMT,找到页所在的帧编号,然后用帧编号乘以帧大小,加上偏移量即可
- 请求分页:页式内存管理法的扩展,只有当页面被引用(请求)时才会被载入内存
- 页面交换:把一个页面从二级存储设备载入内存,通常会使另一个页面从内存中删除
- 虚拟内存:由于整个程序不必同时处于内存而造成的程序大小没有限制的假象
- 页式内存管理法:把进程划分为大小固定的页,载入内存时存储在帧中的内存管理方法
- 单块内存管理
- 两种地址(实际上在前面的学习中的寻址模式就有涉及到)
三种技术的优缺点
优点 | 缺点(局限性) | |
---|---|---|
单块内存管理 | 实现和管理都很简单 | 大大浪费了内存空间和CPU时间 |
分区内存管理 | 同时把几个程序载入内存,有效地利用主存 | 一个分区必须要能够容纳整个程序 |
页式内存管理 | 不必再把进程存储在连续的内存空间中 | 页面交换过多(系统颠簸)会严重降低系统的性能 |
- 进程管理
- 进程状态:在操作系统的管理下,进程历经的概念性阶段
- 五个阶段:创建阶段,准备就绪状态,运行状态,等待状态,终止状态
- 进程控制块
- 概念:操作系统管理进程信息使用的数据结构
- 通常每个状态由一个PCB列表表示,处于该状态的每个进程对应一个PCB
- PCB作用
- 存储有关进程的各种信息
- 存储进程在其他所有CPU寄存器中的值
- 维护关于CPU调度的信息
- 上下文切换:当一个进程移出CPU,另一个进程取代它时发生的寄存器信息交换
- 进程状态:在操作系统的管理下,进程历经的概念性阶段
- CPU调度
- 概念:确定把哪个处于准备就绪状态的进程移入运行状态
- 两类调度
- 非抢先调度:当当前执行的进程资源放弃了CPU时发生的CPU调度
- 抢先调度:当操作系统决定照顾另一个进程而抢占当前执行进程的CPU资源时发生的CPU调度
- 周转周期:从进程进入准备就绪状态到它最终完成之间的时间间隔,是评估CPU调度算法的标准,进程的平均周转周期越短越好
- 三种方法
- 先到先服务(FCFS):进程按照它们到达运行状态的顺序转移到CPU,是非抢先的
- 最短作业优先(SJN):查看所有处于准备就绪状态的进程,并分派一个具有最短服务时间的,是非抢先的
- 轮询法:把处理时间平均分配给所有准备就绪的进程,是抢先的,应用最广泛的,一般支持所有的作业,最公平的算法
- 轮询法建立单独的时间片(分配给每个进程的时间量)
第11章
- 文件系统
- 相关概念
- 文件:数据的有名集合,用于组织二级存储设备
- 文件系统:操作系统为它管理的文件提供的逻辑视图
- 目录:文件的有名分组
- 文本文件与二进制文件
- 文本文件:包含字符的文件
- 二进制文件:包含特定格式的数据的文件,要求给位串一个特定的解释
- 文件类型
- 文件类型:文件(如Java程序或Microsoft文档)中存放的关于类型的信息
- 文件扩展名:文件名中说明文件类型的部分
- 有些文件扩展名是默认与特定的程序相关联的,文件扩展名只说明了文件中存放的是什么,改变文件扩展名不会改变文件中的数据或它的内部格式
- 如果要在专用的程序中打开一个扩展名错误的文件,只会得到错误的信息
- 文件操作
- 创建文件
- 删除文件
- 打开文件
- 关闭文件
- 从文件中读取数据
- 把数据写入文件
- 重定位文件中的当前文件指针
- 把数据附加到文件结尾
- 删减文件(删除它的内容)
- 重命名文件
- 复制文件
- 文件访问
- 有些操作系统只提供一种文件访问类型,其他的提供多种,文件的访问类型是在创建文件时设置的
- 主要访问方法:顺序访问法和直接访问法
- 顺序文件访问:以线性方式访问文件中的数据的方法
- 直接文件访问:通过指定逻辑记录编号直接访问文件中的数据的方法
- 文件保护
- 重要性居于首位
- 例子
- Unix文件保护设置三类,Owner, Group和World
- 相关概念
方法说明
读 | 写/删除 | 执行 | |
---|---|---|---|
Owner | 有 | 有 | 无 |
Group | 有 | 无 | 无 |
W目录树orld | 无 | 无 | 无 |
- 目录
- 大多数操作系统都用文件表示目录,例如Windows系统,不过一旦建立了目录文件,就必须支持对目录文件的一般操作
- 目录树
- 目录树:展示文件系统的嵌套目录组织的结构
- 根目录:包含其他所有目录的最高层目录
- 父目录:包含其他目录的目录
- 子目录:被包含的目录
- 一个目录可以包含多个子目录,一个子目录也可以有自己的子目录
- 工作目录:当前活动的子目录
- 路径名
- 路径:文件或子目录在文件系统中的位置的文本名称
- 绝对路径:从根目录开始,包括所有后继子目录的路径
- 相对路径:从当前工作目录开始的路径
- 一个路径既可以说明一个特定的文档,也可以说明整个子目录
- 磁盘调度
- 磁盘调度:决定先满足哪个磁盘I/O请求的操作
- 寻道时间:读写头到达磁盘指定柱面所花费的时间
- 等待时间:盘片旋转到正确的位置以便能读写数据所花费的时间
- 寻道时间的要求更高,是磁盘调度算法处理的重点
- 三种磁盘调度法(类比上面的三种调度方法)
- 先到先服务磁盘调度法(FCFS):就是按顺序移动读写头,虽然不是最有效,但最容易实现,不会出现饿死(早期的请求将永远得不到满足)
- 最短寻道时间优先磁盘调度法(SSTF):通过尽可能少的读写头移动满足所有未解决的请求,可能会在满足一个请求后改变读写头的移动方向,但会出现饿死
- SCAN磁盘调度法:先到一端再到另一端的方法,对新的请求没有任何特殊处理,不可能出现饿死现象
教材学习中的问题和解决过程
问题:在类比三种CPU调度法和磁盘调度法时,没有理解轮询法和SCAN磁盘调度法
解决过程:我先是再翻开教材,然后结合教材到网上搜索了一些资料,其中给出了这样的描述
轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称"程控输入输出"(Programmed I/O)。轮询法的概念是:由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。
SCAN磁盘调度法,也就是很形象的电梯调度算法。先按照一个方向(比如从外向内扫描),扫描的过程中依次访问要求服务的序列。当扫描到最里层的一个服务序列时反向扫描,这里要注意,假设最里层为0号磁道,最里面的一个要求服务的序列是5号,访问完5号之后,就反向了,不需要再往里扫。结合电梯过程更好理解,在电梯往下接人的时候,明知道最下面一层是没有人的,它是不会再往下走的。
根据这些资料,我理解了这两种方法还是有一点区别,轮询就是轮流询问,可以比作从一根管道的一头询问到另一头,而SCAN磁盘调度就是从柱面的外端(内端)到柱面的内端(外端)的方法
代码调试中的问题和解决过程
问题:在做小学四则运算编程这个项目时,在将带分数写入文件中用while循环内容写不进文件
解决过程:这个问题很烦恼我,刚开始我试着先用while循环多试几次,发现仍然写不进带分数,于是我就又创建了一个测试文件Ftoint.py来单独测试,然后我就发现了猫腻,就是得到的answers的这个列表中的元素并不是字符串类型或是整型,因为使用了fractions的模块,所以我先想办法把里面使用了fractions模块的元素转换成整型,然后再写入文件,然后测试成功了(截图就不放了,因为解决问题时没有做这个记录),然后回到运行程序的文件中修改代码,修改完后发现还是写不进文件,这是我在想,是不是那个answers列表出了问题,我把这个列表单独拿出来再看类型,发现是list类型没问题,但是怎么运行也不行,然后我回到带分数的函数模块,在模块内进行测试,发现了一个很大的问题,在这个模块里执行运行这个答案列表,发现里面虽然有元素,但是一旦运行写入命令,终端就会报错说None类型不可写入,所以我在想我应该重新创建一个存储答案的列表fractiontointlist = [],然后再次修改代码运行,发现这次居然写入成功了。所以说,只要有恒心,问题是能够迎刃而解的!
修改代码后再运行程序得到的转换带分数文件图如下
在图中可以清晰地看见,假分数被转换成了带分数,所以这个将带分数写入文件的问题就解决了
代码托管
俄罗斯方块
自动生成四则运算题目
至于为什么得分这么少,是因为我复制的是上一次的答案,这一次与上一次的题目又不一样,所以得分自然就少了(哭笑.jpg)
上周考试错题总结
1.Which level provides a view that deals with the underlying data structure used to manage the data?
哪个级别提供了处理用于管理数据的底层数据结构的视图?
A. Implementation level 实施水平
B. Logical level 逻辑层
C. Array level 阵列级
D. Linked level 链接级别
E. Application level 应用程序级别
本题应选A
2.Which level provides an abstract view of data and the operations that manipulate them?
哪个级别提供了数据的抽象视图以及操作数据的操作?
A. Implementation level 实施水平
B. Logical level 逻辑层
C. Array level 阵列级
D. Linked level 链接级别
E. Application level 应用程序级别
本题应选B
3.The properties of an abstract data type are tightly related to the implementation of that data type.
抽象数据类型的属性与该数据类型的实现密切相关。
本题错误
4.The effect of the following queue operations will be to print “HI”: Enque(myQueue,’I’), Enque(myQueue,’H’), Dequeue(myQueue,value), Write value, Dequeue(myQueue, value), Write value.
以下队列操作的效果是打印“HI”:Enque(myQueue,'I')、Enque(myQueue,'H')、Dequeue(myQueue,value)、Write value、Dequeue(myQueue,value)、Write value。
本题错误
5.Non-value-returning subprograms must always have a RETURN statement.
非值返回子程序必须始终具有RETURN语句。
本题错误
6.Parameters are the identifiers listed in parentheses beside a subprogram name.
参数是子程序名称旁边括号中列出的标识符。
本题正确
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 4/4 | 20/20 | |
第二周 | 100/150 | 2/6 | 15/35 | |
第三周 | 150/300 | 2/8 | 12/47 | |
第四周 | 1000/1300 | 5/13 | 36/83 | |
第五周 | 300/1600 | 4/17 | 30/113 | |
第六周 | 1400/3000 | 3/20 | 36/149 | |
第七周 | 1500/4500 | 4/24 | 40/189 | |
第八周 | 1200/5700 | 3/27 | 30/219 | |
第九周 | 1000/6700 | 4/31 | 36/255 |
计划学习时间:30小时
实际学习时间:36小时
参考资料
《计算机科学概论》
[《看漫画学Python》]