2021-2022-1 20211409 《信息安全专业导论》第9周学习总结
作业信息
作业信息2020-2021-1信息安全专业导论 https://edu.cnblogs.com/campus/besti/2021-2022-1fois
2020-2021-1信息安全专业导论第九周作业 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09
这个作业的目标
- 学习目标
- 操作系统责任
内存与进程管理
分时系统
CPU调度
文件、文件系统
文件保护
磁盘调度
- 操作系统责任
- 学习任务
- 计算机科学概论第10,11章,并完成云班课测试
《看漫画学Python》第12,16章并完成云班课测试
- 计算机科学概论第10,11章,并完成云班课测试
本博客链接:https://www.cnblogs.com/czsf/p/15558207.html
熟悉编程语言
小学四则运算编程实践
俄罗斯方块游戏
期中调查-如何学好编程
教材学习内容总结
教材:
操作系统
- 操作系统的角色
- 应用软件:解决问题的程序
系统软件:管理计算机系统并与硬件进行交互的程序
计算机的操作系统:管理计算机资源并为系统交互提供界面的系统软件,是系统软件的核心。提供了直接的人机交互界面。- 一台计算机通常只有一个活动的操作系统,负责控制工作。但可具备两个或更多个操作系统。
引导:指指令从二级存储器载入大部分系统软件,最终将载入系统软件的所有关键元素执行启动程序,提供用户界面的过程。 - 个人计算机常用的操作系统是Microsoft Windows
Apple Computer公司制造的计算机采用的操作系统是Mac OS
严格的程序员喜欢的操作系统是Linux
- 一台计算机通常只有一个活动的操作系统,负责控制工作。但可具备两个或更多个操作系统。
- 内存、进程与CPU管理
- 多道程序设计:同时在主存中驻留多个程序,由它们竞争CPU的技术(所有现代操作系统都采用的是多道程序设计技术)
内存管理:了解主存中载有多少个程序以及它们的位置的动作
进程:程序执行过程中的动态表示法(区别:程序是一套静态指令,进程是动态的实体,表示正在执行的程序)
进程管理:了解活动进程的信息的动作
CPU调动:确定主存中的哪个进程可以访问CPU以便执行的动作
- 多道程序设计:同时在主存中驻留多个程序,由它们竞争CPU的技术(所有现代操作系统都采用的是多道程序设计技术)
- 批处理:早期只有操作员可与计算机交互时,为有效执行程序采用的方法。
- 作业:在交付程序时,用户需要为执行程序所需的系统软件或其他资源提供一套单独的指令。程序和系统指令集合在一起。
- 分时:系统允许多个用户与计算机交互,每个用户都有自己的虚拟机,资源为用户共享。
- 分时系统的最初由一台主机和一组连接到主机的哑终端构成
主机:一个大型的多用户计算机
哑终端:访问主机的一套显示器和键盘。
(每个用户由主机上运行的一个登陆进程表示)
- 分时系统的最初由一台主机和一组连接到主机的哑终端构成
- 其它OS要素(微型机第一次采用单个集成芯片作为CPU,出现可放在书桌上的计算机)
- 计算机通常要连接到网络
要负责与各种各样的设备通信
需要支持实时系统- 实时系统:应用程序的特性决定了响应时间的系统,必须给用户提供最少反应时间(收到信号和生成响应之间的延迟时间)
- 计算机通常要连接到网络
- 应用软件:解决问题的程序
- 内存管理
- 逻辑地址:一个指定了一个普通地址的值,是对一个存储值的引用,是相对于程序的
物理地址:主存储设备中的真实地址,是相对于主存的 - 单块内存管理(把应用程序载入一段连续的内存区域的内存管理方法)
- 逻辑地址是一个相对于程序起始位置的整数值,物理地址是逻辑地址加上程序在物理主存中的起始地址。
例:若内存起始地址是1111,相对地址是2222,则物理地址是3333 - 优点:实现和管理简单
缺点:浪费了内存空间和CPU时间
- 逻辑地址是一个相对于程序起始位置的整数值,物理地址是逻辑地址加上程序在物理主存中的起始地址。
- 分区内存管理
- 两种划分方法
- 固定分区法:把内存分为特定数目的分区以载入程序
适合采用最先匹配和最佳匹配的分区选择法
(该方法容易管理,但限制了进来程序的机会) - 动态分区法:根据容纳程序的需要对内存分区
最有用的为最差匹配的分区选择法
存在压缩(作业可以在内存中移动,创建较大的空白分区)
(在该方法中,地址信息会随着程序的载入和清除而改变) - 两种方法的地址联编基本一样,与单块内存管理相同
- 固定分区法:把内存分为特定数目的分区以载入程序
- 两种划分方法
- 页式内存管理
- 页式内存管理法:把进程划分为大小固定的页,载入内存存储在帧中
帧:大小固定的主存,用于存放进程页
页:大小固定的进程
页映射表:用于记录页和帧关系的表
页和帧都是从0开始编号以简化地址计算 - 逻辑地址表示为:<页编号,偏移量>
物理地址为:帧编号 * 帧大小 + 偏移量 - 分页优点在于不必把进程存储在连续内存空间中
- 页式内存管理法:把进程划分为大小固定的页,载入内存存储在帧中
- 逻辑地址:一个指定了一个普通地址的值,是对一个存储值的引用,是相对于程序的
- 进程管理
- 进程状态
- 进入系统(创建阶段):创建一个新进程
准备执行(准备就绪状态):进程无执行障碍,等待使用CPU的机会
执行(运行状态):CPU执行
等待资源(等待状态):等待资源
执行结束(终止状态):执行完成,不再是活动进程
(可同时有多个进程处于准备就绪状态或等待状态,但只能有一个处于运行状态) - 在运行中,若进程被中断,则返回准备就绪状态;若请求未准备好的资源或请求I/O读取新引用的进程,则转移至等待状态,得到资源后转移到准备就绪状态
- 进入系统(创建阶段):创建一个新进程
- 进程控制块(PCB):
- 包含的信息:
存储了有关进程的各种信息
存储进程在其它CPU寄存器中的值
维护关于CPU调动的信息
内存管理信息
核算信息
目前为止使用CPU的时间
- 包含的信息:
- 进程状态
- CPU调度
- 非抢先调度(当执行程序放弃CPU时(从运行转化状态为等待状态)发生的CPU调度)
抢先调度(当操作系统照顾一个进程而抢占当前执行进程的CPU资源时发生的CPU调度) - 先到先服务(FCFS):进程按照到达运行状态的顺序转移到CPU中
- 是非抢先调度
优点:容易实现
缺点:因忽视重要因素而变得复杂
- 是非抢先调度
- 最短作业优先(SJN):查看所有处于准备状态的进程,并分派服务时间最短的
- 是非抢先调度,基于未来的
优点:当知道每个进程时间时,可证明是最佳的
缺点: 未来无法明了,估算错误时,算法前提会崩溃,性能将恶化
- 是非抢先调度,基于未来的
- 轮询法:把时间平均分给处于准备就绪状态的进程
- 算法是抢先调度
优点:应用最广泛,一般支持所有作业,是最公平的算法
缺点:对于某些进程而言较复杂
- 算法是抢先调度
- 算法周期:进程从准备就绪阶段到执行完成间的时间间隔,用于评估CPU调度
- 非抢先调度(当执行程序放弃CPU时(从运行转化状态为等待状态)发生的CPU调度)
文件系统和目录
-
文件系统
-
文件:数据的有名集合
文件系统:操作系统为其管理的文件提供的逻辑视图
目录:文件的有名分组 -
文本文件和二进制文件
- 文本文件:包含字符的文件
- 使用字符表示法
- 可用文本编辑器创建,查看与修改
- 二进制文件:包含特定格式的数据的文件,要求给位串一个特定的解释(计算机中数据存储最终的方式)
- 通过定义特定的二进制格式或解释来表示数据
- 需使用专门的程序才可阅读和修改
- 文本文件:包含字符的文件
-
文件类型(文件中存放的关于类型的信息)
- 文件扩展名:文件名中说明文件类型的部分(改变文件拓展名不会改变文件中的数据和内部格式)
-
文件操作
- 创建
删除
打开
关闭
读取数据
写入数据
定位文件指针
附加数据至结尾
删减
重命名
复制
- 创建
-
文件访问
- 顺序文件访问
- 一种线性结构,按顺序处理文件中的数据
- 直接文件访问
- 将文件分为带数据的逻辑记录,并将文件指针设置为所需记录。
在数据较多时较有用
- 将文件分为带数据的逻辑记录,并将文件指针设置为所需记录。
- 顺序文件访问
-
文件保护
- 再多用户系统中,文件保护重要性居于首位
- UNIX操作系统中,文件保护设有三类:Owner、Group、World,其中Owner通常有文件的最高访问许可
-
-
目录(大多数操作系统用文件表示目录)
- 目录树:展示文件系统的嵌套目录组织的结构,一个分级结构
- 父目录:包含其他目录的目录
子目录:被包含的目录
工作目录:当前活动的子目录
根目录:包含所有目录的最高层目录 - Microsoft Windows中根目录可用‘C:’加‘\’表示
UNIX中根目录是用‘/’表示的
- 父目录:包含其他目录的目录
- 路径名
- 绝对路径:从根目录开始,包括所有子目录的路径
- Microsoft Windows中如:C:\Windows\System\QuickTime
UNIX中如:/bin/tar
- Microsoft Windows中如:C:\Windows\System\QuickTime
- 相对路径:从当前目录开始的路径
- Microsoft Windows中如:System\QuickTime
UNIX中如:..\tar
- Microsoft Windows中如:System\QuickTime
- 绝对路径:从根目录开始,包括所有子目录的路径
- 目录树:展示文件系统的嵌套目录组织的结构,一个分级结构
-
磁盘调度
-
寻道时间:读写头到达指定柱面所花费的时间
-
先到先服务磁盘调度法
- 类似于FCFS,按顺序处理,最容易实现,但不是最有效的算法
-
最短寻道时间优先磁盘调度法
- 通过最少的读写头移动满足请求,会出现饿死情况(因有新请求的到来使早期请求无法被满足)
不能保证读写头的整体移动最少
- 通过最少的读写头移动满足请求,会出现饿死情况(因有新请求的到来使早期请求无法被满足)
-
SCAN磁盘调度法
- 读写头在轴心和盘片边缘来回移动
通过最小化轴心和盘片边缘的移动极限和使读写头在到达一端后返回另一端时不处理请求,来提高性能
- 读写头在轴心和盘片边缘来回移动
Python:
- 文件读写
- 打开文件:open(file,mode,encoding,errors)
或with open(file) as sth:- file:要打开的文件,可以是字符串或整数
- mode:
- t:以文本文件模式打开文件
b:以二进制文件模式打开文件
r或rt:以只读模式打开文件
w或wt:以只写模式打开文件
x:以独占创建模式打开文件(文件存在时会报错)
a或at:以追加模式打开文件
+:以更新模式打开文件,需与r、w或a组合使用
rb:二进制文件模式,类似于rt
wb:二进制文件模式,类似于wt
xb:二进制文件模式,类似于xt
ab:二进制文件模式,类似于at
r+:以读写模式打开文件,文件不存在会报错
w+:以读写模式打开文件,文件不存在则创建文件
a+:以读追加文本文件模式打开文件,文件不存在则创建文件
rb+:二进制文件模式,类似于r+
wb+:二进制文件模式,类似于w+
ab+:二进制文件模式,类似于a+
- t:以文本文件模式打开文件
- encoding
用于打开文本文件,默认为UTF-8 - errors
推荐取值为ignore,在编码错误时继续执行,不退出
- 关闭文件:file.close()
- 读写文件:
read(size=-1):从文件中读取字符串,size限制读取的字符数size=-1指对读取的字符数没有限制。
readline(size=-1):在读取到换行符或文件尾时返回单行字符串。如果已经到文件尾,则返回一个空字符串。size是限制读取的字符数size=-1表示没有限制。
readlines():读取文件数据到个字符串列表中,每一行数据都是列表的一个元素。
write(s):将字符串s写入文件中,并返回写入的字符数。
writelines(lines):向文件中写入一个字符串列表。不添加行分隔符,因此通常为每一行末尾都提供行分隔符
flush():刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中 - 读写二进制文件:
read(size=-1):从文件中读取字节,size限制读取的字节数,如果size=-1,则读取全部字节。
readline(size=-1):从文件中读取并返回一行。size是限制读取的行数,如果size=-1,则没有限制。
readlines():读取文件数据到个字节列表中,每一行数据都是列表的一个元素。
write(b):写入b字节,并返回写入的字节数。
writelines(lines):向文件中写入一个字节列表。不添加行分隔符,因此通常为每一行未尾都提供行分隔符。
flush():刷新写缓冲区,在文件没有关闭的情下将数据写入文件中
- 打开文件:open(file,mode,encoding,errors)
- 多线程
- 线程模块————threading:
active count():返回当前处于活动状态的线程个数。
current thread():返回当前的Thread对象。
main thread():返回主线程对象。 - 子线程构建方法:
Thread(target=None, name=None, args=0)
target参数指向线程体函数,我们可以自定义该线程体函数
name参数可以设置线程名,如果省略这个参数,则系统会为其分配一个名称
args是为线程体函数提供的参数,是个元组类型- 用函数实现:
- 用类实现:
- 用函数实现:
- 线程管理:
等待线程结束:
join(timeout=None)
参数timeout用于设置超时时间,单位是秒。如果没有设置timeout,则可以一直等待,直到结束。
- 线程模块————threading:
教材学习中的问题和解决过程
1.阅读教材时有些概念不清楚
解决:上网搜索得以解决。
- Gantt图:
甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。其通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。以提出者亨利·劳伦斯·甘特(Henry Laurence Gantt)先生的名字命名。
优点
1、图形化概要,通用技术,易于理解。
2、中小型项目一般不超过30项活动。
3、有专业软件支持,无须担心复杂计算和分析。
局限
1、甘特图事实上仅仅部分地反映了项目管理的三重约束(时间、成本和范围),因为它主要关注进程管理(时间)。
2、软件的不足:尽管能够通过项目管理软件描绘出项目活动的内在关系,但是如果关系过多,纷繁芜杂的线图必将增加甘特图的阅读难度。
2.在学习教程《看漫画学Python》时对sleep(n)函数不太理解。
解决:经过多次试验,并上网搜索,了解是每隔n秒执行一次程序。
代码调试中的问题和解决过程
1.学习16.4内容时,在编写程序时将‘=’误打成两个等号,导致程序运行时线程不能通过控制线程结束。
解决:通过检查发现问题,以后应当注意:‘=’用于赋值,‘==’用于比较,不能混用。
2.学习13.7.3内容时,在编写程序时两个‘def’的缩进出现问题,导致程序运行结果与教材不同。
解决:通过检查发现问题,以后要注意:在python中一定要注重缩进问题,两个‘def’对齐时表示定义了两个函数,若缩进不同则可能只定义了一个函数。
代码托管
https://gitee.com/zhao-shu-bo/czsf/blob/master/12
https://gitee.com/zhao-shu-bo/czsf/blob/master/16
上周考试错题总结
无
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | 了解Linux |
第二周 | 50/250 | 2/4 | 5/25 | 了解python |
第三周 | 200/450 | 1/5 | 20/45 | 开始学习python语言 |
第四周 | 250/700 | 4/9 | 20/65 | 学会运用代码托管 |
第五周 | 160/860 | 1/10 | 10/75 | 学习python程序流程控制 |
第六周 | 216/1076 | 1/11 | 10/83 | 学习使用机器语言与汇编语言 |
第七周 | 323/1399 | 3/14 | 10/93 | 开始学会根据伪代码自己编辑代码 |
第八周 | 411/1810 | 2/16 | 15/108 | 学习python中的类与对象 |
第九周 | 560/2370 | 3/19 | 15/123 | 开始个人项目的编写 |