操作系统
Wo_der
这个作者很懒,什么都没留下…
展开
-
物理内存与虚拟内存区别与联系
虚拟内存是虚拟的,是操作系统为了合理使用内存而提出的一种到物理内存的动态映射,系统访问一个内存的时候,首先根据虚拟内存地址,通过映射表转换去找到对应的真正的物理内存上的存储位置,然后读取数据,合理利用是因为虚拟内存一般比物理内存大小要大,当虚拟内存的一个地址无法通过映射表在物理内存上找到对应的存储单元时候,此时会根据虚拟地址在磁盘上找到对应的存储信息,然后把物理不活跃内存单元上的信息替换到转载 2017-05-13 23:14:18 · 1026 阅读 · 0 评论 -
ELF 文件中的section 和 segment
ELF 是可执行目标文件的一种格式,上计算机系统的时候曾经简略的接触到,这个可执行文件中包含了 代码段,数据段等信息,供程序运行的时候进行调用,但是实在太久没有看到这个东西了,今天又看到了ELF文件的时候,对elf 节和 elf 段的概念很陌生 ELF segment 和 section 用上图来解释很恰当,其实就是对于elf文件中一部分相同内容的不同描述映射而已,就是上图红框中原创 2017-06-02 03:12:46 · 7590 阅读 · 1 评论 -
于渊<orange's一个操作系统的实现>保护模式部分详解
进入保护模式内容详解 实模式和保护模式的区别 实模式和保护模式是cpu的两种不同的工作模式,这两种工作模式主要的区别在于寻址方式的不同,寻址方式的意思是寻找地址的方式,这里稍微啰嗦一下,其实对于寻址更方便的理解方式应该是“寻值”,其实在汇编中无论是值还是地址或者变量本质上都是一个数值而已,所谓的“寻值”就是要确定这个东西在指令中究竟对应的数值是什么。 在介绍阆中不同工作模式下的不同寻址方原创 2018-01-28 22:15:38 · 1937 阅读 · 0 评论 -
一致代码段和非一致代码段和CPL,RPL,DPL
之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉. 但是有时候用户程序也需要读取内核的某些数据,怎么办呢? 操作系统就引入了访问特权等级(0-3)的机制. 这些特权等级,通过三个符号来体现CPL/DPL/RPL. 其中 CPL是存寄存器如CS中, RPL是代码中根据不同段跳转而确定,以动态刷新CS里的CPL. DPL是转载 2018-01-29 16:37:18 · 298 阅读 · 0 评论 -
于渊《orange's 一个操作系统实现》的字符串输出函数disp_str有bug会导致异常
于渊先生的《orange’s 一个操作系统实现》的字符串输出函数disp_str有bug会导致异常 发现在同一个函数中两次使用disp_str就会导致异常,这个问题困扰了我很久,一般来说都是堆栈的没有恢复好的问题,在反复的检查后发现堆栈并没有什么问题,disp_str是一个汇编程序,莫名觉得是符号问题,鬼使神差的使用c程序对其包装发现没有这样的问题,一直往堆栈方向想,但后来想到自己大一写汇编函数...原创 2018-03-26 17:12:51 · 1641 阅读 · 9 评论 -
进程是如何结束与回收的
大致描述进程创建的过程,系统中有一个叫做init的初始进程,由它调用fork产生子进程(完全拷贝父进程的一切堆栈,代码,数据,文件资源等),子进程使用exec装载磁盘中的elf文件,更换自己的程序(包括代码段和数据段)。进程的退出必须要使用exit(),exit()不是一个语言上的返回,它是一个系统调用,会释放当前的内存,文件资源等,但是此时pcb还未回收,只是一个僵尸进程,父进程使用wait()得原创 2018-04-02 20:14:27 · 1899 阅读 · 0 评论