3 LL596214569

尚未进行身份认证

我要认证

一个重度强迫症的编程学习者。

等级
TA的排名 3w+

机制:地址转换

操作系统在实现对CPU的虚拟化时,采用的是受限直接执行机制(LDE)。LDE的目标是让程序大部分指令直接访问硬件,只在一些关键时机例如进程发起系统调用或者时钟中断时由操作系统介入来确保进程能够继续正确运行,这样可以实现操作系统对进程调度的高效性与可控性。在实现了高效的调度与控制之后,操作系统需要考虑的就是进程之间的安全性,也就是确保进程彼此之间的内存不会被相互影响,这就是对内存的虚拟化。当今,操作系统虚拟化内存的方式就是给每个进程分配一块独属于它的内存空间,每个进程只能访问自己的内存,无法访问超出自己内存的

2020-06-06 20:26:01

Ubuntu镜像名称解释

原文地址:http://www.lupaworld.com/article-216888-1.htmlUbuntu镜像名称解释例如阿里源中ubuntu的镜像前面的Footer 和 Header 的Html 文件不用管它,这是非官方镜像特有的,是官方镜像页面的美化文件。MD5SUMS 是md5 校验表,SHA1SUM /SHA256SUMS 性质一样只不过不同方式。打开之后大概是(MD5SUMS 为例):fa0893ffe2188a6daf918791cdccb480 *ubuntu-12..

2020-06-06 11:26:13

抽象:地址空间

早起的操作系统其实只是一组函数(一个库),是在内存中运行的一个运行的程序,例如下图: 其中的0-64KB,属于操作系统,包括代码、数据等等,64KB之后的属于运行中的进程;后来,随着计算机的不断发展,人们开始想方设法的更有效率的使用计算机,也就是进入了多进程时代(multiprogramming),当时等等多个进程在给定时间内运行,例如当有进程在等待I/O,那么操作系统就会将CPU交给其他进程,这样可以让CPU被充分的使用。后来,人们使用的...

2020-06-04 22:03:46

调度:比例份额

操作系统有一个非常有趣的调度程序,比例份额调度(proportional-share),也被称为公平份额调度(fair-share)。比例份额基于一个简单的想法:调度程序的最终目标,就是为了给每一个进程获得一定比例的CPU使用时间,而不考虑周转时间与响应时间。比例份额调度有一个很优秀的例子,由Waldspurger和Weihl提出的彩票调度,顾名思义,就是让进程像彩票一样分配占用时间,哪个进程中奖就能获得更多的占用CPU时间,更越活越的进程,也就得到更多的抽奖机会。首先,彩票调度中彩票数代表进程占用资源

2020-06-03 22:04:23

C++构造函数使用memset初始化可能导致的问题

今天在写代码的时候突然遇到一个中断问题,但是光看代码根本发现不了错误,代码大概类似于:typedef struct MemsetTest{ int year; map<int,string> m_map; MemsetTest() { memset(this , 0 , sizeof(MemsetTest)); }}MemsetTest;int Main(){ MemsetTest tTest; tTest.year = 2020; tTest.m

2020-06-02 19:34:22

Ubuntu下安装VSCODE

方式一:应用中心安装首先在ubuntu桌面找到应用中心打开在软件中心中,搜索Visual Studio Code当然上面是理想情况,这种图是我在网上搜的。。。我自己的应用中心并不能搜索到VSCODE能找到就在页面中直接选择安装方式二:安装包安装1. 从vscode官网下载最新版本,deb包下载地址:https://code.visualstudio.com/docs?dv=linux64 当然由于是外网,可能下载速度极慢,这是我下载后上传到百度云的链接,官网下载..

2020-05-30 20:02:59

调度:多级反馈队列

多级反馈队列(Multi-level Feedback Queue, MLFQ)是有Corbato在1962年提出的,用于兼容时分共享系统。现在其经过多年的优化,已经被应用于很多现代操作系统中。多级反馈队列是为了解决两方面问题。一:优化周转时间。在之前的进程调度中曾经提及过,这需要通过有线执行短工作来实现,但是问题是很少有进程可以在一开始就能正确预测它的工作要运行多久。第二个问题是降低响应时间,这可以通过时间片轮转等方法实现,但这些策略的周转时间却很差。所以出现了多级反馈队列,多级反馈队列是使用历史经验来预

2020-05-30 14:46:44

操作系统的进程调度

一、定义调度策略的准备操作系统具有底层的机制与上层的调度策略,低层级制例如上下文切换已经在上一篇文章中有所了解,那么上层的策略调度又是什么呢?首先,我们如果要定义一种调度策略,自然首先要思考策略的运行环境以及调度指标。策划你的运行环境就是策略在执行期间会出现的情况,例如:1. 每一个进程开始执行的时间2. 每一个进程持续执行的时间3. 执行中的进程是否会出现空转等待的情况4. 在调用进程之前操作系统是否就能确认进程的相关信息。。。。。。等等,这些都是操作系统为进程制定策略之前需要

2020-05-29 21:54:48

操作系统机制之受限直接执行

受限直接执行(limited direct execution)是操作系统的关键底层机制之一,其目的就是让用户想运行的程序在CPU上运行之前,首先确保设置好硬件,以便在没有操作系统帮助的情况下限制进程可以执行的操作。直接执行操作系统会以时间片轮转的方式让多个进程共享CPU,来实现虚拟化。但是,在执行这个机制时存在一些问题。第一个是性能:如何在不增加系统开销的情况下实现进程间的切换?第二个是如何在运行其他进程的同时保留自身对CPU的控制权?控制权对于操作系统尤为重要,因为操作系统要负责资源的管理.

2020-05-26 22:04:24

VM报错”找不到可以连接的有效对等进程”

晚上给电脑新装了两条内存,然后打开电脑运行虚拟机就出错,提示就是这样的一个提示,然后我就根据经验,删掉了对应系统文件夹里的所有 .lck 文件,以往遇到虚拟机的问题有几次这样操作就能行,但是这次删了还是不行。。。。于是上谷歌,搜了一下发现网上的回答大概分为两种,1.macOS 安全管理控制的问题;解决办法就是:系统偏好设置 -》安全性与隐私-》通用-》 会有vm的提示 点击 允许。重新打开vm。我是windows 这条略过;2. 虚拟机的系统驱动有问题;自写脚本卸载虚拟机的驱动.

2020-05-25 20:47:27

操作系统抽象之进程

一、进程的概念首先思考一个问题:CPU的核心数是有限的,那么在运行远超过CPU核心数数量的程序时,操作系统是如何实现CPU核心数仿佛无限的假象的?当然是通过虚拟化CPU来实现,也就是让一个程序只运行一个时间片,然后切换到其他程序,通过高速的上下文切换来伪造一种多个CPU的假象,这也就是时分共享(time sharing)的CPU技术。这种行为潜在会造成一些性能的损失,也就是不停切换时耗费的COU性能。CPU的虚拟化想要实现,操作系统需要一些低级机制与高级技能。机制是一些低级方法或协议,用于实现所

2020-05-21 22:34:30

操作系统简史

操作系统(Operating System,OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。早期的操作系统:库一开始,操作系统并不像现在的操作系统,它只是一些库,甚至可以说是一堆函数。它们的作用只是为了让程序员可以远离对类似于低级I/O处理的重复代码,而是让OS这个库来为程序员提供接口,进而减少程序员的工作。当时,在那些古老的大型机系统上

2020-05-20 21:41:36

Python基础 - matplotlib绘图库

Matplotlib是一个强大的Python绘图和数据可视化的工具包,极其适用于与NumPy一同使用。Matplotlib通过 plt.plot() 进行绘图,通过plt.show() 显示图像线条风格linestyle或ls 描述 ‘-‘ 实线 ‘:’ 虚线 ‘–’ 破折线 ‘None’,’ ‘,’’ 什么都不画 ‘-.’ ...

2020-05-19 19:52:10

steam如何搜索免费游戏

最近朋友圈好多人在说Epic免费送游戏的事,这周送的是GTA5,我没买过这个游戏,也没去Epic上领,但是看到Epic免费送游戏我就想到一个问题,既然Epic会免费送游戏,那作为竞争对手steam不可能没有可以白嫖的机会才对,于是上网搜了一下,果然,steam也是经常有免费送的游戏的,但是这些游戏在免费栏里面还不显示。。。。于是在网上查了一下相关操作:首先,打开这个网站:https://steamdb.info/SteamDB作为最重要的第三方steam数据平台之一,提供了大量steam相关的有

2020-05-18 20:59:54

CPropertyPage 的切换焦点问题

最近收到一个需求,在一个使用 CPropertyPage 与 CPropertySheet 的属性页上,切换到最后一页的时候将焦点设置在摸个特定控件上,便于使用者直接通过键盘完成整套操作,大概情形就是下面这样:当前执行到了最后一页,但是CPropertySheet 的默认焦点会在第一个按钮上,也就是图中的上一步,而我的需求是将其设置在完成上;刚接到这个需求的时候我以为很简单,惯性思维就...

2020-04-28 19:55:13

_purecall & _get_purecall_handler &  _set_purecall_handler

原文:https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/purecall?view=vs-2019一、_purecall默认纯虚拟函数调用错误处理程序。当调用纯虚拟成员函数时,编译器生成调用此函数的代码。语法C复制extern "C" int __cdecl _purecall();备注...

2020-04-23 16:33:14

Python基础 - NumPy数组

一、多维数组Python提供的基础数据结构列表、元组等都是可以看做简单的一维数组,那么用到多维数组时该如何处理呢?因为当前的结构中的每个元素都是不限类型的,而每种结构也是一种类型,那么理所当然可以想到将基础数据结构嵌入到基础数据结构中得到多维数据结构:二、NumPyNumPy是Python的一个扩展程序库,支持大量的为读书族与矩阵运算,并且针对数组运算提供了大量的数学函数库。...

2020-04-22 21:45:28

Python基础-集合

集合(set)是一个无序的不重复元素序列。集合也是使用{}创建,还可以使用set()创建,如果创建一个空集合必须使用set,防止与字典混淆:集合与数学中的集合概念一致,可以进行数学集合运算,包括交、并、差等:集合可以通过add updata 来添加元素,通过remove discard pop 操作来移除元素:此外集合还有一些方法:方法 描述 clea...

2020-04-21 22:11:23

Python基础-字典

字典(dict) 就是可以按照键值存储的数据字典,是一种可变序列。列表的对象是有序且可排序的,而字典对象无需且不可排序。其中值是可变的,键是不可变的,同一个键在赋值两次后会由后一次赋的值覆盖前一次赋的值;字典含有的方法:com 比较(python2独有)len 求长str 输出字典可打印的字符串type 返回类型字典函数:序号 函数及描述 ...

2020-04-21 21:57:00

C++函数指针在回调函数中的使用

一、函数指针的定义函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针指向的是函数,其实与用指针指向变量一样。在代码编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向这个函数地址的指针变量后,可用该指针变量找到函数的地址进而调用函数。代码实例:需要注意的数定义函数指针时的括号不可以省略,例如://pfadd 是一个指向函...

2020-04-21 20:47:26

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享达人
    分享达人
    成功上传6个资源即可获取