计算机启动 计算机的启动过程好比一场接力赛,各选手如上图所示,BIOS,MBR,OSLoader,OS,一个程序接一个程序的运行,而传递的接力棒便相当于对计算机的控制权。 本文也就围绕着这四个程序进行介绍,隐去了部分细节后续讲解,着重于理清启动的顺序、过程。 一、BIOS (1)BIOS运行 启动的第一步便是运行BIOS程序,平常要运行某个程序时一般分为两步:1、将程序载入内存2、使cs:ip指向程序入口地址 而BIOS作为开机运行的第一个程序,运行方式与普通程序有所不同,但方法过程是相通的: 1、BIOS程序不需要由谁加载,本身便固化在ROM只读存储器中,位置如下图所示: 据图可知...

键盘,咱们做计算机这一行的自然不必多说,天天与它打交道。但熟归熟,清楚键盘背后的原理吗?键盘上都标有各键的名称,表明了各键所代表的意义,但是计算机是如何知道的?组合键是怎样实现的?按下一个代表字符的键,怎么变成平常使用的ASCII码的?看完本文,相信你就能了解键盘的本质,知晓这些问题答案。 一、相关介绍 键盘编码器 键盘编码器(i8048),是键盘里的芯片,主要用来监控是否有键按下,弹起,然后向键盘控制器报告此键的相关信息。键盘编码器就像是键盘的嘴,让键盘能够说话,表达目前按键状态。NumLock键和CapsLock键的LED灯的开关也归它控制。 键盘扫描码 上述所说的信息就是键盘扫描码,一...

中断,英文名为Interrupt,计算机的世界里处处都有中断,任何工作都离不开中断,可以说整个计算机系统就是由中断来驱动的。那么什么是中断?简单来说就是CPU停下当前的工作任务,去处理其他事情,处理完后回来继续执行刚才的任务,这一过程便是中断。 本文旨在进一步揭开中断机制的面纱,理清中断的过程,就中断做出以下几个方面的介绍:中断分类,中断描述符表,中断控制器,和中断过程。详细的思维导图如下: 一、中断分类 外部中断 1、可屏蔽中断:通过INTR线向CPU请求的中断,主要来自外部设备如硬盘,打印机,网卡等。此类中断并不会影响系统运行,可随时处理,甚至不处理,所以名为可屏蔽中断。 2、不可屏...

在还是16位CPU的天下时,并没有实模式这一说。直到CPU发展到32位,推出保护模式后,为了区别两种模式,便将之前的模式称为实模式。处于向下兼容的考虑,现代的CPU依然保持对16位模式的兼容,刚开机时,32位的CPU是先处于16位的实模式的,而后再进入保护模式。 一、实模式 1.实模式的特点 1、地址总线只使用了20根,寻址范围为220B=1MB。2、寄存器只使用了16位,所以如果只用单一的寄存器来寻址的话只能访问到216B=64KB的空间。3、分段,访问内存采用“段+偏移”的方式,即“段基址:段内偏移地址”,而真实的物理地址为段基址16+段内偏移地址,如此便用16位的寄存器访问到了20...

1、逻辑地址,线性地址,虚拟地址,物理地址傻傻分不清? (1)逻辑地址 在IA-32架构下,分段是必须的,而分页并不是必须的。不论分页与否,访问内存都必须采用“段基址:段内偏移地址”的策略。因此访问内存需要16&32共48位的地址信息,这便是逻辑地址,高12位为段选择子,后面32位为段内偏移地址。 (2)线性地址 使用选择子索引到段描述符取得32位的段基址后与逻辑地址内的32位段内偏移地址相加后得到一个32位的地址信息,这便是线性地址。 (3)虚拟地址 如果不启用分页机制,线性地址就是物理地址,而如果启用分页机制的话,线性地址又叫做虚拟地址。 (4)物理地址 物理地址,不用多说,内...

时间,在我们的现实生活中有着重要的作用,有了时间,我们才知道目前需要做些什么,该做些什么;有了时间,一切工作才能有条不紊的进行,可以说现实世界里我们一切的活动都是由时间来驱动的。 而时间在计算机的世界里也扮演着类似的角色,它是所有工作任务的基准,中断机制,进程线程调度等等都离不开时间,时间的重要性可见一般。 因此我们需要时间,需要管理时间,此篇文章主要就是来与大家介绍一下计算机里的时间与时间管理和储存时间的时钟。有关计算机时间的时钟有多种,在这儿介绍两种比较重要的两种:实时时钟,可编程间隔计数器。 实时时钟 实时时钟RTC,RealTimeClock,这个时钟可以永久的存放系统时间,也就是说...

对于进程线程调度大家肯定都不陌生,都能够说上两句,比如什么进程是资源分配的基本单位,线程是调度的基本单位,进程有独立的地址空间,线程没有,线程与进程里面其他的线程共享资源,再有就是花样百出的调度策略。但是可能很多人对进程线程调度的内部情况还是不太清楚,只是说对这知识很熟悉,产生了理所当然的感觉。 本文就从一个简单的线程进程调度设计上来帮助大家理清进程线程的区别,缕清调度这条线。 一、线程 我们先来看看线程,在POSIX定义的线程标准中,线程是这样创建的,函数原型如下: thread,用来储存线程的id attr,表示创建线程的类型,一般默认设为NULL就好 start_routine,是...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~