![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
一个os的实现
文章平均质量分 62
bingjing12345
知行合一
展开
-
01 orange‘S boot源码
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; boot.asm;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;%define _BOOT_DEBUG_ ; 做 Boot Sector原创 2012-07-01 16:16:40 · 935 阅读 · 0 评论 -
开机启动到加载os内核的过程
现在的BIOS通常写在闪存或eeprom中,断电后也可以被保存。电脑各硬件的参数信息被记录在cmos中,这些参数可以被bios读取,也可以在bios中被修改。1 通电以后,cpu恢复初始状态,默认指向ffff0,此地址在BIOS的范围内。放在这的只是一条跳转指令,可以跳到系统BIOS中真正的启动代码处。 2 系统BIOS的启动代码首先要做的事情就是进行POS原创 2012-07-27 17:20:55 · 2065 阅读 · 0 评论 -
03 orange kernel
%include "sconst.inc"; 导入函数extern cstartextern kernel_mainextern exception_handlerextern spurious_irqextern clock_handlerextern disp_strextern delayextern irq_table; 导入全局变量ex原创 2012-07-27 20:41:58 · 832 阅读 · 0 评论 -
虚拟存储器 与虚拟内存详解
在没有虚拟存储器之前源程序在gcc –o 后生成的文件是可执行目标程序a.out,每条指令都有一个逻辑地址 32位。它存在硬盘上。要执行时,只需找到该文件,将其装入内存。装入的方式可以有多种,比如分页,分段等等。但是,必须将该程序完全装入内存。 分页:将一个进程的逻辑地址空间(32位)分成若干大小相等的页。使用分页方式时有一个问题,必须清楚:os是根据文件系统找到的a.原创 2012-07-06 17:11:22 · 5384 阅读 · 2 评论 -
02 orange loader 源码
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; loader.asm加载内核入内存 ,方法与boot加载loader相同,但不做成函数,因为boot只有512字节。跳入保护模式;++++++++++++++++++++++++++++++++++++++++++++++++++++++原创 2012-07-27 20:22:49 · 686 阅读 · 0 评论 -
实模式跳转到保护模式时用到的概念
保护模式下仍用 段:偏移地址 表示实际的物理地址。即os中学的段式存储机制。完成实模式到保护模式的跳转后,段R中的值其实就变成了 Selector。将段寄存器的值(Selector)经过gdt的映射后 与 偏移地址(小于段的界限)相加 得到最终的物理地址。段描述符 共64位 其中段基址32位 段的最大界限20位 段的一些属性12位。段基址和界限由于历史原因被拆开存放。尽管每原创 2012-07-27 17:27:51 · 1004 阅读 · 0 评论 -
os通过调用bios的中断能实现的服务
bios是直接建立在硬件基础上的, 它包含了计算机各个主要输入输出设备的处理程序以及许多常用中断处理程序。os对外设的管理一般都会调用bios。外设包括 输入输出设备和外存。从功能上看,BIOS分为两个部分: 自检及初始化 这部分负责启动电脑,具体有三个部分: 1 用于电脑刚接通电源时对硬件部分的检测,也叫做加电自检(Power原创 2012-07-27 17:26:21 · 1157 阅读 · 0 评论 -
刚开始的内核
loader将控制权交给内核后,内核首先切换堆栈和gdt然后进行init的工作 包括a初始化8259A 和IDT;使cpu能接受中断b初始化GDT中的TSS和LDT两个描述符,以及TSS;c初始化进程表struct s_proc {stack_frame regs;u16 ldt_sel;DESCRIPTOR ldts[LDT_SIZE];u32 pid;原创 2012-07-27 17:23:36 · 573 阅读 · 0 评论 -
11orange 打开文件操作从上到下的一个实例源码
桌面程序员int main(){intfd;intn;constchar filename[] = "blah";constchar bufw[] = "abcde";constint rd_bytes = 3;charbufr[rd_bytes];assert(rd_bytes /* create &write */fd = open(file原创 2012-07-26 10:31:22 · 914 阅读 · 0 评论 -
字符从键盘输入到在显示器显示出来的详细过程
曾经有一段时间,一直想搞清楚,当我敲下键盘时,os到底是做了些什么,让我能看到一个字符被显示出来。现把过程总结一下,消除一下和我有同样感觉的孩子们。 1)首先知道一下键盘的构成;6位的计数器经过两个八选一译码器对键盘进行扫描 在键盘没有任何按键时,扫描随着计数器的循环计数反复进行。可以这么想,扫描就是一束光线,当没有键被按下时,光线可以横穿过键盘的任何位置。2)若有键按下,扫描原创 2012-08-04 19:54:36 · 15737 阅读 · 2 评论 -
网络操作系统和分布式系统区别简介
网络操作系统(NOS)是网络的心脏和灵魂,是向网络计算机提供服务的特殊的操作系统。它在计算机操作系统下工作,使计算机操作系统增加了网络操作所需要的能力。网络操作系统严格来说应称为软件平台。网络操作系统运行在称为服务器的计算机上(你的pc装了此系统,pc就是一个小服务器),并由联网的计算机用户共享,这类用户称为客户。 NOS是以使网络相关特性达到最佳为目的的,如共享数据文件、软件应用,以及共原创 2012-10-15 12:17:02 · 7393 阅读 · 0 评论