摘要: 在上一篇,我讲了键盘操作会产生扫描码以及如何解析Pause键和Print Screen键的扫描码。 在这一篇,我会说清楚”键盘上的输入为什么会出现在显示器上“。 极简版 我们敲击键盘,产生扫描码。 操作系统获取扫描码,把扫描码解析成ASCII码。 操作系统把ASCII码写入显存,显示器上就会打印出显 阅读全文
posted @ 2021-03-12 23:10 东小夫 阅读(1346) 评论(0) 推荐(1) 编辑
摘要: 我们每敲击一次电脑键盘,按键对应的字符就会出现在显示器上。这中间发生了什么?请听我慢慢细说。 相关概念 人对按键的操作,从两个维度去描述,一个是“动作”,另一个是“内容”。 按下一个按键,松开一个按键,按下一个按键并且保持按住状态一段时间(长按),这些都是动作。 每个按键和动作组合起来,会传送给计算 阅读全文
posted @ 2021-03-11 23:19 东小夫 阅读(921) 评论(1) 推荐(2) 编辑
摘要: 是什么 进程是一个运行中的程序实体,拥有独立的地址空间和逻辑控制流。 void sayHi() { printf("%s\n", "Hello,World"); return 0; } sayHi就是一个函数,它一旦运行起来,就是进程。 独立的逻辑控制流,是说这个进程就像独占一个CPU一样。每个进程 阅读全文
posted @ 2021-03-06 22:28 东小夫 阅读(762) 评论(0) 推荐(0) 编辑
摘要: memset 原型 void memset(void* p_dst, char ch, int size) 这是memset的函数原型,在C语言中使用这个函数时,需按这个原型传参。 memset的功能是:用size个char类型的数据填充初始内存地址是p_dst的这片内存空间。 代码 global 阅读全文
posted @ 2021-03-05 22:49 东小夫 阅读(375) 评论(0) 推荐(1) 编辑
摘要: 摘要 用BIOS方式启动计算机后,BIOS先读取引导扇区,引导扇区再从外部存储设备中读取加载器,加载器读取内核。进入内核后,把加载器中建立的GDT复制到内核中。 这篇文章的最大价值也许在末尾,对C语言指针的新理解。 是什么 在BOOT(引导扇区)加载LOADER(加载器)。 在LOADER中初始化G 阅读全文
posted @ 2021-03-04 20:22 东小夫 阅读(625) 评论(0) 推荐(1) 编辑
摘要: 简化版 使用IOPL设置一个特权级的用户程序对所有端口的访问权限,使用I/O位图对一个特权级的用户程序设置个性化的端口访问权限(能访问部分端口、不能访问另外的端口)。 用户程序的CPL<IOPL,用户程序能访问所有端口。否则,从I/O位图中查找用户程序对端口的访问权限。 IOPL存储在eflags中 阅读全文
posted @ 2021-03-03 18:31 东小夫 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 有4个层次的特权级,从高到低依次是:0级、1级、2级、3级。切换特权级是指从0级转移到1级、或从1级转移到3级。总之,是指从一个特权级转移到了另外一个不同的特权级。 学习特权级切换,关键知识点是: 两个指令call和iret。 一个CPU特性:特权级变换时会将一个特权级的堆栈复制到另外一个特权级堆栈 阅读全文
posted @ 2021-03-02 23:05 东小夫 阅读(1114) 评论(3) 推荐(0) 编辑
摘要: 中断发生时,操作系统会为当前的任务建立一个快照,陷入内核,把CPU的控制权交给内核。内核趁这个机会做一些工作,比如调度执行其他任务。这只是中断的作用之一。 使用中断有一套固定的流程,掌握它即可。流程大概如下: 初始化8259A 初始化工作是对主从8259A的两类端口赋值。这两类端口是:ICW和OCW 阅读全文
posted @ 2021-03-02 23:03 东小夫 阅读(1194) 评论(2) 推荐(1) 编辑
摘要: 在操作系统中,全局描述符是什么?GDT又是什么?在进入保护模式之前,准备好GDT和GDT中的描述符是必须的吗?用汇编代码怎么创建描述符?本文解答上面几个问题。 在实模式下,CPU是16位的,意思是,寄存器是16位的,数组总线(data bus)是16位的,但地址总线是20位的。物理内存地址的计算公式 阅读全文
posted @ 2021-02-05 22:40 东小夫 阅读(738) 评论(0) 推荐(0) 编辑
摘要: 操作系统的内核是一个elf文件。加载内核,需要从存在于内存中的内核文件数据中读取所有的程序段,并把这些程序段复制到规划好的内存位置(内核指令应该占据的内存位置),然后将CPU的控制权移交给这些内核指令。操作系统就正式运行起来了。 阅读全文
posted @ 2021-02-04 22:51 东小夫 阅读(1066) 评论(0) 推荐(1) 编辑