![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 75
手写的从前66
这个作者很懒,什么都没留下…
展开
-
操作系统 - 进程的概念
计算机中,CPU是最宝贵的资源,为了提高CPU的利用率,引入了多道程序设计的概念。当内存中多个程序存在时,如果不对人们熟悉的“程序”的概念加以扩充,就无法刻画多个程序共同运行时系统呈现出的特征。 一、进程的引入多道程序系统中,程序具有:并行、制约以及动态的特征。程序概念难以便是和反映系统中的情况:1. 程序是一个静态的概念程序是完成某个功能的指令集和。系统实际上是出于不断变化的...转载 2018-11-25 18:38:40 · 391 阅读 · 0 评论 -
特权级变换总结
1、特权级2、一致代码段和非一致代码段3、DPL、RPL、CPL分别代表的含义,存储在什么位置,以及它们之间的关系4、不同特权级数据段之间的访问规则5、不同特权级代码段之间的转移6、代码段之间的转移对堆栈的影响7、结合pmtest5.asm来见证不同特权级代码段之间的跳转一、特权级在IA32的分段机制下,特权级总共有4...转载 2018-12-15 15:35:13 · 322 阅读 · 1 评论 -
物理内存、虚拟内存的区别、虚拟地址空间概念及区别
物理内存(内存条):当打开程序时,系统会将这些程序加载到物理内存上。虚拟内存(硬盘):虚拟的不是物理内存,而是代替物理内存行使存储的功能,物理内存的运行程序的功能是无法用虚拟内存来完成的。物理内存与虚拟内存的关系:当运行程序过多,物理内存不够用时,系统会将一部分硬盘空间当内存使用,这部分空间就是虚拟内存。...转载 2018-12-10 20:15:11 · 497 阅读 · 1 评论 -
内存管理笔记(分页,分段,逻辑地址,物理地址与地址转换方式)
1. 物理地址和逻辑地址物理地址:加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端。这些数字被北桥(Nortbridge chip)映射到实际的内存条上。物理地址是明确的、最终用在总线上的编号,不必转换,不必分页,也没有特权级检查(no translation, no paging, no privilege c...转载 2018-12-10 20:20:51 · 907 阅读 · 0 评论 -
时间片轮转法
时间片轮转法(Round-Robin,RR)主要用于分时系统中的进程调度。为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列。新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。时间片是一个小的时间单位,通常为10~100ms数量级。当进程用完分给它的时间片后,系统的计时器发出时钟中断,调度程序便停止该进程的运行...转载 2018-12-10 20:33:27 · 3081 阅读 · 0 评论 -
虚拟地址空间发展的来龙去脉
<div class="htmledit_views"> <p><!-- [if !mso]&gt;&#10;&lt;mce:style&gt;&lt;!-&#10;v/:* {behavior..转载 2018-12-10 20:40:55 · 187 阅读 · 0 评论 -
什么是内存(一):存储器层次结构
今年以来,内存条价格暴涨,已经跃升为新的新一代理财产品,所以今天就和大家讨论一下内存的话题,主要内容就是在程序运行过程中,内存的作用以及如何与CPU,OS交互。我们先来讨论:计算机的运行究竟是在做什么?来看一下经典的冯诺依曼结构。计算机科学虽然飞速发展了几十年,但是依旧遵循冯诺依曼结构。冯诺依曼结构图1:冯诺依曼结构数学家冯诺依曼提出的 体系结构包含以下几个要点:把程序本身当作数据来...转载 2018-12-10 22:10:06 · 401 阅读 · 0 评论 -
操作系统经典书籍推荐
推荐原则:宁缺勿滥,决不混进糟粕(好书不一定对所有人都合适,但对于它的目标读者群来说,一定是好书)。选书原则:有国外的,不看国产的有原版的,不看翻译的看大师的作品计算机的书最好看国外的教材,因为比较经典的教材都是国外的,而且尽量看英文原版的,如果一个人永远不接触英文原版,那么他的信息接受必定比别人慢,无形中落后很多。我建议...转载 2018-12-10 22:21:02 · 24487 阅读 · 7 评论 -
什么是内存(二):虚拟内存
通过上一篇文章的扯淡,我们应该已经明白了存储器的层次结构,技术细节很复杂,但是思想却不难理解,因为就是很简单的缓存思想。那么本文我们开始讨论关于内存的另一个话题.虚拟内存。其实思想也是很容易理解的。我不知道有多少人听过虚拟内存这个概念,但是虚拟内存是计算机系统最重要的概念之一,并且它成功的主要原因就是它一直在沉默的,自动的工作,换句话说,我们这些做应用的程序员根本不需要干涉它的工作过程,但是一...转载 2018-12-10 22:40:35 · 193 阅读 · 0 评论 -
虚拟内存详解(2)
一、定义以及基本思想定义:系统对主存的抽象。基本思想:允许每个数据对象有多个独立的地址,其中每个地址选自不同的地址空间。二、作用将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在主存和磁盘中来回传递数据,通过这种方式可以高效的使用主存。它为每个进程提供一致的的地址空间,从而简化了内存管理。它保护了每个地址空间不被其他进程所破坏。三、虚拟内存...转载 2018-12-10 22:45:11 · 218 阅读 · 0 评论 -
分段分页机制
意义:分页机制是为了充分利用空间,将琐碎的地址空间利用起来; 分段机制是为了解决冲突问题,它是一种机制,这种机制使得很方便地管理内存; 1. 内存分段 1.1 为什么分段? 在x86-16体系中,为了解决16位寄存器对20位地址线的寻址问题,引入了分段式内存管理。而CPU则使用CS,DS,ES,SS等寄存器来保存程序的段首...转载 2018-12-11 16:55:44 · 432 阅读 · 1 评论 -
多线程到底如何执行
形象点来说,就是这样。比如说程序有两个线程,那么你就是手上有两个雪糕,多线程执行的话就是,你左一口雪糕,右一口雪糕,轮着吃,代码执行完了,你的雪糕吃完了,要是你的代码是带循环的,你就会发现你的雪糕吃完又长出来了,要是死循环,就是怎么吃都吃不完= =你只能一口一口吃雪糕,CPU也是这样,只能一段一段执行代码,CPU的“时间片”概念就是这么个样子。如果这两个线程优先级不一样呢,一个高一个...原创 2018-12-28 20:05:22 · 949 阅读 · 0 评论 -
对于多线程程序,单核cpu与多核cpu是怎么工作的
此文中的大部分资料来自于网络上,我只是觉得把有道理的整理一下,方便以后查阅。1.多线程在单核和多核CPU上的执行效率问题的讨论a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢)多个cpu的话就可以在两个cpu中同时执行了..............a2: 单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统...转载 2018-12-28 20:07:49 · 503 阅读 · 0 评论 -
关于CPL、RPL、DPL生动形象地解释
保护模式中最重要的一个思想就是通过分级把代码隔离了起来,不同的代码在不同的级别 ,使大多数情况下都只和同级代码发生关系。Intel的80286以上的cpu可以识別4个特权级(或特权层),0级到3级。数值越大特权越小。一般用把系统内核放在0级,系统的其他服务程序位于1、2级,3级则是应用软件。一般情况下代码都在自己的级别下做自己的工作,同...转载 2018-12-12 12:51:41 · 1205 阅读 · 0 评论 -
一致代码段和非一致代码段
之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.但是有时候用户程序也需要读取内核的某些数据,怎么办呢?操作系统就引入了访问特权等级(0-3)的机制.这些特权等级,通过三个符号来体现CPL/DPL/RPL.其中CPL是存寄存器如CS中,RPL是代码中根据不...转载 2018-12-12 12:52:16 · 122 阅读 · 0 评论 -
从高特权级跳转到低特权级怎么回事
我在学习保护模式特权级转换时,看到书上列出了很多转换规则,复杂之极,于是个人总结一下(简单总结,高手见笑了),如下:1.不使用控制门时只能进行同级跳转(无论jmp还是call)。2.要想进行不同级别的跳转,只能使用控制门。但是对于上面第2条,书上只介绍了能利用“call + 控制门”从低特权级跳转到高特权级,可是并没有说“call + 控制门”能够实现从高特权级跳转到低特权级。书上只是简单的...转载 2018-12-14 23:05:00 · 494 阅读 · 0 评论 -
引入TSS与堆栈切换
【0】READMEtext description from orange’s implemention of a os and for complete code ,please visit https://github.com/pacosonTang/Orange-s-OS/blob/master/p...转载 2018-12-14 22:30:02 · 491 阅读 · 2 评论 -
句柄的本质
句柄的本质一、书上定义:&lt;&lt;Microsoft Windows 3 Developer''s Workshop&gt;&gt;(Microsoft Press,by Richard Wilton)&nbsp;&nbsp;&nbsp; 在Windows环境中,句柄是用来标识项目的,转载 2018-11-29 20:40:36 · 173 阅读 · 0 评论 -
句柄和特殊的指针
这是操作系统里的一个概念,句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16...转载 2018-11-26 20:18:02 · 88 阅读 · 0 评论 -
API,SDK,MFC详解
【扫盲】为初学者普及计算机编程中涉及的一些专业词语。API:Application Programming Interface -- 应用程序编程接口SDK:Software Development Kit -- 软件开发工具包MFC:Microsoft Foundations Classes -- 微软基础类API:应用程序编程接口应用程序接口为:“计算机操作系统(Ope...转载 2018-11-26 20:20:01 · 274 阅读 · 0 评论 -
进程和线程
第一篇:进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。一个进程所拥有的数据和变量只属于它自己。线程(thread)则是某一进程中一路单独运行的程序。也就是说,线程存在于进程之中。一个进程由一个或多个线程构成,各线程共享相同的代码和全局数据,但各有其自己的堆栈。由于堆栈是每个线程一个,所以局部变量对每一线程来说是私有...转载 2018-11-26 20:21:05 · 88 阅读 · 0 评论 -
进程和线程
第一篇:进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。一个进程所拥有的数据和变量只属于它自己。线程(thread)则是某一进程中一路单独运行的程序。也就是说,线程存在于进程之中。一个进程由一个或多个线程构成,各线程共享相同的代码和全局数据,但各有其自己的堆栈。由于堆栈是每个线程一个,所以局部变量对每一线程来说是私有...转载 2018-11-26 20:22:47 · 101 阅读 · 1 评论 -
变量的前缀和匈牙利命名法
匈牙利命名法许多 Windows 程序员都使用“匈牙利标记法”作为变量命名约定。这是为了纪念具有传奇色彩的微软程序员 Charles Simonyi。这种标记法非常简单,即变量名以一个或者多个小写字母开始,这些字母表示变量的数据型态。例如:szCmdLine 中的 sz 代表“以0结尾的字符串(StringZero)”;在 hInstance 和 hPrevInstance 中的 h ...转载 2018-11-26 20:23:38 · 798 阅读 · 0 评论 -
编译程序与操作系统的关系
http://blog.csdn.net/keminlau/article/details/5848634和很多程序员一样,编译器到目前为止对我还存在一些让我迷惑的地方。比如编译器与操作系统的关系,编译器与CPU的关系,动态链接器从哪查找共享库等。让人困惑的原因有几,第一是编译器的功能角色特殊,编译器是生成程序的程序;第二是编译过程变...转载 2018-11-28 14:39:09 · 2706 阅读 · 0 评论 -
进程和线程的通俗理解
&nbsp;QQ程序如果没有运行,那它只是程序,而不是进程,一旦运行了QQ程序,那它就成了进程。QQ程序一旦运行成了进程,操作系统如windows就要分配给QQ运行的内存空间,CPU运行的时间以及其它资源,这样QQ程序就可正常运行了。如果要运行其它程序,如杀毒软件,操作系统也要做同样的事情。有了进程之后,最大的好处就在于电脑可以同时运行多个程序,每个程序就是一个进程。而如果没有进程呢,那电...转载 2018-11-28 14:45:26 · 294 阅读 · 2 评论 -
虚拟内存
第一阶段:没有内存抽象没有内存抽象对于内存的管理通常非常简单,除去操作系统所用的内存之外,全部给用户程序使用。或是在内存中多留一片区域给驱动程序使用,如图1所示。图1. 没有内存抽象时,对内存的使用第一种情况操作系统存于RAM中,放在内存的低地址,第二种情况操作系统存在于ROM中,存在内存的高地址,一般老式的手机操作系统是这么设计的。如果这种情况下,想要操作系统可以执行多进程的话,缺陷...转载 2018-11-28 14:52:35 · 131 阅读 · 0 评论 -
进程和线程的趣解和详解
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个...转载 2018-11-28 14:59:20 · 109 阅读 · 0 评论 -
详解 RPL、DPL、CPL 的关系
保护模式中最重要的一个思想就是通过分级把代码隔离了起来,不同的代码在不同的级别,使大多数情况下都只和同级代码发生关系。Intel的80286以上的cpu可以识別4个特权级(或特权层) ,0级到3级。数值越大特权越小。一般用把系统内核放在0级,系统的其他服务程序位于1、2级,3级则是应用软件。一般情况下代码都在自己的级别下做自己的工作,同一级别之间可以相互访问,而一般是不允许不同级别的代码间随意访问...转载 2018-12-13 12:51:46 · 825 阅读 · 0 评论 -
DPL,RPL,CPL 之间的联系和区别+指令跳转(超详细版)
CPL是当前进程的权限级别(Current Privilege Level),是当前正在执行的代码所在的段的特权级,存在于cs寄存器的低两位。RPL说明的是进程对段访问的请求权限(Request Privilege Level),是对于段选择子而言的,每个段选择子有自己的RPL,它说明的是进程对段访问的请求权限,有点像函数参数。A...转载 2018-12-13 16:57:06 · 2505 阅读 · 0 评论 -
有特权级变换的转移——堆栈的切换
在没有特权级变换的情况下,程序的转移中的一些参数和返回地址都是push进同一个堆栈,这种情况比较简单。而如果转移伴随着特权级变换,那么我们就会涉及到两个堆栈,外层堆栈(调用者堆栈)和内层堆栈(被调用者堆栈)。(特权级变化的时候,堆栈也要发生变化,这个是处理器的机制,其作用是为了避免高特权级的过程由于栈空间不足而崩溃。) 既然涉及到两个堆栈,那么我们从哪里取得其...转载 2018-12-14 12:58:12 · 708 阅读 · 0 评论 -
关于CPL、DPL、RPL(3)
关于CPL、DPL、RPL这几个概念刚开始是有点难理解的,因为各种情况都有,有点复杂。我觉得最简单的办法就是,把程序的各种段,理解为国家的各种政府机构,例如省级机构、市级机构、县级机构等,DPL就是用来标识这个的,这是个静态的概念,省级的机构办省级的事,市级的机构办市级的事,设置好了各自的职权范围。而执行程序,可以理解为去这些机构办事,CPL就是你当前的身份。而RPL呢,可以理解为,你去办事...转载 2018-12-14 22:22:14 · 574 阅读 · 0 评论 -
线程局部存储
线程局部存储英文为Thread Local Storage [1] ,缩写为TLS。为什么要有TLS?原因在于,全局变量与函数内定义的静态变量,是各个线程都可以访问的共享变量。在一个线程修改的内存内容,对所有线程都生效。这是一个优点也是一个缺点。说它是优点,线程的数据交换变得非常快捷。说它是缺点,一个线程死掉了,其它线程也性命不保; 多个线程访问共享数据,需要昂贵的同步开销,也容易造成同步相...原创 2018-12-29 12:28:29 · 109 阅读 · 0 评论