2021-2022-1 20211413 《信息安全专业导论》第九周学习总结

作业信息

班级:https://edu.cnblogs.com/campus/besti/2021-2022-1fois
作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09

教材学习内容总结

操作系统(operating system)

现代软件可以分为俩类,即应用软件和系统软件。应用软件(application software)主要为了解决现实世界的问题而编写的,系统软件(system software)管理计算机系统并与硬件进行交互,为创建和运行应用软件提供了工具和环境。
计算机操作系统作为系统软件的核心,管理着计算机资源并为系统交互提供界面,计算机可以具备多个操作系统,但任何时候只能有一个操作系统在控制计算机
现代操作系统都采用多道程序设计(multiprogramming)技术,即在主存中同时停留多个程序,这些程序会竞争CPU的访问,因此需要进行内存管理(memory management)
进程(process)是操作系统的一个关键概念,它可以理解为正在执行的程序
。在系统中可能同时具有多个进程,为确保每一个进程的运行,操作系统还需要进行进程管理(process management)
内存管理和进程管理都需要CPU调度(CPU scheduling)

内存管理
逻辑地址(logical address):对存储值的引用
物理地址(physical address):存储设备的真实地址
逻辑地址与物理地址之间的映射叫做地址联编(address binding)
· 单块内存管理(single contiguous management)
将整个程序载入到一大块内存中,一次只能处理一个程序
优点:易于实现和管理
缺点:浪费时间和内存空间
· 分区内存管理
通过固定分区法(fixed-partition technique)或动态分区法(dynamic-partition technique)将内存划分为多组
· 页式内存管理法(paged memory management)
主存划分为固定大小的内存块,称为帧(frame),进程被划分为页(page),操作系统为每个进程建立一个独立的页映射表(page map table,PMT)将每个进程映射到某一特定帧
进程管理
· 进程状态(process state)
主要有创建、准备、运行、终止四个状态
· 进程控制块(process control block,PCB)
操作系统管理进程信息使用的数据结构
CPU调度
· 非抢先调度(nonpreemptive scheduling)
发生在一个进程从运行状态切换到等待或者终止时
· 抢先调度(preemptive scheduling)
发生在一个进程从运行到准备或者从等待到准备时
· 先到先服务(FCFS):按到运行状态的顺序转移到CPU
· 最短作业优先(SJN):查看所有处于准备状态的进程,从中挑选一个最短服务时间的进程转移到CPU

文件系统(file system)和目录(directory)

文件可分为文本文件(text file)和二进制文件(binary file)。文本文件中数据字节为ASCII或者Unicode的字符;二进制文件包含特定格式的数据文件,需要给字位串一个特定的解释。
目录是文件的有名集合,按照一定的逻辑方式对文件分组的做法
文件访问
· 顺序文件访问(sequential file access):将文件看作一种线性结构,按顺序处理文件中的数据
· 直接文件访问(direct file access):文件被划为带编号的记录,直接访问指定记录编号,可以按照任何顺序读写记录
文件保护
文件保护机制决定谁可以使用文件

目录树
文件系统通常被看作目录树(directory tree),最高层的目录叫根目录(root directory)
路径
· 绝对路径(absolute path):从根目录开始,包括所有后继子目录的路径
· 相对路径(relative path):从当前工作目录开始的路径

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

问题:在学习python GUI的时候wxpython一直安装失败
解决:仔细看了下载的压缩包后发现和我用的python版本不兼容,于是又去下了个3.8版本的python,再修改系统的环境变量将默认版本改为3.8的。做完后下了对应版本的wxpython后成功了

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

问题:在写线性表的时候,下面这段代码不知道为啥报错了
在这里插入图片描述
解决:在看别人写的线性表的代码的时候发现他们在类里面都会定义“__ getitem __ ”的方法。再进一步查询资料了解到:如果在类中定义了__getitem__()方法,那么他的实例对象(假设为P)就可以这样P[key]取值
问题:在写单向循环链表时,调用打印链表时陷入死循环(如图)
解决:调试了一遍后发现是写的Add()函数有问题。Add()用来在链表头部位置添加元素,我只考虑到了在头部的操作,却忽视了尾部也要指向头部,于是在调用了Add()函数后链表就不再是单循环链表了,打印链表的结束条件也不会触发

单链表码云链接

posted @ 2021-11-15 18:29  蒻蒟  阅读(58)  评论(0编辑  收藏  举报