E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
一个操作系统的实现
一个操作系统的实现
(8):进程
本文是为了弄清一下几个问题:1)什么是进程?2)进程由那些部分组成?3)如何创建一个进程?4)如何确保进程间互不干扰?5)进程切换做了哪些工作?6)进程调度是怎么实现的?7)什么是系统调用?1)什么是进程?下面来先来回答第一个问题:什么是进程?百度百科上给出了定义,狭义上讲进程就是一段程序的执行过程,从广义上讲进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。举个例子来说,你准备好菜
H_armony
·
2013-08-25 15:00
[置顶] 自己动手写操作系统-经典书籍
大家会问为什么不是
一个操作系统的实现
呢。的确
一个操作系统的实现
是自己动手写操作系统的升级版。本人看到了进程间通信这一章。先说前面这
jltxgcy
·
2013-08-24 12:00
一个操作系统的实现
(7):内核雏形
一、boot.bin:加载loader.bin到内存并运行,该内容及下面的加载内核的方法可查看前一篇文章。二、loader.bin:加载内核到内存、跳入保护模式、开启分段分页机制、重新放置内核并向内核交出控制权。这里要分析的只有“重新放置内核并向内核交出控制权”,这段内容。InitKernel:;遍历每个ProgramHeader,根据其中信息确定把什么放入内存,放到什么位置,以及放多少。 xor
H_armony
·
2013-08-21 13:00
一个操作系统的实现
(6):加载Loader.bin
一、FAT12FAT12是DOS时代就开始使用的文件系统(FileSystem),直到现在仍然在软盘上使用,FAT12软盘的被格式化后为:有两个磁头,每个磁头80个柱面(磁道),每个柱面有18个扇区,每个扇区512个字节空间。所以标准软盘的总空间为:2*80*18*512=1474560B=1440K=1.44M下面是FAT12的结构图:1、引导扇区操作系统之所以认识FAT12格式的磁盘,其秘密就
H_armony
·
2013-08-15 22:00
一个操作系统的实现
(5):中断门
中断在linux驱动中占有很重要的地位,所以也一定要好好分析一下。还是一样的套路,先讲一下基本的概念,然后分析源码再来加深理解。中断门与其他三个门(调用门、陷阱门、任务门)一起是操作系统里的四扇门。它们之间的区别以后再补充,今天重点分析中断门。那么什么是门呢?门其实就是一中描述符,直观来看这个描述符描述了由一个选择子和一个偏移所指定的线性地址,程序正是通过这个地址进行转移的。中断描述符放在中断描述
H_armony
·
2013-08-12 22:00
一个操作系统的实现
(1):分析linux下如何运行一个执行文件
一个操作系统的实现
(1):分析linux下如何运行一个执行文件本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的运行开始,自上而下地分析linux是如何运行一个执行文件的。
qileilove
·
2013-08-12 09:00
一个操作系统的实现
(3):关于CPL、RPL、DPL
保护模式中最重要的一个思想就是通过分级把代码隔离了起来,不同的代码在不同的级别 ,使大多数情况下都只和同级代码发生关系。 Intel的80286以上的cpu可以识別4个特权级(或特权层),0级到3级。数值越大特权越小。一般用把系统内核放在0级,系统的其他服务程序位于1、2级,3级则是应用软件。一般情况下代码都在自己的级别下做自己的工作,同一级别之间可以相互访问,而一般是不允许不同级别的代码间随意访
H_armony
·
2013-08-06 22:00
一个操作系统的实现
(2):分段机制
先对分段机制中必须用到的一些名词作一个解释:段选择符:又称端选择子,是段的一个16位标识符。它并不直接指向段,而是指向段选择符表中定义段的段描述符。它有三个字段内容:请求特权级RPL(RequestPrivilegeLevel)、表指示标志TI(TableIndex)、索引值(Index)段描述符:段描述符石GDT和LDT表中的一个数据结构项,用来向处理器提供一个有关段的位置和大小信息以及访问控制
H_armony
·
2013-08-04 23:00
一个操作系统的实现
(1):分析linux下如何运行一个执行文件
本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的运行开始,自上而下地分析linux是如何运行一个执行文件的。1、首先,需要了解一下a.out这个目标文件。a.out在linux下是ELF(ExecutableLinkableFormat)文件格式,该目标文件由一个文件头、代码段、数据段(已初始化)、从定位信息区、符号表及符号名字字符串构成,如下左图所示,经过链接后生成执行文件如
H_armony
·
2013-07-30 22:00
bochs & nasm的安装
缘起最近看《Orange's
一个操作系统的实现
》,需要使用使用bochs工具和nasm工具,这两个工具在Ubuntu下可以使用dpkg或者更高级的apt-get来安装:sudoapt-getinstallnasm
xiajian2010
·
2013-07-24 15:00
ubuntu12.04
nasm安装
bochs安装
【实现OS 一】工作环境搭建及测试
前言 本人是在读大学生,本学期由于课程需要就进行了实现操作系统的实验,主要参考《Orange's:
一个操作系统的实现
》(在此后将简称为《Orange's》)这本书的内容。
ArmyRay
·
2013-05-30 19:38
虚拟机
操作系统
bochs
Orange'S
【实现OS 一】工作环境搭建及测试
前言本人是在读大学生,本学期由于课程需要就进行了实现操作系统的实验,主要参考《Orange's:
一个操作系统的实现
》(在此后将简称为《Orange's》)这本书的内容。
ArmyRay
·
2013-05-30 19:38
Orange'S
操作系统
bo
Orange'S学习记录
《
一个操作系统的实现
》(三):4.中断和异常&5.保护模式下的I/O
前面讲到了实模式下用int15h得到内存信息,然后在保护模式下把它们显示出来。保护模式下中断机制发生了很大的变化,原来的中断向量表被IDT(InterruptDescriptorTable,中断描述符表)代替,实模式下能用的BIOS中断在保护模式下已经不能用了。IDT可以将每一个中断向量和一个描述符对应起来。IDT中的描述符可以是中断门描述符、陷阱门描述符、任务门描述符。尽管IDT在形式上与实模式
Agul_
·
2013-05-11 15:00
《
一个操作系统的实现
》(三):3.页式存储
首先说一下页的概念~页就是一块内存。下文只讨论页大小为4KB的情况。在未打开分页机制时,线性地址等同于物理地址,即可以认为逻辑地址通过分段机制直接转换成物理地址。但开启分页时分段机制将逻辑地址转换成线性地址,线性地址再通过分页机制转换成物理地址。分页管理机制的目的就在于实现虚拟存储器,这样的话线性地址中任意一个页都能映射到物理地址中的任何一个页,使内存管理变得相当灵活。转换使用两级页表,第一级叫页
Agul_
·
2013-05-10 20:00
操作系统
《
一个操作系统的实现
》(三):2.保护模式进阶
在之前的代码中,程序从实模式跳到保护模式之后就开始死循环。这节会实现在程序结束时跳回实模式,也会实现对大地址内存的读写。新建的段以5MB为基址。而且每增加段都要用Descriptor描述它的段基址、段界限、属性,而且还要加上对应的选择子,比如如下两行:LABEL_DESC_DATA: Descriptor0,DataLen-1,DA_DRW ;DataSelectorData equ LA
Agul_
·
2013-05-09 20:00
操作系统
《
一个操作系统的实现
》(三):1.认识保护模式
进入第三章的学习~第三章开始每章内容变多了,所以以后每学习一节写一篇文章~顺便注一句:书上“用来生成描述符的宏”只是节自光盘中的pm.inc文件的,我照书上敲了那短短一段发现编译的时候报错--不过我相信大家的眼睛都比我雪亮因为引导扇区空间只有512个字节,解决这个问题有俩办法:自己写一个引导扇区or借用别人的引导扇区(从作者的话看起来以后会涉及自己写引导扇区~期待),咱用第二种,借用一下别人的扇区
Agul_
·
2013-05-07 17:00
《
一个操作系统的实现
》(二):使用Bochs调试操作系统
在输入bochs-fbochsrc后,还有几个选项,只需要输入6然后回车或直接按回车即可启动操作系统,不过它仍然停在那里而不是立刻执行。这时会出现,等待我们操作。首先按照书上给的例子模拟一遍过程。b0x7c00(在程序入口处设置断点)c(执行到断点位置,这时虽然Bochs上有内容,但是"Hello,OSworld!"还未显示)dump_cup(不知道早些的版本是否能执行这个,反正我的Bochs2.
Agul_
·
2013-05-05 15:00
《
一个操作系统的实现
》(一):不到20行的操作系统代码的解释
最开始的一段操作系统代码:org07c00h;告诉编译器程序加载到7c00处 movax,cs movds,ax moves,ax callDispStr;调用显示字符串例程 jmp$;无限循环 DispStr: movax,BootMessage movbp,ax;ES:BP=串地址 movcx,16;CX=串长度 movax,01301h;AH=13,AL=01h movbx,000ch;页号
Agul_
·
2013-05-05 14:00
汇编
操作系统
《
一个操作系统的实现
》(零):搭建环境
环境:Ubuntu12.10+bochs2.6.1今天从图书馆借了本《
一个操作系统的实现
》,豆瓣评分挺高的,准备试试。
Agul_
·
2013-05-04 21:00
操作系统
Orange's 进程
解释
一个操作系统的实现
/chapter6/r中代码。
jltxgcy
·
2013-04-01 19:00
代码
操作系统
进程
80386保护模式--GDT,LDT,TSS,调用门,特权级转移,附pmtest5代码详解
教材选择
一个操作系统的实现
,作者于渊,看此书前最好了有汇编语言,保护模式下的汇编(参考清华杨季文的80X86汇编语言程序设计教程),C语言,计算机组成原理,微机接口,操作系统相关知识。
jltxgcy
·
2013-03-10 11:00
TSS
GDT
ldt
任务特权级
调用门
笔记:
一个操作系统的实现
第一章boot.asm文件分析
分析在后面,刚学习汇编。源代码如下:org07c00hmovax,csmovds,axmoves,axcallDispStrjmp$DispStr: movax,BootMessage movbp,ax movcx,16 movax,01301h movbx,000ch movdl,0 int10h retBootMessage: db"Hello,OSWorld!" time
Pagination
·
2013-02-14 18:00
汇编
操作系统
orange's
一个操作系统的实现
实验遇到的问题及处理方法
1、LDFLAGS =-s-Ttext$(ENTRYPOINT)–Mapmat.txt在链接的flag里面,添加map,生成全局变量及函数的地址。用于baddress断点调试2、当编译是出现:undefinedreferenceto`__stack_chk_fail`时,需要在CFLAGS里添加-fno-stack-protector。以后继续添加!3、GCC中提供了一个参数-M,
oujunli
·
2013-01-22 20:00
《
一个操作系统的实现
》阅读笔记 之 保护模式
一、认识保护模式 1保护模式,(ProtectedMode,或有时简写为pmode)是一种80286系列和之后的x86兼容CPU操作模式。保护模式有一些新的特色,设计用来增强多工和系统稳定度,像是内存保护,分页系统,以及硬件支援的虚拟内存。 2 运行环境 由于引导扇区的大小只有512字节,如果程序写的大于512字节,则将程序写到引导扇区的方法就不可行了。解
z1x1c1v1
·
2013-01-16 16:00
《Orange's
一个操作系统的实现
》读书手记2--- [ 搭建你的工作环境]
搭建你的工作环境古人云:“工欲善其事,必先利其器”。是的,俗话也说:“磨刀不误砍柴工”,先让我们放慢脚步,精心地打造传说中的Bochs吧。2.1 虚拟计算机Bochs简单来讲,它相当于运行在计算机内的小计算机。这个好理解,我用的vmware不就是这样的东东嘛。不过,现在看来,我得让Bochs成为包含在vmware中的“小小计算机”了。2.1.1Bochs初体验嗯,我已经从书上的插图看到啦,是个黑底
iefswang
·
2012-12-31 14:00
《orange'S
一个操作系统的实现
》 笔记
简述:跟着《orange'S
一个操作系统的实现
》一书进行操作,将其中需要注意的过程记录下来。 第1章略。
iefswang
·
2012-12-31 14:00
一个操作系统的实现
--bochs下调试com文件
今天在运行参照第三章第二个例子写的代码,发现出错,想调试一下,可是不会,结果折腾了半天,现在给整理一下吧:bochs下调试com文件方法:方法一:在你的程序 LABEL_BEGIN后面紧接着写一个jmp $(让代码死循环在这个位置),然后编译为com文件。写入虚拟软盘。之后启动调试模式的bochs,先不要设置任何断点,直接执行到dos界面。然后在dos中运行你的程序,出现假死状态(必然的,程序一开
hsutgyl
·
2012-11-26 19:16
操作系统
文件
调试
com
bochs
一个操作系统的实现
--bochs下安装freedos
在进行保护模式的运行环境配置前,先看了了下书上的代码,编译运行结果如下:nasm3_pmtest1.asm-opmtest1.bin,可以看到界面出现了红色的p字 保护模式环境配置1:在网站http://bochs.sourceforge.net/guestos/freedos-img.tar.gz上下载FreeDos, 采用tarvxzf FreeDo
hsutgyl
·
2012-11-26 19:47
操作系统
环境搭建
bochs
FreeDos
于渊
bochs的一个可用配置及解释
《orange's,
一个操作系统的实现
》第30页这是一个可以使用的bochs配置。本机上测试正确。
stephenkung1
·
2012-11-12 20:00
在linux环境下编写汇编
最近在学习微机原理,会学汇编,但是学校上的课程显然是在Windows平台上的,可自己还是想在linux上干这些事,而且自己还是挺想坚持以前的“
一个操作系统的实现
”的计划,但是由于汇编和各种可编程逻辑器件不是很明白
ricky_hust
·
2012-10-25 19:00
HOST:win7 GUSET: ubuntu11.04 下bochs的使用
花了一天的时间终于按照《
一个操作系统的实现
》--于渊,里面所示最简单的操作系统给实现了 想想这一天下来也够呛,但是成功之后的喜悦也是无以言表的,那种一个个问题麻烦逐渐解决之后带来的充实足以把一天下来的疲惫一扫而光
biangren
·
2012-09-23 16:00
vmware
linux
虚拟机
windows
ubuntu
File
《
一个操作系统的实现
》阅读笔记 之 开发『调试』环境bochs的搭建
导读:统一思想: 道篇: 有效而愉快的学习;学习到过程应该是由感性到理性;暂时的错误并不可怕;挡住去路的,往往不是大树,而是小藤; 术篇: 用到什么学习什么;只要用心就没有学不会的东西;适当地囫囵吞枣;第一章:马上动手写一个最小的操作系统 引导扇区:电源开启后,自检(POST)------寻找软盘---
z1x1c1v1
·
2012-08-27 17:00
Ubuntu下虚拟机Bochs安装问题解决汇总
最近看《
一个操作系统的实现
》,在Ubuntu下虚拟机下安装bochs时候出现了N多的错误,现把解决办法收集记录以下(1)出现1“ERROR:Xwindowsguiwasselected,butXwindowslibrarieswerenotfound
luobin1984
·
2012-07-23 15:00
虚拟机
windows
ubuntu
library
compiler
preprocessor
orange's
一个操作系统的实现
的前五章文件组织整理
Orange's
一个操作系统的实现
的前五章文件组织整理Tree:|---Makefile||---a.img(虚拟软盘)||---bochsrc(bochs虚拟机配置)||___boot| |-
chenglinhust
·
2012-06-21 14:00
虚拟机
vector
存储
include
byte
Descriptor
Orange's
一个操作系统的实现
之笔记1
《Orange's
一个操作系统的实现
》之笔记1从今天开始,我们要自己设计一个超简陋的os了,主要的参考教材就是于渊的《Orange's
一个操作系统的实现
》,这是一本非常非常好的书!
htttw
·
2012-04-21 23:00
汇编
File
工具
FP
makefile
DST
orange's
一个操作系统的实现
之环境搭建
搭建你的环境1. 虚拟计算机Bochs简单来讲,它相当于运行在计算机内的小计算机。这个好理解,我用的vmware不就是这样的东东嘛。不过,现在看来,我得让Bochs
chenglinhust
·
2012-04-18 17:00
vmware
Debian
ubuntu
File
Constructor
destructor
读书列表
《编译器设计之路》(裘巍)《程序员的自我修养--链接,装载与库》《OrangeS:
一个操作系统的实现
》《嵌入式操作系统设计与实现》《c++应用程序性能优化》
onlyonename
·
2012-04-08 21:00
windows下bochs调试环境的创建
参考dlxlinux的配置文件和
一个操作系统的实现
一书来配置bochs配置文件如下: #########################################################
tianxiawuzhei
·
2012-02-23 19:00
windows
linux
File
library
interface
keyboard
《
一个操作系统的实现
》读书笔记--第三章--中断机制
1、中断产生的原因2、如何将中断向量与中断服务程序关联起来3、外部中断一、中断中断产生的原因有两种:一是外部中断,就是由硬件产生的中断;另一种是由指令intn产生的中断。二、如何将中断向量与中断服务程序关联起来1、实模式下:这个过程很简单,就是通过intn中的n,去中断向量表中获取该中断的中断服务程序的CS和IP,然后加载CS和IP,跳转到中断服务程序。其中(n*4)(n*4+1)中保存着中断服务
zgh1988
·
2012-02-20 16:00
《
一个操作系统的实现
》读书笔记--第三章--分页机制
1、逻辑地址、线性地址和物理地址2、分页管理机制3、PDE、PTE、cr34、如何初始化页目录表与页表一、逻辑地址、线性地址和物理地址1、在未开启分页机制情况下2、在开启分页机制情况下二、分页管理机制下图向大家展示,如何通过分页管理机制,将线性地址转换为物理地址的。转换使用两级页表,第一级叫做页目录,大小为4KB,存储在一个物理页中,每个表项4字节长,共有1024 个表项。每个表项对应第二级的一个
zgh1988
·
2012-02-18 22:00
页表
CR3
分页机制
页目录表
《
一个操作系统的实现
》读书笔记--第三章---不同特权级代码段之间的跳转
1、特权级2、一致代码段和非一致代码段3、DPL、RPL、CPL分别代表的含义,存储在什么位置,以及它们之间的关系4、不同特权级数据段之间的访问规则5、不同特权级代码段之间的转移6、代码段之间的转移对堆栈的影响7、结合pmtest5.asm来见证不同特权级代码段之间的跳转一、特权级在IA32的分段机制下,特权级总共有4个特权级别,从高到低分别是0、1、2、3。数字越小表示的特权级越大。特权级如下图
zgh1988
·
2012-02-15 23:00
cpl
DPL
特权级
RPL
段跳转
《
一个操作系统的实现
》读书笔记--第三章--堆栈段的工作方式
堆栈段在实模式和保护模式下的工作方式相同,下面我们只介绍在实模式下的工作方式:其中SS堆栈段寄存器,用来存储堆栈段的初始地址;SP堆栈指针寄存器,用来存储堆栈段的栈顶偏移量。堆栈段初始化的工作如下: SS定位到堆栈段的起始地址(基地址,低地址),栈底位于堆栈段的有效地址的最末端(高地址)。SP初始化为堆栈段的大小,SS:SP永远指向堆栈的栈顶。在初始化时,SS:SP指向堆栈段的最高地址(此时,栈底
zgh1988
·
2012-02-13 21:00
保护模式
一个操作系统的实现
实模式
堆栈段
《
一个操作系统的实现
》读书笔记--第三章--“实模式--保护模式--实模式”转换过程
下面以pmtest2.asm为例,来讲述“实模式--保护模式--实模式”的转换过程。1、“实模式--保护模式--实模式”的转换过程。2、介绍段描述符属性3、pm.inc中的宏定义4、pmtest2.asm源代码一、“实模式--保护模式--实模式”的转换过程1、“实模式--保护模式”的跳转(1)关中断(2)打开地址线A20(3)置cr0寄存器的末位为1(4)实现跳转,进入到保护模式2、“保护模式--
zgh1988
·
2012-02-13 18:00
dos
保护模式
实模式
段描述符
实模式跳转保护模式,代码全注释
最近正在阅读《orange's,
一个操作系统的实现
》,真是相见恨晚啊,那么多年就没有一本真正深入浅出弄点代码让我们入门和实践一下的书,感谢作者于渊。
ruyanhai
·
2012-01-06 18:00
video
dos
存储
include
byte
Descriptor
段界限为什么要减1
在orange's
一个操作系统的实现
,第3章,pmtest1.asm中,有如下代码 GdtPtr dw GdtLen-1 ;GDT界限我们知道一个描述符中包含段基址和段界限,那么如果GdtLen
ruyanhai
·
2012-01-06 15:00
《
一个操作系统的实现
》读书笔记--第三章--保护模式
pmtest1.asm;pmtest1.asm ;编译方法:nasmpmtest1.asm-opmtest1.com ;========================================== %include"pm.inc";常量,宏,以及一些说明 org0100h jmpLABEL_BEGIN [SECTION.gdt] ;GDT ;段基址,段界限,属性 LABEL_GDT:
zgh1988
·
2011-12-24 00:00
保护模式
实模式
段描述符
选择子
段描述符表
《
一个操作系统的实现
》读书笔记--第二章--搭建工作环境
一、熟悉Bochs虚拟机第一章我们使用虚拟机VMware运行了该最最简单的操作系统,由于VMware虚拟机不具备调试操作系统的功能,因此对于开发操作系统的程序员来说,VMware是不完备的,故本章介绍另一款虚拟机Bochs。下面我们就介绍如何使用Bochs运行该最最简单的操作系统Tinix。(计算机系统是Windows操作系统)1、安装Bochs下载Bochs安装程序,在Window系统下安装。该
zgh1988
·
2011-12-11 22:00
一个操作系统的实现
虚拟机Bochs
LinuxWindows
《
一个操作系统的实现
》读书笔记-- 第一章--最小的“操作系统”
一、最简单的“操作系统”最最简单的“操作系统”就是一个最最简单的引导扇区(BootSector)。虽然它不具有任何功能,但是它却能够直接在裸机上运行,不依赖其他软件。一个引导扇区是512个字节,并且以0xAA55为结束标识的扇区。下面就是那个最最简单的引导扇区。org07C00h;告诉编译器程序加载到07C00处 movax,cs movds,ax moves,ax callDispStr;调用显
zgh1988
·
2011-12-10 18:00
汇编语言
一个操作系统的实现
引导扇区
《
一个操作系统的实现
》读后感
于渊自述—— 性懒,好静,涉猎甚广,然所精者少。遇所好之事,譬如程序,必沉迷其中,恍恍然如癫如痴。 读书非多,然每读必思,偶有心得,自得其乐。遇知其所云者,欣然以为知音,必邀之共饮,所饮不必多,喜闻觥筹铿锵之声,与谈笑交错,快意淋漓。 本性固执,喜钻研,求本质,不满于浮光掠影,故凡可能之事,必躬亲而后快。以求甚解之心,究操作系统之原委,并亲为之,耗时数月,成雏形。回
zgh1988
·
2011-12-10 17:00
一个操作系统的实现
于渊
Bochs 2.4.5 调试版本的安装
为了学习《Orange's
一个操作系统的实现
》,先要准备好环境。
dc_726
·
2011-12-01 21:00
c
工作
user
File
OS
上一页
1
2
3
4
5
6
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他