操作系统复习
- 熟练掌握操作系统的定义,操作系统的特征,操作系统的功能
- 熟练掌握多道程序设计的概念,单道程序设计和多道程序设计的区别,多道程序设计的优点
- 熟悉操作系统接口的主要功能,系统调用的基本概念、类型、实现。
操作系统接口的主要功能:为应用程序或者用户提供访问操作系统内核的接口,使应用程序或者用户可以访问操作系统提供的各种服务和资源。比如进程管理、文件管理、进程通信等
系统调用的基本概念:计算机的各种硬件资源是有限的,为了更好的管理这些资源,用户进程是不允许直接操作的,所有对这些资源的访问都必须由操作系统控制。为此操作系统为用户态运行的进程与硬件设备之间进行交互提供了一组接口,这组接口就是所谓的系统调用。
系统调用实质上就是函数调用,只不过调用的是系统函数,处于内核态而已。 用户在调用系统调用时会向内核传递一个系统调用号,然后系统调用处理程序通过此号从系统调用表中找到相应的内核函数执行,最后返回。
系统调用的类型:
- 、进程管理:包括进程的创建、撤销以及状态转换等
- 、存储管理:内存分配与回收、地址映射、存储保护、存储保护、存储共享以及存储扩充
- 、文件管理:包括创建文件、删除文件等操作
- 、设备管理:完成用户的I/O请求操作;提高传输数据的速度,提高设备的使用率;操作系统提供的设备驱动程序以及中断处理程序,为用户隐蔽细节操作,提供简单的设备使用方法
- 、进程通信:包括建立和断开通信连接、接受和发送消息等
- 、信息维护:获取、设置日期和时间等
系统调用的实现:
- 、一是编写系统调用服务例程
- 、二是设计系统调用入口地址,每一个入口地址都指向一个系统调用的服务例程,有些还包含系统调用自带参数的个数
- 、三是陷阱处理机制,需要开辟现场保护区,以保存发生系统调用时应用程序的处理器现场
- 了解操作系统的性能指标,操作系统的类型,操作系统接口的概念及实现。(系统调用只是一种 API ,所以系统调用就是接口)
操作系统接口:为应用程序或者用户提供了一组函数或者命令,用于访问操作系统提供的各种服务和资源
操作系统接口的实现:操作系统接口的实现是通过系统调用来实现的,操作系统提供了一系列系统调用,应用程序可以通过系统调用来访问操作系统提供的各种服务和资源,例如文件管理、进程管理等
- 熟练掌握中央处理器,中断技术。
- 熟练掌握进程的概念,进程的状态和转换,以及进程和程序的区别。
- 熟练掌握处理器调度算法及处理器调度层次。
- 熟练掌握存储体系结构,主存储器的物理组织,主存储器的管理功能以及分区管理。
储存体系结构是指计算机系统中用于存储数据的硬件和软件组成的系统。其主要功能是提供数据的长期存储和快速访问,以及保护数据的安全性和完整性。储存体系结构通常包括主存储器、辅助存储器、输入输出设备等组成部分。
主存储器的物理组织通常是由一组芯片组成的,每个芯片包含一定数量的存储单元,每个存储单元可以存储一个二进制数值。主存储器的管理功能包括内存分配、内存回收、内存保护等。分区管理是指将主存储器划分为若干个区域,每个区域可以独立地进行内存管理。
- 了解可变分区管理内存的分配与回收。
可变分区存储管理又叫做动态分区模式,按照作业的大小来划分分区,但是划分的时间、大小、位置都是动态的。系统把作业装入内存的时,根据其所需要的内存容量查看是否有足够的空间,若有,则按需分割一个分区分配给此作业;若没有则令此作业等待资源。由于分区大小是按照作业的实际要求进行划分的,且分区数目也是可变的,所以可变分区能够克服固定分区资源浪费的问题,有利于多道程序上设计,提高内存资源利用率
- 熟练掌握页式管理以及段页式管理方式。
2.1页式管理
高级语言中使用逻辑地址,运行状态内存中使用物理地址
物理地址=块号+页内地址(内存中存放的是块号,所以可以通过内存的大小求块号的位数)
逻辑地址=页号+页内地址(由每页的大小,也即页面大小求页内地址的位数,由用户编程空间总共的页面数量可以求页号位数)
实际上是块号替换了页号,通过操作系统提供的页表将逻辑地址中的页号转换为块号,块号和页内地址相加就是物理地址
求解过程:先确定逻辑地址中的页内地址位数,然后逻辑地址位数的总长度减去页内地址位数即页号位数,将页号位数组成的二进制转换为十进制与页表进行对比,查找相应的块号,将十进制的块号,块号加页内地址即为物理地址
优点:利用率高,内部碎片小,分配及其简单
缺点:增加了系统开销,可能会发生抖动现象
段页式管理:
- 熟练掌握虚拟存储管理系统的基本概念及实现。
前面所介绍到的存储管理都是实存管理,必须为进程分配足够大的内存空间,装入其全部的信息,否则就无法运行一遍。但是把进程的全部信息装入到内存中实际上是并非同时使用,有些部分运行一遍,有些部分暂时不用或者某种条件下才会使用,让进程的全部信息放入到内存是对宝贵内存资源的极大浪费,会降低内存利用率。
所以可以把物理内存扩大到大容量的磁盘上,把磁盘空间当做内存的一部分,进程的程序和数据通常放在内存中,部分放在磁盘上。当程序在执行的时候,它执行的指令或者访问的数据再哪儿则存储管理器负责判断,并针对情况采取相应步骤
当程序执行的指令或者访问的数据再内存中可以访问的时候顺利执行;如果在磁盘上,为了继续执行,则由系统自动将这部分信息从磁盘装入——部分装入;如果没有足够多的空闲内存空间,便把内存中暂时不用的信息移动到磁盘——部分替换;当部分装入、部分替换能够实现时,那么当内存空间小于进程的需要量时,进程也能运行;更进一步,当多个进程的总长度超出内存容量的时候,也可以全部装入内存空间中,实现多道程序运行
虚拟存储器定义:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理内存容量大很多、可寻址的“内存储器”
实际上虚存对于用户隐蔽可用物理内存和的容量和操作细节,虚存的容量与物理内存的大小没有关系,而是受限于计算机地址结构和磁盘容量
虚拟存储管理系统的三种实现方式:
· 请求分页虚拟存储管理。
· 请求分段虚拟存储管理。
· 请求段页式虚拟存储管理。
- 熟练掌握页面置换算法。
首先看一下什么是页面置换算法:地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
- 最佳置换算法(OPT)(理想置换算法 不可实现):从主存中移出永远不再需要的页面;如无这样的页面存在,则选择将来最长时间不需要访问的页面。
于是所选择的被淘汰页面是将来永不在使用的,或者是在将来的最长时间内不被访问的,这样可以保证获得最低的缺页率。但是将来的会不会访问操作系统并不知道,因此该算法不能被实现,只是理想的。 - 先进先出置换算法(FIFO): 是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。
其理由是:最早调入主存的页面被认为不再被使用的可能性最大。 - 最近最久未使用(LRU)算法: 这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。
所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。即淘汰最近最长时间未访问过的页面。(往前看)
- 掌握I/O系统的层次模型与I/O控制方式;I/O软件原理。
设计的目标是 高效性和通用性
设备中断处理程序:设备驱动程序的组成部分之一,位于操作系统底层,是与硬件设备密切相关的软件。
设备驱动程序:设备驱动程序是从独立于设备的软件中接受并执行I/O请求
独立于设备的I/O软件:实现适用于所有设备的常用I/O操作并且向上层软件提供一致性接口
用户空间的I/O软件:在用户空间运行的I/O库函数和SPOOLing程序
- 掌握缓冲技术;驱动调度技术。
驱动调度技术:
作为操作系统的外存,存放文件的磁盘是一类大容量高速旋转型存储设备。在繁重的I/O操作下,同时会有若干请求来到并等待处理,系统必须采取一种调度策略,能够按照最佳次序执行诸多请求,这叫做调度驱动。所使用的算法叫做调度驱动算法
驱动调度能够减少若干I/O请求服务所需消耗的总时间,从而提高系统效率。除了I/O请求的优化排序外,磁盘上信息的排列方式、存储空间的分配方法都能影响存取访问速度
- 掌握文件的命名、文件的类型、文件的属性、文件的操作等概念。
- 了解文件空间的分配和管理,文件目录和目录文件等概念,以及文件的多种共享方式。
把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
为了实现对文件目录的管理,通常将文件目录以文件的形式保持在外存,这个文件就叫目录文件。
文件共享的多种方式:文件静态共享、文件动态共享、文件符号链接共享
- 熟练掌握进程间的关系,互斥和同步问题。
- 掌握临界区的定义,使用临界资源的原则。
答:当且仅当一个进程访问的资源叫做临界资源
每个进程中访问临界资源的那段代码叫做临界区
使用临界资源的三个原则:
- 一次至多只有一个进程进入临界区内执行
- 如果已有进程在临界区中,则其它所有试图进入临界区的进程必须等待
3、进入临界区的进程要在有限时间内退出,以便让等待队列中的一个进程进入
- 掌握使用信号量与PV操作如何解决进程间同步互斥问题。
PV操作是实现进程同步与互斥地常用方法。其中,P操作表示阻塞、等待、申请一个资源,V操作表示发出、释放一个资源。
信号量用符号S进行表示:S>=0表示某资源的可用数,若 S < 0,则其绝对值表示阻塞队列中等待该资源的进程数
具体定义如下:
P(S): //某一个进程需要使用资源的时候
①将信号量S的值减1,即S=S-1;//可以理解为p操作消耗了一个资源
②如果S>=0,则该进程继续执行; //若是资源大于0,则说明还有资源,p操作可以继续消耗资源
否则该进程置为等待状态,排入等待队列。//S<0表示已经没有可以使用的资源了,必须等待
V(S): //进程使用完资源之后
①将信号量S的值加1,即S=S+1; //可以理解为 v生产、释放了一个资源
②如果S>0,则该进程继续执行;
否则释放队列中第一个等待信号量的进程,使其转换为就绪态。自己则继续执行
- 掌握死锁的概念和产生的必要条件,死锁的解决和恢复方法。
答:一组进程因为争夺资源而陷入永远等待的状态,叫做死锁
死锁产生的必要条件:
- 、互斥条件:临界资源是独占资源,进程应该互斥且独占地使用这些资源
- 、占有和等待条件:进程在请求资源得不到满足而等待时,不释放已占有资源
- 、又称不可抢占,已获资源只能由进程资源释放而不允许被其他进程剥夺
- 、循环等待条件:存在循环等待链,其中每一个进程都在等待链中等待下一个进程所持有的资源,造成这组进程永远处于等待状态
死锁的恢复方法:
死锁防止:破坏死锁产生的四个必要条件中的一条即可防止死锁
死锁避免
死锁检测和恢复
相关文章:
操作系统复习
熟练掌握操作系统的定义,操作系统的特征,操作系统的功能熟练掌握多道程序设计的概念,单道程序设计和多道程序设计的区别,多道程序设计的优点熟悉操作系统接口的主要功能,系统调用的基本概念、类型、实现。操作系统接口…...
springboot健身房管理系统
springboot健身房管理系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍…...
C语言学习笔记——数组
前言 数组是C语言中的一种自定义数据类型,它的使用非常广泛。但是很多新手在使用数组时,经常在一些细节上出问题,导致程序崩溃或者无法编译。今天,我就来详细聊聊数组的使用和我注意到的一些细节。 一、常见的数组类型与数组的创建…...
类和对象 - 中
本文已收录至《C语言》专栏! 作者:ARMCSKGT 目录 前言 正文 构造函数 对比C和C的初始化 构造函数的使用与特性 默认构造函数 C11关于默认构造缺陷的补丁 析构函数 析构函数特性 默认析构和自定义析构 拷贝构造函数 问题聚焦 拷贝构造的定…...
Android之屏幕适配方案
在说明适配方案之前,我们需要对如下几个概念有所了解:屏幕尺寸,屏幕分辨率,屏幕像素密度。 屏幕尺寸 屏幕尺寸指屏幕的对角线的物理长度,单位是英寸,1英寸2.54厘米。 比如常见的屏幕尺寸:5.0、5…...
SpringBoot+jersey跨域文件上传
一、配置tomcat服务器 1.1、添加upload文件夹 在webapps\Root文件夹下创建用于接收上传文件的upload文件夹 1.2、修改conf\web.xml设置允许上传文件 <init-param><param-name>readonly</param-name><param-value>false</param-value></ini…...
数据结构One——绪论
本喵是FW视频封面最终版宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵&#…...
JVM篇之内存及GC
目录一、JVM内存区域1.1程序计数器1.2虚拟机栈1.3本地方法栈1.4堆1.5方法区二、JVM运行时内存2.1新生代(轻量级GC)2.2老年代(重量级GC)一、JVM内存区域 JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法栈】、线程共享区域【JAVA 堆、…...
Linux驱动操作地址(寄存器)的一些方式
Linux驱动操作地址(寄存器)的一些方式 文章目录Linux驱动操作地址(寄存器)的一些方式1.对绝对地址赋值操作2. ioremap2.1 void __iomem *地址2.2 volatile unsigned int *地址2.3 structioremap1.对绝对地址赋值操作 对绝对地址0x100000赋值操作 *&…...
Java日志框架介绍
Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Glc首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一。 Log4j 2 Apache Log4j 2是apache开发的一款Log4j的升级产品。 Commons Logging Apache基金会所属的项目,是…...
编程中遇到的计算机大小端概念
概念大小端(Endian)是指在一个多字节的数据中,字节的存储顺序的规定。通俗来说,就是指数据在计算机内部存储时的顺序问题。在计算机系统中,一个数据项可能占据多个存储单元。在这种情况下,这个数据项的存储…...
日志与可视化方案:从ELK到EFK,再到ClickHouse
EFK方案 从ELK谈起 ELK是三个开源软件的缩写,分别表示:Elasticsearch,Logstash,Kibana。新增了一个FlieBeat,它是一个轻量级的日志收集处理工具,FlieBeat占用资源少,适用于在各个服务器上搜集…...
字符函数和字符串函数(上)——“C”
各位CSDN的uu们你们好呀,今天小雅兰来给大家介绍一个全新的知识点,就是字符函数和字符串函数啦,其实其中有些函数我之前已经学习过了,比如strlen、strcpy;也有一些之前不是很熟悉的函数,比如strstr、strtok…...
九龙证券|下周解禁市值超400亿元,3股解禁压力较大
下周3股解禁比例超50%。 百利电气昨日盘中直线拉升封板,至此,百利电气两连板,累计涨幅20.85%。 昨日晚间,百利电气发布股票交易反常动摇公告称,公司不触及“室温超导”相关业务,也未打开相关研发和投入。公…...
一个大型网站架构的演变历程
正序: Rome was not built in a day(罗马不是一天建成的。)一个成熟的大型网站从来都不是一蹴而就的,需要经过多次架构的调整和升级,我们熟知的大型网站比如京东、淘宝、亚马逊,它们每天都有巨大的用户访问…...
前端前沿web 3d可视化技术 ThreeJS学习全记录
前端前沿web 3d可视化技术 随着浏览器性能和网络带宽的提升 使得3D技术不再是桌面的专利 打破传统平面展示模式 前端方向主要流向的3D图形库包括Three.js和WebGL WebGL灵活高性能,但代码量大,难度大,需要掌握很多底层知识和数学知识 Threej…...
链表经典笔试题(LeetCode刷题)
本篇文章主要是对力扣和牛客网上一些经典的和链表有关的笔试题的总结归纳,希望对你有所帮助。 目录 一、移除链表元素 1.1 问题描述 1.2 思路一 1.2.1 分析 1.2.2 代码 1.3 思路二 1.3.1 分析 1.2.3 思路三 1.3 代码实现 1.3.1 思路1的代码 1.3.2 思路2的…...
SpringCloud五大组件
微服务SpringCloud整合技术组件基本流程: 引入组件启动器依赖坐标覆盖默认配置即application.properties配置文件(每个微服务只有一个并且服务启动默认加载)引导类(微服务入口即main方法)自定义开启组件注解 SpringCloudEureka 服务注册中心,分为Eure…...
Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】
Echart? ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。 ECharts 遵循 Apache-2.0 开源协议,免费商用。 ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome…...
聊聊腾讯T13技术专家被开除
这两天腾讯的技术大佬stonehuang被曝离开腾讯,据他老婆在小红书上发的帖子称是遭遇了裁员,说实话刚看到这个消息我挺震惊的,stonehuang在中国大前端领域是排得上号的专家,同时他2005年就加入了腾讯,在qq空间的发展历程…...
c++ 常见宏、模板用法【1】
目录1、宏定义实现简单的断言2、可变参数模板3、变量模板4、宏定义实现范围内的for循环5、模板实现函数对象6、宏定义实现作用域限定7、类型萃取模板1、宏定义实现简单的断言 #define ASSERT(expr) \if(!(expr)) { \std::cout << "assertion failed: " <&l…...
【25】Verilog进阶 - 序列检测
VL25 输入序列连续的序列检测 本题并不难【中等】难度给高了 【做题关键】 (1)需要使用移位寄存器的思路。其实reg型是寄存器,也可以当做是移位寄存器,重要的是对其的处理,使用的是移位寄存器的思路 (2)注意新移入数据存放在低位 1 题目 + 代码 + TestBench 很简单,没…...
如何绕开运营商的 QoS 限制
运营商针对 UDP 进行限制,这是 QUIC 以及类似 UDP-Based 协议的推广阻力之一,上了线很多问题,丢包,慢等的问题严重增加运维,运营成本。 按照运营商五元组 QoS 这种简单粗暴不惹事的原则,只要换一个端口就可…...
C#基础教程22 异常处理
文章目录 C# 异常处理语法C# 中的异常类异常类 描述异常处理创建用户自定义异常C# 异常处理 异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理…...
java八股文--java基础
java基础1.什么是面向对象,谈谈对面向对象的理解2.JDK JRE JVM的区别与联系3.和equals4.hashCode与equals5.String StringBuffer StringBuilder的区别6.重载和重写的区别7.接口和抽象类8.List和Set的区别9.ArrayList和LinkedList10.HashMap和HashTable的区别&#x…...
2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块第四套解析(详细)
2022年全国职业院校技能大赛(中职组) 网络安全竞赛试题 (4) (总分100分) 赛题说明 一、竞赛项目简介 “网络安全”竞赛共分A.基础设施设置与安全加固;B.网络安全事件响应、数字取证调查和应用安全;C.CTF夺旗-攻击;D.CTF夺旗-防御等四个模块。根据比赛实际情况,竞…...
【Spark】spark使用jdbc连接带有kerberos认证的hive jdbc
背景 这个需求就是spark不通过spark-hive的方式访问hive数据,而是通过spark读取hive jdbc的方式访问hive数据,因为这个hive有kerberos认证,在网上也不是很容易搜索到这样的操作案例。不多bb,直接上教程。 准备工作 准备一个hiv…...
【Maven】项目中pom.xml坐标定义以及pom基本配置
目录 一、pom.xml坐标定义 二、pom 基本配置 一、pom.xml坐标定义 在 pom.xml 中定义坐标,内容包括:groupId、artifactId、version,详细内容如下: <!--项目名称,定义为组织名项目名,类似包名-->&l…...
Linux GCC 编译详解
文章目录一、GCC 编译器简介二、GCC 工作流编程语言的发展GCC 工作流程gcc 和 g 的区别三、使用 GCC 编译GCC 编译格式GCC 编译流程多个源文件编译一、GCC 编译器简介 首先,什么是编译器呢? 我们可以使用编辑器(如 linux 下的 vi、windows 下…...
谁说程序员不懂了浪费,女神节安排
Python的PyQt框架的使用一、前言二、女神节文案三、浪漫的代码四、官宣文案一、前言 个人主页: ζ小菜鸡大家好,我是ζ小菜鸡,特在这个特殊的日子献上此文,希望小伙伴们能讨自己的女神欢心。 二、女神节文案 1.生活一半是柴米油盐,…...
怎样查后缀vc域名网站/百度权重查询爱站网
// // https://www.meitulu.com图片批量下载Node.js爬虫1.03 // 1.00 完成图片爬虫,手动输入页数和目录 // 1.01 改写。 // 1.02 手动输入页面url,然后自动解析 // 1.03 从命令行获得页面url,然后自动解析 // 2017年11月6日 //// 内置https模块ÿ…...
武汉网站建设易天时代/seo基础视频教程
现如今科技在高速发展我们迎来了新时代大数据时代为了让同学们更好的了解“大数据”我校商学院成立了大数据创新联盟社团现在和小编一起探课吧活动开始,刘超凡同学向同学介绍了大数据创新联盟社团的目的意义、组织形式、活动开展以及相关要求。并且明确指出大一上学…...
公司企业文化内容范本/淘宝seo什么意思
1.先umount组建好的raid:umount /dev/md02.停止raid设备:mdadm -S /dev/md03.此时如果忘了raid中的硬盘名称,要么重启系统,要么运行:mdadm -A -s /dev/md0 然后再用mdadm -D /dev/md0查看raid中包含哪几个硬盘。再次运行第二步停止命令:mdadm…...
如何查看网站域名信息/福州seo网站排名
去年,滴滴顺风车连续发生两起恶性事件,随后,滴滴顺风车于2018年8月27日宣布无限期下线整改。时隔400多天后,滴滴顺风车今天再次上线,在哈尔滨、太原、江苏常州3个城市上线试运营。顺风车在安全方面有哪些新的措施&…...
购物网站设计流程图/免费发布推广平台
在进行下列工作之前,希望读者先自行安装好ecliose 第一步 点击eclipse左上角的file -->>New -->>Android Application Project 第二步 在Application Name框中填入你新建的安卓项目名字。 将Minimum Required SDK (最小适用版本) 选择android 4.4 然后…...
b2b网站开发/网站优化排名公司
最好是采用 OrderedDict json.dumps方案 1. 在存储 content 的时候就使用 OrderedDict 而非用默认的 dict from collections import OrderedDict content OrderedDict(); content[id] "evt_ugB6x3K43D16wXCcqbplWAJo" ..... content[created] 1440407501 jcont …...