杂
Marco&GalaxyDragon
这个作者很懒,什么都没留下…
展开
-
操作系统对同时到来的中断的处理
操作系统对同时到来的中断的处理有可能的两种处理方式。 第一种是进入中断后直接屏蔽其他中断,这样就导致一种线性处理,比如两个中断进入后,一个中断先处理,处理完之后第二个中断再处理。缺点很明显,没有考虑到中断的优先级先后。 比如当一个键盘输入发生时,如果另一个中断正在发生,则键盘输入不会得到处理,这很可能导致键盘的IO缓冲区溢出以至于丢失部分数据。 所以更好的方法就是为中断设置优先级,当一个优先级原创 2017-09-07 00:35:44 · 914 阅读 · 1 评论 -
操作系统缓存机制
起源在每个指令周期中,CPU至少会访问内存一次,来抓取下一条执行的指令,而且经常会附带着更多次的访问,来获取操作数,以及存储结果。而CPU执行指令的速度就因此大大受限于对内存的访问速度,而且随着CPU的速度提高大大快于内存的访问速度提高,这个问题会越来越严重。理论上来说,我们可以制造一种存取速度与CPU寄存器相同的内存,但那样的话内存就会相当昂贵,所以为了解决这个问题,就需要利用短时间内指令的聚合特原创 2017-09-07 13:41:07 · 2977 阅读 · 0 评论 -
windows编程(1)-句柄,内核对象
当一个进程被初始化时,系统要为它分配一个句柄表。该句柄表只用于内核对象 ,不用于用户对象或G D I对象。它只是个数据结构的数组。每个结构都包含一个指向内核对象的指针、一个访问屏蔽和一些标志 当进程初次被初始化时,它的句柄表是空的。然后,当进程中的线程调用创建内核对象的函数时,比如C r e a t e F i l e M a p p i n g,内核就为该对象分配一个内存块,并对它初始化。用原创 2017-11-29 14:34:32 · 189 阅读 · 0 评论 -
同步锁与操作系统中断
通常情况下,CPU从程序计数器取出当前指向的内存区,取出指令,执行指令,同时使程序计数器指向下一条指令。但是为了能使CPU对外界或内部出现的某些状况作出反应,需要有某种手段来使顺序执行的程序进行跳转,这就是中断。中断时程序从当前执行位置跳转到中断程序处理地址,执行完中断程序后再返回到原地址。中断也可能是嵌套的中断可以分为内中断以及外中断,外中断例如类似键盘输入,鼠标输入。内部中断例如时钟中断,以及各原创 2017-12-06 10:03:33 · 362 阅读 · 0 评论 -
操作系统--硬件与软件的桥梁
现代计算机系统通常由一个或多个处理器,主存,磁盘,打印机,键盘,鼠标,显示器,网卡,还有各种各样的输入输出设备组成(数位板,扫描仪等等)而操作系统就是在应用软件和底层硬件的一层抽象,让我们在编写应用程序时不用了解硬件的细节,而直接调用抽象的接口。例如读取磁盘,可能需要翻看对应硬件的说明手册,知道有哪些指令,硬件一般还伴有一个简单的控制器,与CPU通过控制总线相连,就是用来传输这些指令以及返回值,然后原创 2017-12-05 21:07:50 · 3444 阅读 · 0 评论 -
OSI模型应用层-DNS协议
应用层依赖于底层的传输层TCP/UDP来提供传输服务,而应用层本身则面向实际应用。如浏览网页的HTTP,域名解析的DNS。 还有很多私有的应用层协议,例如一个网络游戏的通信协议,QQ的通信协议,也属于应用层,他们和DNS,HTTP之类的协议其实也类似。就算你自己做一个小的网络程序,然后规定他们怎么通信,你也发明了一个简单的应用层协议。应用层协议,说白了就是双方约定一个通信方式,然后都互相遵守,双方原创 2017-12-07 14:58:50 · 1067 阅读 · 0 评论 -
windows编程(3)-进程
Windows支持两种类型的应用程序。一种是基于图形用户界面(GUI)的应用程序,另一种是基于控制台用户界面(CUI)的应用程序。基于GUI的应用程序有一个图形前端程序。它能创建窗口,拥有菜单,可以通过对话框与用户打交道,并可使用所有的标准“Windows”组件。Windows配备的所有应用程序附件(如Notepad、Calculator和WordPad),几乎都是基于GUI的应用程序。基于控制台的原创 2017-11-29 15:03:28 · 242 阅读 · 0 评论 -
计算机启动与BIOS
CPU通过控制总线和其他硬件连接在一起,更明确的说,是和主板上插槽对应的地址所插的硬件连接在一起。因为主板上的每种插槽只能对应一个硬件,所以cpu一开始就能确定某根控制线连的是哪个硬件。计算机启动时,BIOS(基本输入输出系统)开始运行,他首先检查所有主板上的插槽,收集硬件信息(一个插槽是否有插入硬件,插入了几条内存等等) (所以可以知道,BIOS是和主板相关的,不同的主板布线不同,BIOS程序也原创 2017-12-05 22:01:10 · 448 阅读 · 0 评论 -
无线局域网,有线局域网
无线局域网无线局域网即wifi,适合于家庭、旧办公楼、食堂和其他一些安装电缆太麻烦的场地。在这些系统中,每台计算机都有一个无线调制解调器和一个天线,用来与其他计算机通信。无线路由器(wirelessrouter)或者基站(basestation),它主要负责中继无线计算机之间的数据包,还负责中继无线计算机和Internet之间的数据包。有线局域网有线局域网使用了各种不同的传输技术。它们大多使用铜线作原创 2017-12-03 11:05:36 · 2958 阅读 · 0 评论 -
windows编程(2)-进程,线程
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成一个是操作系统用来管理进程的内核对象(对,进程本身也是一种内核对象,就像文件是一种内核对象一样)。内核对象也是系统用来存放关于进程的统计信息的地方。用面向对象的思想理解,系统就是一个管理器程序,他存放了“进程对象”以及他的一些信息。另一个是地址空间,它包含所有可执行模块或 D L L模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆原创 2017-11-29 14:40:07 · 144 阅读 · 0 评论 -
多线程与IO密集/CPU密集
IO是一个通用的概念,即数据从一个地方移动到另一个地方,对一个实体来说,可以看成数据从外部进入,以及从实体输出到外部。 具体来说,常见的IO请求有网络IO,磁盘IO。 那么因为CPU的工作频率远远快过和其连接的外部硬件,例如磁盘,所以CPU在IO的时候经常会需要等待外部硬件完成当前任务,完成之后,才能进行下一个任务,这种情况常常称为IO阻塞,即CPU直到等待IO操作返回前,不能继续运行。IO阻塞原创 2017-12-05 18:18:44 · 4328 阅读 · 0 评论 -
RpgMakerMV源码解析(2)-启动过程
启动过程今天宏观的讲解一下rpgmaker游戏框架的启动过程.在main.js中,首先调用插件管理器加载了插件,然后使用场景管理器,加载了启动场景,之后转到sceneManager.run方法,sceneManager是一个典型的延时初始化的类,他的init方法要等到第一次使用该类,即在run里面才会进行初始化。之后加载该场景类。关于场景管理,这边简单说一下,很多引...原创 2019-06-25 12:34:08 · 1627 阅读 · 0 评论 -
RpgMakerMV源码解析(1)-输入管理
输入管理在几乎所有的游戏框架中都有输入管理器的存在,作用就是将系统底层的按键事件收集起来,然后对外提供一个简单的按键状态访问。 我们接下来就看看在rpgmakerMV中的输入管理实现。 rpgmakerMV可以获取键盘输入,手柄输入,以及触屏输入,分别实现在两个类Input,touchInput里,两者大同小异,我们这里主要看一看Input的实现,只要理解了基本概念,分析touchInput也是原创 2017-09-18 10:33:45 · 8857 阅读 · 0 评论