x01.os.10: 输入输出

x01.Lab.Download 中下载源代码,进入工程目录,make 后再 bochs,即可见到如下界面:

随便打几个字,ok!按 F2,可切换到第二个终端,界面如下:

当然,按 F3 还可切换第三个终端,但同第二个基本一样,就不再浪费空间了。

输入输出,涉及到键盘和显示器。键盘,主要是操作 8048 编码器,8042 控制器。显示器,则是操作 VGA 系统的寄存器。方方面面,非一人之力,非一时之功,是一个逐渐完善积累的过程。于渊讲解详细精当,只是切换 tty 时,他的是 Alt + F1,但在我的虚拟机却无反应,所以只好改作 F1 了事。

任务和用户进程作了个简单区分,善莫大焉。

又,添加系统调用 Write, 实现打印功能。但 A,B,C 这三个用户进程运行时,tty 却有点失控的感觉,这是正常现象。

花了一天的时间,终于 OK 了,是为记。

时间: 2024-11-09 23:25:03

x01.os.10: 输入输出的相关文章

x01.os.14: 时间都去哪儿了

时间都去哪儿了 老帕的“花儿为什么这样红”,三分钟引起六次欢呼,却败给了张碧晨.试想一下,如果是人气更高的陈冰,即使唱得和张碧晨一模一样,可能仍然不敌老帕,为什么张碧晨就能取胜呢?有这么个笑话:一人弹琴无人听,但一老妇人听得却潸然泪下.原来她的亡夫是弹棉花的!这虽是个笑话,却一语道破玄机.歌声动人,除了唱功,还有感情因素在里面.假如老帕的”花儿为什么这样红“是 1 分, 那么,张碧晨的父女情为 1 分, ”时间都去哪儿了“为 1 分.2 : 1, 张碧晨胜出也就理所当然了. shell 的实现

x01.os.1: BIOS 中断

这只是一点准备工作.为了显示字符串,需要调用中断:int  0x10 (AH=0x13).具体参数设置,参考我的归纳整理如下: INT 10 (AH = 0) -----------------功能:设置显示方式调用参数:    AL = 00:40 * 25 黑白方式         01:40 * 25 彩色方式         02:80 * 25 黑白方式         03:80 * 25 彩色方式         04:320 * 200 彩色图形方式         05:320

x01.os.13: 文件系统

停了两天电,忽然得空闲.找来破吉他,已然不成弦.           丁丁当当敲,敲到电来到.为把时间捡,熬夜三四点. 从我的置顶随笔 x01.Lab.Download 中下载 x01.os.12.tar.gz, 解压后由终端进入 os 目录,输入 bochs  命令即可见到如下界面: 注意下面的四行,分别是 open,write, read, unlink 文件.调用代码如下: 1 void TestA() { 2 int fd, n; 3 char path[] = "/test"

x01.os.8: 加载内核

在 x01.os.7 中,借助 freedos,学习了保护模式.但操作系统必须完成引导:boot, 加载内核:loader,kernel,进而管理process,memory,file等. 引导比较简单,开机启动时,CPU 采取硬的方式,直接把 BIOS 载入内存某处运行.这就是电脑启动时按 DEL 键可以看到的画面.此时,无硬盘可以,无内存则不可以.BIOS 是一个只读芯片,但我认为它仍有可写的部分,否则,启动盘设置的保存,就说不通.BIOS 退出时,它会检测启动盘 0 扇区的最后两个字节,是

win下vm10+mac os 10.9安装遇到问题

在windows 8下安装vm10.0.0+mac os 10.9遇到问题记录例如以下: 一.因为之前我装的vm9+mac os 10.7: 二.准备安装mac os 10.9,把vm9换成vm10:网上找非常多mac os10.9 安装不了或安装报错:最后找 1. unlock-all-v120.zip 的vm10的mac os补丁文件 2.OSXMavericks2的mac os 10.9 的iso文件 安装步骤网上找找. ----------------------------------

Mac OS 10.12 - 安装任何来源软件!!

今天想安装一个从网上下载的软件到Mac OS 10.12中,结果没有想到Mac告诉我那个软件已经损坏,害得我删除了!! 最后通过热心网友的帮助,顺利解决了这个安装问题,重新安装并且使用上了这款软件,下面就是解决方法: 一,在shell里面输入命令: sudo spctl --master-disable 二,查看Mac OS 10.12是否已经允许安装任何来源软件,如果允许就可以安装任何来源软件了. 1,点击苹果图标,随后点击"系统偏好设置". 2,点击"安全性与隐私&quo

Mac OS 10.12 - 如何关闭Rootless机制?

一,进入恢复模式(Recovery):具体操作方法参见下面这篇博客: http://www.cnblogs.com/sunylat/p/6414697.html 二,关闭Rootless机制 1,选择简体中文为服务语言后,点击下面的按钮继续. 2,点击顶部菜单"实用工具"->"终端",进入"终端"shell里面. 3,在终端中输入命令: csrutil disable 执行完毕,重新启动Mac OS 10.12,这样就关闭了Rootless

mac os 10.10下 openfire启动失败的问题记录

mac os 10.10下 openfire启动失败的问题记录 主要原因是在openfire 看了一些资料综合一下然后做一个记录 A.ctrl+空格=>终端 B.建议先获取文件夹权限 sudo chmod -R 777 /usr/local/openfire/bin C.然后再一行一行执行下面的命令 sudo sucd /usr/local/openfire/binexport JAVA_HOME=`/usr/libexec/java_home`echo $JAVA_HOME /Library/

x01.os.9: 进程切换

进入内核后,当然不能无所事事.先创建三个进程,分别打印 A,B,C.虽然只是简单的打印,但却是一切扩展的基础,不可等闲视之. 进程切换,涉及一系列的寄存器需要保护,于是,就有了 ProcessStack 结构,代码如下: typedef struct { u32 gs; u32 fs; u32 es; u32 ds; u32 edi; u32 esi; u32 ebp; u32 KernelEsp; u32 ebx; u32 edx; u32 ecx; u32 eax; u32 RetAddr;