军事理论知识点杂烩
中国国防国防概述国防是什么?
指国家为防备和抵抗侵略,制止武装颠覆和分裂,保卫国家主权、统一、领土完整、安全和发展利益所进行的军事活动,以及与军事有关的政治、经济、外交、科技、教育等方面的活动。
基本职能捍卫国家主权与领土完整,防止外来侵略与颠覆。不同社会形态的职能侧重不同:
奴隶和封建社会:将各阶级维持在一定的“秩序”范围内。资本主义:以武装力量保护和扩大商品生产与贸易,防范传统与非传统的军事威胁。社会主义:维护国内安全与稳定,确保各民族的平等生存与发展,抵抗外来侵略,维护世界和平。
基本内容国防建设和国防斗争
地位作用国家生存与发展的安全保障抵御外来入侵和保证国家安全的有利屏障。无国防何谈主权、领土、安全和统一。
国家独立自主的前提旧中国的两半社会性质和新中国自立于世界民族之林的对比,(从正反两方面讨论,尚武精神、中国梦等)。
国家繁荣富强的重要条件生存、政权稳固和利益维护离不开国防。
国防类型按社会形态奴隶制国家国防、封建制、资本主义和社会主义~。
按历史时期古代、近代和现代。
是否处于战争状态战时和平时
按国家基本政策和战略属性扩张型:霸权主义、强权政 ...
SWAP挑战性任务
SWAP挑战性任务实现报告任务内容任务使用swap_disk挂载至MOS作为swap时存储磁盘。
PIIX4的介绍:MOS基于Malta开发板,而其所使用板载的PIIX4芯片组支持IDE等设备并有两个独立的IDE通道。一个IDE通道连一个IDE控制器,一个控制器连两个IDE设备,则MOS的PIIX4支持4块IDE设备。两个IDE控制器偏移地址为:1.主控制器块偏移:0x1F0;2.从控制器块偏移:0x170(这些都基于PIIX4的PCIIO基地址0x18000000,即实验中定义的MALTA_PCIIO_BASE)具体读写操作参考原有实现为避免与文件系统使用的主IDE控制器冲突,可在内核态使用从IDE控制器读写磁盘,用于存储交换页面。可修改Makefile文件中定义的QEMU_FLAGS变量来挂载多块磁盘。即多加一条:$(shell [ -f '$(swap_disk)' ] && echo '-drive id=swap,file=$(swap_disk),if=ide,format=raw') \。0、1号IDE磁盘由主控制器使用, ...
lab6实验报告
lab6实验报告思考题Thinking 6.1题面1示例代码中,父进程操作管道的写端,子进程操作管道的读端。如果现在想让父进程作为“读者”,代码应当如何修改?
回答只需要将父子进程中的操作流程反过来即可,也就是在子进程中关闭读端close(fildes[0]),然后进行写操作,并且在写入结束后关闭写端;再父进程中关闭写端close(fildes[1]),然后进行读操作,并且在读取结束后,关闭读端即可。
Thinking 6.2题面1上面这种不同步修改 pp_ref 而导致的进程竞争问题在 user/lib/fd.c 中的 dup 函数中也存在。请结合代码模仿上述情景,分析一下我们的 dup 函数中为什么会出现预想之外的情况?
回答dup函数代码如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152/* Overview: * Duplicate the file descriptor. * Post-Condition: * Retur ...
OO第四单元总结
OO第四单元总结第13次作业设计架构类设计MainClass主类,只提供一个主方法,主要去调用其他类提供的方法,此处独立出一个Library类来统一接收响应图书馆的各种操作,主类通过Library提供的一个run()方法完成相应的图书借阅操作。
Library图书馆,主要接收和响应各种操作,与输入输出指令进行交互。
所需属性:bookshelf、borrowReturnOffice、appointmentOffice(三个基本部件,用于承担将指令操作分摊的任务)、HashMap<String, User> users(统计所有出现过的与图书馆进行交互的学生)、HashMap<LibraryBookId, Book> books(用来方便获取查询操作中每本书的去向路径)、date(当前时间)
所需主要方法:run(主要方法)、handle4Queried(处理查询操作,在本类完成)、handle4Borrowed(处理借书操作,下放到Bookshelf类完成)、handle4Ordered(处理预约书操作,下放到AppointmentOffice类完成)、hand ...
lab5实验报告
lab5实验报告思考题Thinking 5.1题面1如果通过 kseg0 读写设备,那么对于设备的写入会缓存到 Cache 中。这是一种错误的行为,在实际编写代码的时候这么做会引发不可预知的问题。请思考:这么做这会引发什么问题?对于不同种类的设备(如我们提到的串口设备和 IDE 磁盘)的操作会有差异吗?可以从缓存的性质和缓存更新的策略来考虑。
回答
缓存只能记录CPU的读写结果,却无法在外设对数据进行修改时及时调整。当外设产生中断信号或更新数据时,此时对应的Cache中此前旧的数据很可能刚刚完成缓存,则完成缓存的这一部分并无法完成相应的更新,将发生错误的行为,总之就是与外设交互是实时性很强的行为,采用缓存到Cache中的方式将引发错误。
对于串口设备而言,读写操作频繁,接发收信号多,在相同时间内发生错误的概率远远高于IDE磁盘。
Thinking 5.2题面1查找代码中的相关定义,试回答一个磁盘块中最多能存储多少个文件控制块?一个目录下最多能有多少个文件?我们的文件系统支持的单个文件最大为多大?
回答1.代码如下:
1234567//user/include/fs.h...#defi ...
lab4实验报告
lab4实验报告思考题Thinking 4.1题面12345思考并回答下面的问题:• 内核在保存现场的时候是如何避免破坏通用寄存器的?• 系统陷入内核调用后可以直接从当时的 $a0-$a3 参数寄存器中得到用户调用 msyscall留下的信息吗?• 我们是怎么做到让 sys 开头的函数“认为”我们提供了和用户调用 msyscall 时同样的参数的?• 内核处理系统调用的过程对 Trapframe 做了哪些更改?这种修改对应的用户态的变化是什么?
回答
内核通过调用SAVE_ALL宏将非重入的下的异常的通用寄存器和其他特殊寄存器的值存储在栈空间的对应地址处。
可以,因为其本身在对应寄存器就有存储值。
通过将参数传入$a-$a3和栈空间中,使得sys开头的函数可以调用msyscall传入的相同参数。
将栈中存储的EPC寄存器值自增4,也就是跳转到下一条指令,因为在系统调用后,接下来将会下一条指令,又因为用户程序需要确保系统调用并不会出现在延迟槽中,因此直接加4即可得到下一条指令地址,作为存储返回值的v0寄存器也可能发生改变。
Thinking 4.2题面1思考 envid2env 函数: ...
OO第三单元总结
OO第三单元总结前言本单元的作业相对前两个单元来说简单,具体需要做的就是根据提供的JML撰写相应的代码,重点来了安全按照规格编写代码只能确保正确性,却不能保证性能。这也充分体现了JML这种契约式编程下,设计与实现相分离的特点,当然这里的分离并非完全分离,实现需要在保证符合设计的要求下尽可能的达到高性能的目标(毕竟没人喜欢低性能的程序吧!)。
虽说简单,但是为了表示严谨而长篇大论的JML在描述某些规格时却异常繁杂,而这也使其成为了本单元与算法设计(因为低性能的算法真的会挂点QAQ)并列唯二的重中之重。
第九次作业作业要求维护一个社交网络,并对其中用户及之间关系进行管理.用户可通过标签管理与自己存在关系的其他用户.
在阅读官方包给定的相应的JML规格后,依据规格 实现相应的Person,Network,Tag类来分别implement相应的接口,需严格满足接口给出的JML规格定义.
阅读关于异常行为的描述,结合官方包给定的异常类的javadoc,体会异常处理的流程.
同时还要在主类中调用官方包的Runner类,载入实现的类来运行程序.实际上就是将接口的JML规格实现成相应的代 ...
OS_lab3
lab3实验报告思考题Thinking 3.1题面1请结合 MOS 中的页目录自映射应用解释代码中 e->env_pgdir[PDX(UVPT)] = PADDR(e->env_pgdir) | PTE_V 的含义。
回答在MOS中,根据自映射机制,将页表和页目录映射到了用户空间中的0x7fc00000-0x80000000(UVPT-ULIM)区域,而由于自映射,所以物理内存上页目录单独占一页,其余二级页表单独占一页,但是在虚空间上某一个二级页表对应的虚拟页和页目录对应的虚拟页实际上重叠的,也就是某个二级页表虚地址同页目录虚地址重合,那么这两者对应的物理页框也应该重合,而页目录的每一个页表项存储的是相应二级页表所在页的基地址,因此在页目录中应该有一个页表项存储的是到页目录这一页本身的物理页框号,也即”自映射页表”。因此,由于按需分配元组,在初始化对应页目录时需要设置映射到页目录自身的页表项,而其在页目录中的索引应该与虚空间上页目录按4KB大小在所有二级页表中的索引以及第一个二级页表按4MB大小在虚空间上的索引,也就是PDX(UVPT),PDX()的作用是取一个32位二进制 ...
OS_lab2
lab2实验报告思考题Thinking 2.1题面1请根据上述说明,回答问题:在编写的 C 程序中,指针变量中存储的地址被视为虚拟地址,还是物理地址?MIPS 汇编程序中 lw 和 sw 指令使用的地址被视为虚拟地址,还是物理地址?
回答答:C程序中指针变量中存储的地址被视为虚拟地址。MIPS汇编程序中lw和sw指令使用的地址被视为虚拟地址。
Thinking 2.2题面123请思考下述两个问题:• 从可重用性的角度,阐述用宏来实现链表的好处。• 查看实验环境中的 /usr/include/sys/queue.h,了解其中单向链表与循环链表的实现,比较它们与本实验中使用的双向链表,分析三者在插入与删除操作上的性能差异。
回答
采用宏定义对链表相关操作进行封装,使得相关操作可复用,减少了每次使用重新再书写的工作量,同时还减小了复杂度,使代码可读性更好,便于维护。
先查看/usr/include/sys/queue.h中单向链表和循环链表的实现:三者在插入与删除操作上有一定的性能差别:1). 对于单向链表,由于所有节点都只维护了一个指向下一个节点的指针,因此在删除时需要遍历链表找到删除节点 ...
OO第二单元总结
OO第二单元总结第五次作业题面先解释若干概念:
目的选层电梯系统:
1.进入电梯前,乘客输入目标楼层(?没进电梯选楼层);
2.电梯系统根据策略指定电梯服务,并告知结果;
3.乘客进入电梯后,无需再按楼层,电梯自动送其至相应楼层。
优先级指数:表示不同类型乘客到达目的楼层急迫程度。
请求调度器:解析读入请求信息后,根据此时电梯运行状态将乘客请求合理分配给某部电梯的调度器,可以理解成指挥电梯运作的大脑。
此外,被分配请求的电梯将经过上下行、开关门、乘客进出电梯等动作,将乘客从起点运送至终点,注意每到一层都需要打印到达的相应楼层的信息。
单部电梯运行策略与电梯系统的调度策略可任意指定,即任意时刻,电梯的操作都可自定义,只要保证在电梯系统运行时间不超过要求时间上限且将所有乘客送至目的地。
一些约束
电梯楼层为B4-B1,F1-F7,11层,初始在F1层;6部电梯,id为1-6;0.4s/层(需要体现在时间戳上,也就是当前一层Arrive后到下一层Arrive之间需要手动间隔0.4s,也就是让电梯线程sleep(400));限载6人;开关门间隔大于等于0.4s。
一些电 ...