
操作系统
HNU.小白
这个作者很懒,什么都没留下…
展开
-
操作系统第十一天:制作窗口
一、实验主要内容1、添加一个窗口图层有哪些步骤?(格式:文字说明+对应代码)答:1)制作一个用来描绘一个貌似窗口的函数(make_window8):2)在main中,首先建立新窗口的图层和缓冲区sht_win & buf_win3)初始化图层,为新窗口取得新生成的未被使用的图层,并为窗口开辟160*68的内存空间。4)为新窗口设置缓冲区大小以及透明色。5)创建窗口样式以及窗口标题,并在窗口中添加想要的文字。6)设置窗口的初始横纵坐标以及初始图层高度。按照上述步骤,这样原创 2020-12-23 17:41:08 · 775 阅读 · 0 评论 -
操作系统第九天:内存管理
一、实验主要内容内容1:内存容量检查进行内存管理之前,首先要做的事情,是搞清楚内存究竟有多大。做法如下:首先,暂时让486以后的CPU高速缓存功能无效。内存与CPU的距离比CPU内部元件远得多,因此在寄存器内部MOV要比从寄存器MOV到内存快得多。但另一方面,CPU却又必须要使用内存。因此,CPU中加入了高速缓存(cache)。为了有效使用稀有的高速缓存,做出如下决定:每次访问内存,都要将所访问的地址和内容存到高速缓存中。往内存里写入数据也是一样,首先更新高速缓存的信息,然后再写入内存。内存检查原创 2020-12-03 16:37:10 · 308 阅读 · 0 评论 -
操作系统第八天:鼠标控制与32位模式切换
一、实验主要内容内容1:鼠标解读对Harimain函数进行一些修改在读到0xfa之后,每次当读到的字节积累到3个字节,就将之显现在屏幕上。mouse_phase用来记录接受鼠标数据的工作进展到了什么阶段。存在mouse_dbuf中。运行之后第一个数字依旧是显示键盘上的数值,后面的三个数值的第一个“08”部分,0这一位只会在0-3内变化,8那一位是在点击的时候会有变化,范围是(8-F)作者让观察一下数值变化关系。总结如下:第一位:左上左下右下左下分别对应了0123四个位置。第二位:左键:原创 2020-11-28 18:29:04 · 311 阅读 · 0 评论 -
操作系统实验第七天:从鼠标接受数据
一、实验主要内容内容1:获取按键编码将目光转移到“io_out8(PIC0_OCW2,0x61)”,这句话上,这句话用来通知PIC“已经知道IRQ1中断”。如果是IRQ3,则写成0x63。执行这句话后,PIC继续时刻监视IRQ1中断是否发生。在运行之后,按下键盘上任意一个按键,都会有对应的数字编码显示出来。比如A就会显示出1E。内容2:加快中断处理字符显示的内容被放在了中断处理程序中。所谓中断处理,基本上就是打断CPU本来的工作,加塞要求进行处理。所以应该完成的干净利落。这样子会不连贯。另一方原创 2020-11-19 18:24:47 · 434 阅读 · 0 评论 -
操作系统实验第六天:分割编译与中断处理
内容1:分割源文件由于bootpack.c的代码过于长,长达近300行,于是决定分割一下源文件,决定按下图分割:如果比如graphic也想使用naskfunc.nas的函数,就必须写上“void io_out8(int port,int data);”这种函数声明。因为编译器在编译graphic.c时根本不知道bootpack.c的存在。还有修改一下Makefile,流程如下:内容2:整理Makefile整理完的Makefile文件如下:发现增加源文件后,使得Makefile文件也大了许多原创 2020-11-13 19:21:17 · 240 阅读 · 0 评论 -
操作系统实验第五天:结构体、文字显示与GDT/IDT初始化
一、实验主要内容内容1:接受启动信息之前的bootpack.c中是将数字直接写入程序,但这些数字本身应该是从asmhead.nas先前保存下来的值中取。不然当画面模式改变时,程序就不能正确运行。方框中括着的地址仅仅是为了与asmhead.nas保持一致才出现的。内容2:试用结构体采用之前的写法xsize = ((short)0x0ff4);修改代码后应该会使得代码的行数有所下降,但是像是使用了什么特殊技巧。我们还是尝试一下更加普通的写法。如下:矩形圈住的部分中,binfo是以上面定义的结构体原创 2020-11-05 20:23:30 · 440 阅读 · 0 评论 -
操作系统实验第四天:C语言与画面显示的练习
一、实验主要内容内容1:用C语言实现内存写入想要画东西,只需要往VRAM里写点什么就可以。但是在C中有没有直接写入指定内存地址的语句。所以创建一个有这种功能的函数。即书上的naskfunc.nas部分。这个函数类似于C语言中的write_mem8(0x1234,0x56)。此时参数指定的数字就存放在内存里,分别是:第一个数字的存放地址 [ESP+4]第二个数字的存放地址 [ESP+8]第三个数字的存放地址 [ESP+12]第四个数字的存放地址 [ESP+16]我们想取得用参数指定的数字0x12原创 2020-10-29 00:13:00 · 422 阅读 · 0 评论 -
操作系统实验第三天:进入32位模式并导入C语言
一、实验主要内容内容1:制作真正的IPL因为磁盘最初的512字节是启动区,所以要装载下一个512字节的内容。添加的内容如下:将harib00a复制粘贴到tolset来。新出现的指令总结如下:JC:jump if carry,即如果进位标志位为1,就跳转。INT 13:调用BIOS的13号函数,但是不知道它是干什么用的。查询网页了解到,是控制器驱动诊断的意思。磁盘读、写、扇盘校验以及寻道:AH=0x02;读盘,本次使用的功能AH=0x03;写盘AH=0x04;校验AH=0x0c;寻道A原创 2020-10-24 14:48:27 · 539 阅读 · 0 评论 -
操作系统实验第二天:汇编语言学习与Makefile入门
一、实验主要内容内容1:文本编辑器Notepad++下载在网络上搜索Notepad软件进行下载,安装之后随便打开一个nas文件,如下:可以看到正常打开文本(注释是日文应该是因为日本开发的)内容2:代码中的指令讲解helloos中的核心代码课本上对helloos.nas节选代码涉及到的一些指令进行了讲解,进行一下简单的总结。ORG指令:ORG 0x7c00 把程序装载到指定地址,至于为什么是0x7c00,因为最开始规定的就是这个数字,然后大家都依次为前提开发各种操作系统。JMP指令:JMP原创 2020-10-17 17:42:09 · 594 阅读 · 0 评论 -
操作系统实验第一天:从计算机结构到汇编程序入门
一、实验主要内容内容1:二进制编辑器(Binary Editor)安装。打开书上给的网页,在网页中点击Download按钮对软件进行下载解压,点击Bz.exe,打开应用程序,界面如下:然后只需要在键盘上键入0~F,便会在上面产生一个又一个的字节,并且字节之间会自动插入空格。在保存并重命名为helloos0.img之后,重新打开时,会发现不能对文本进行编辑,那么此时只需要在edit选项中将read only的对勾取消即可。此时可以再次输入。内容二:tolset文件夹的准备工作。掌握了软件的使用方法,原创 2020-10-08 16:16:25 · 396 阅读 · 2 评论 -
操作系统概念课程作业一
题目一:资源利用问题在不同的操作系统中以不同的形式出现,请指出下面哪些资源必须被仔细的管理(请说明为什么):答:1)主机系统或微型计算机:主机系统是是用于商业方面对主机主要参数的描述,一般指与主机参数与安全稳定的参数的集合体,一般包含:CPU、主板芯片组、内存、扩展槽、磁盘、扩展坞、网络适配器、安防设备等等;而微型计算机是由大规模集成电路组成的、体积较小的电子计算机。它是以微处理器为基础,配以内存储器即输入输出(I/O)接口电路和相应的辅助电路而构成的裸机。所以主机系统和微型计算机都需要仔细管理内存和C原创 2020-10-08 15:45:43 · 600 阅读 · 0 评论