进程管理And线程实现
进程的描述进程的定义一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程.
进程的组成包括 :
程序的代码
程序处理的数据
程序计数器中的值, 指示下一条将运行的指令
一组通用的寄存器的当前值, 堆, 栈
一组系统资源(如打开的文件)
程序和进程的联系:
程序是产生进程的基础
程序的每次运行构成不同的进程
进程是程序功能的体现
通过多次执行, 一个程序可以对应多个进程, 通过调用关系, 一个进程可包括多个程序.
进程和程序的区别
进程是动态的, 程序是静态的 : 程序是有序代码的集合. 进程是程序的执行, 进程有核心态 / 用户态.
进程是暂时的, 程序是永久的. 进程是一个状态变化的过程, 程序可以长久保存.
进程和程序的组成不同 : 进程的组成包括程序, 数据和进程控制块(进程状态信息)
进程的特点动态性 : 可动态地创建, 结果进程;并发性 : 进程可以被独立调度并占用处理机运行; (并发:一段, 并行:一时刻)独立性 : 不同进程的工作不相互影响;(页表是保障措施之一)制约性 : 因访问共享数据, 资源或进程间同步而产生制约.
**问题 ** ...
页面置换算法
该算法的功能与目标功能:当缺页中断发生, 需要调入新的页面而内存已满时, 选择内存当中哪个物理页面被置换.
目标:尽可能地减少页面地换进换出地次数(即缺页中断地次数)。具体地来说,把未来不再使用的或短期内较少使用的页面换出, 通常只能在局部性原理指导下依据过去的统计数据来进行预测.
局部页面置换算法最优页面置换算法基本思路 : 当一个缺页中断发生时, 对于保存在内存当中的每一个逻辑页面, 计算在它的下一次访问之前, 还需等待多长时间, 从中选择等待时间最长的那个, 作为被置换的页面.这是一种理想情况, 在实际系统中是无法实现的, 因为操作系统无法知道每一个页面要等待多长时间以后才会再次被访问.
先进先出算法基本思路 :选择在内存中驻留时间最长的页面淘汰. 具体来说, 系统维护着一个链表, 记录了所有位于内存当中的逻辑页面. 从链表的排列顺序来看, 链首页面的驻留时间最长, 链尾页面的驻留时间最短. 当发生一个缺页中断时, 把链首页面淘汰出去, 并把新的页面添加到链表的末尾.性能较差, 调出的页面有可能是经常要访问的页面. 并且有 belady现象. FIFO算法很少单独使用.
举例:
...
虚拟内存管理技术
虚拟内存的起因及其目标background:
使用硬盘/磁盘使更多的程序在有限的内存中运行比如: 游戏的内存大小 让我们必须拥有更大内存的电脑理想的存储器 : 更大更快更便宜和非易失性的存储区
交换技术 & 覆盖技术如果是程序太多, 超过了内存的容量, 可以采用自动的交换(swapping)技术, 把暂时不能执行的程序送到外存(硬盘)中目的 : 多道程序在内存时, 让正在运行的程序或需要运行的程序获得更多的内存资源原理 :可将暂时不能运行的程序送到外存, 从而获得空闲内存空间. 操作系统把一个进程的整个地址空间的内容保存到外存中(换出 swap out), 而将外存中的某个进程的地址空间读入到内存中(换入 swap in). 换入换出内容的大小为整个程序的地址空间.缺点:交换的程序如果内存很大, 那么开销就非常大
如果是程序太大, 超出了内存的容量, 可以采用手动的概率(overlay)技术, 只把需要的指令和数据保存在内存当中目的 : 是在较小的可用内存中运行较大的程序, 常用于多道程序系统, 与分区存储管理配合使用.原理 :把程序按照其自身逻辑结构, 划分 ...
体系结构及内存分配
分层结构
内存
cpu
外设
操作系统最核心的部分就是放在内核中
时钟管理
中断处理
原语 : 处于操作系统最底层, 与硬件直接接触
进程管理、存储器管理等
操作系统内核需要运行在内核态非内核功能运行在用户态
大内核大内核的体系结构:
**所有的内核部分都是运行在内核态。 **
优缺点:
优点:
**高性能 **
缺点:
内核庞大, 结构混乱, 难以维持。
微内核微内核的体系结果
对比大内核, 他只将这些作为内核部分运行在内核态
优缺点:
优点:
内核功能少, 结构清晰, 方便维持。
缺点:
需要频繁的在用户态 和 内核态之间切换 ,性能低。
地址空间 & 地址生成
就上图而言, p1, p2 ,p3 ,p4 这四个进程在执行相对应的应用程序, 假设p1 先执行, p4 最后执行,那么我们就可以暂时将p4所需要的资源放到 磁盘中, 暂缓放到内存中 。而将真正需要内存的p1所需要的资源放到 内存中。
内存管理目标
抽象:逻辑地址空间
保护:独立地址空间
共享:访问相同内存
虚拟:更多的地址空间
内存管理方法
程序重定位
分段
分页
虚拟内存
按 ...
中断异常和系统调用
思维导图
中断的作用CPU上会有两种程序
操作系统内核程序
应用程序
中断是让操作系统内核夺回CPU使用权的唯一途径
内核态 —-> 用户态: 执行一条特权指令,—修改PSW的标志位为”用户态“, 这个动作意味着操作系统主动让出CPU使用权
用户态 —-> 内核态: 由中断引发, 硬件自动完成变态的过程 ,触发中断信号意味着操作系统将强行夺回CPU的使用权。
中断的类型
内中断(异常)与当前执行的指令有关, 中断信号来源于CPU内部
陷阱、 陷入(trap )
由陷入指令引发的, 是应用程序故意引起的
故障 ( fault )
由错误条件引起的 , 可能被内核程序修改 ,内核程序修复后会把cpu的使用权交给应用程序, 让他继续执行。
终止 ( abort )
由致命错误引起的 , 内核程序无法修复的错误。 所以内核就不会将cpu使用权交给应用程序 。
如: 非法的使用特权指令。
外中断与当前执行的指令无关, 中断信号来源于CPU外部
中断机制的基本原理不同的中断信号 ,需要用不同的中断处理程序来处理, 当cpu检测到中断信号后, 会根据中断信号的 ...
操作系统的概念、功能、目标
章节知识点大纲:
概念操作系统(OS):
是指控制和管理整个计算机系统的硬件 和 软件 资源, 并合理地组织调动计算机地工作和资源地分配;
是以给提供给用户和其他软件方便地接口和环境;
他是计算机系统中最基本地系统软件
目标、功能 : 系统资源的管理者功能一: 处理器管理功能二: 存储器管理功能三: 文件管理功能四: 设备管理目标: 安全 、 高效封装思想, 将一些复杂的功能封装称为一个简单的接口, 用户直接调用这些接口即可。
给用户使用的三种命令接口
联机命令接口 = 交互式命令接口 (win + R )的那个 : 用户说一个系统做一个
脱机命令接口 = 批处理命令接口 ( *.bat 随便打开一个就知道了) : 用户说一推 ,系统再执行
GUI: 图形化用户接口
给程序员使用的命令接口
系统调用(也叫广义指令): 也就是程序员 通过高级语言编写程序 来进行系统调用
操作系统对硬件的拓展:将cpu、内存、磁盘、显示器、鼠标等硬件合理的组合起来, 让各个硬件能够相互协调配合, 实现更多更复杂的功能
案例 : 用QQ 和朋友使用聊天
找到QQ的 ...
Life
5f538b26333a1f81f159279ed04be95735e3cf31352d15741fe15ab4b9fa75255fca65ee3fdca774ae65f2665aa5b0c8745211030b9289ef6b3f96f9881915276b3616193c598e00ae5aa6b2f0fa8788d96f941811ae6807cf8eb1b278a9d3a1969543b768ab1d44f3c14b74b019e558defc7c0eb4577e7977e6435fbf28b633ca79770db4bf58f507ba4aacf71e96120ba07c01b1bcd7eff0862f4ac1752da4a426b7fa672959cb9e51e8c6ed75deebaa06cac932b2287c9842ff6f627af95c0391bfccce61d343e0841a70bfd79817c3a2301926e7c2d58c3de524a735154fdd90df0683bdc91195b03a7b2b20adb31799d275f31a04a99 ...
实习总结
5f538b26333a1f81f159279ed04be95717b688a829c5c99572178b930f6d5472c8276222c14ed33713d5ec11a446d17ba52975b45b674b7371e3ab194fe8f98bca8f66b0f359da9ab154c0a42a513fad0d76e9d9b0c1619471f7637145c45fdf927e2fe0a88b2764293c5dac41c7b7a05df33dfb62cbf9fb38bb1b8401209405d7645242ebbdc6b94258cc4d6034c491f7cd7f0db3fb0e9b9be902769296c074a5f230a357287ff88e657797278aa5aea7d7af787cfe4989ccd6cb32053d351b0f6da731db4c924b3342ab87c6f97b42b4ec534fc7986f9acc9df8455f0dd1d6fe21bcbf16458d8d31780567379f85f53a7cc5636eaff8698 ...
排序实现
重新回顾实现十大排序算法
什么是排序, 就是元素按照关键字进行递减或者递增的顺序排列
**排序的稳定性: **
1排序算法的稳定性是根据相同数值的元素之间的相对位置进行判断。
**内排序 and 外排序: **
所谓的内排序就是排序时不涉及数据的内、外存交换, 则成为内排序 ,反之涉及的话就是外排序。
内排序适合元素个数不是很多的小表, 外排序适合多个表的数据进行排序。
内排序是外排序的基础。
排序算法的性能 :排序算法的性能是根据时间 and 空间确定的
时间则是由元素比较和 移动的次数确定的
空间就是元素是否占用额外的存储空间
main函数1234567891011int main(){ int nums[] = {12,21,11,0,8,53}; int size = sizeof(nums)/ sizeof(int);// SelectSort(nums, size);// mopoSort(nums, size);// insertSort(nums,size); quic ...
接口测试
==接口测试测试维度==
概要12接口的概念: 接口就是系统或者组件之间的交互点, 通过这些交互点可实现数据的交互
分类:
按照协议划分 : http 、tcp、 ip
按照语言进行划分: Java、 go、 c++…
按照范围划分
123系统之间的接口: 多个内部系统之间的交互, 内部系统和外部系统之间的交互程序内部的接口: 方法与方法之间, 模块与模块之间的交互
接口测试是对系统或组件之间的接口进行测试,主要是校验数据是否正确、传递和控制管理过程,以及相互逻辑依赖关系
接口测试的原理
123模拟客户端向服务器发送请求 ,服务器接受请求之后进行相应的业务处理。 并向客户端返回响应数据,检查响应数据是否符合预期。-----主要针对的测试目标: 服务器
**接口测试的特点: **
测试可以提前介入, 提早发现bug。 符合质量控制前移的理念
可以发现一些页面操作发现不了的问题
接口测试低成本高效益(可以实现自动化测试)
不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检查
**接口测试的实现方式: ** ...