1. UNIX V6 运行硬件环境——PDP-11/40

PDP-11/40指令和数据都是以16比特为单位。对它而言,一个字的宽度为16比特。

PDP-11/40以及周边设备的寄存器被映射到内存最高位的8K空间(内存映射IO)。

利用内存映射IO,可以通过操作内存来访问寄存器。如下:

 #define REG_ADDRESS 0170000

 struct {
int integ;
}; main()
{
int a ;
a = REG_ADDRESS->integ;
REG_ADDRESS->integ = ;
}

2. PSW(processor status word)

3. 通用寄存器

PDP-11/40具有r0-r7共8个通用寄存器。

其中r6为2个,分别对应用户模式和内核模式,在切换psw的当前模式时,r6在硬件上自动切换。

r5位帧指针或环境指针;

r6称为栈指针,它指向各进程所拥有的栈的顶端

r7称为程序计数器,处理器从r7指示的内存地址读取指令执行。

4. MMU

PDP-11/40以长度为8kb的段或页为单位,对进程所需的内存进行管理。

MMU通过称为APR(页寄存器)的寄存器对各段进行设定,并将虚拟地址转换为物理地址。

PDP-11/40的MMU具有2个状态寄存器,SR0和SR2。

SR0用于保存出错信息和内存管理的有效标志,SR2用于保存目标指令的16位虚拟地址,可用来确定引起错误的指令。

5. 内存

内存以8比特(1字节)为单位赋予地址。地址长度为18比特,因此内存容量为218=256KB。

PDP-11/40将周边设备的寄存器映射到内存高位地址的8kb空间。

UNIX V6内核源码剖析——unix v6 全貌的更多相关文章

  1. UNIX V6内核源码剖析——进程

    进程的概念 1. 什么是进程 2. 进程的并行执行 3. 进程的运行状态 4. 用户模式和内核模式 cpu具有2种模式——内核模式和用户模式,通过PSW来切换. 切换时, 映射到虚拟地址的物理内存区域 ...

  2. 《Unix内核源码剖析》

    <Unix内核源码剖析> 基本信息 作者: (日)青柳隆宏 译者: 殷中翔 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115345219 上架时间:2014-2 ...

  3. linux0.11内核源码剖析:第一篇 内存管理、memory.c【转】

    转自:http://www.cnblogs.com/v-July-v/archive/2011/01/06/1983695.html linux0.11内核源码剖析第一篇:memory.c July  ...

  4. (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

    本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...

  5. Linux 系统调用 —— fork 内核源码剖析

    系统调用流程简述 fork() 函数是系统调用对应的 API,这个系统调用会触发一个int 0x80 的中断: 当用户态进程调用 fork() 时,先将 eax(寄存器) 的值置为 2(即 __NR_ ...

  6. ARM Linux内核源码剖析索引

    start_kernel -->asm-offset.h 生成 -->proc_info_list   -->machine_desc -->__vet_atags --> ...

  7. 鸿蒙内核源码分析(调度队列篇) | 内核有多少个调度队列 | 百篇博客分析OpenHarmony源码 | v6.05

    百篇博客系列篇.本篇为: v06.xx 鸿蒙内核源码分析(调度队列篇) | 内核有多少个调度队列 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度 ...

  8. 把nc v6的源码看懂

    看懂nc v6的源码! 碧桂园全部的正式环境的补丁都在我手里. 2015-11-18 2:33 谢谢两位一起努力的兄弟 谢谢超哥,谢谢祈冰哥,谢谢连老师,陈明大哥,谢谢龙哥,珍玉,谢谢廖生哥,谢谢林春 ...

  9. v77.01 鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc(上)进程通讯内容 | 新的一年祝大家生龙活虎 虎虎生威

    百篇博客分析|本篇为:(消息封装篇) | 剖析LiteIpc进程通讯内容 进程通讯相关篇为: v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志 v27.05 鸿蒙内核源码分析(互斥锁 ...

随机推荐

  1. 简单的activemq的封装和使用

    天空中飘着小雨,实在是适合写代码的时节. 1 package ch02.chat; import java.io.Serializable; import javax.jms.Connection; ...

  2. 数论——lucas定理

    网上证明很多,虽然没看懂.... 主要解决大组合数取模的情况 费马小定理求大组合数: a^(p-1)=1%p; 两边同除a a^(p-2)=1/a%p; C(n,m)= n!/(m!*(n-m)!) ...

  3. C++ STL@ list 应用 (leetcode: Rotate Array)

    STL中的list就是一双向链表,可高效地进行插入删除元素. List 是 C++标准程式库 中的一个 类 ,可以简单视之为双向 连结串行 ,以线性列的方式管理物件集合.list 的特色是在集合的任何 ...

  4. linux内存负载分析

    衡量内存负载的一个很重要的指标就是页面置换的频率.当linux系统频繁的对页进行换进换出 的时候,说明物理内存不过,不得不进行频繁的置换页面. 使用vmstat(virtual memory stat ...

  5. Hadoop HDFS概念学习系列之hdfs里的文件下载闲谈(二十六)

    hdfs里的文件下载 可以,通过hadoop distributed system来下载,而且速度非常之快.涨知识!!! 或者,通过命令行的方式,也可以! ********************** ...

  6. CentOS下的防火墙关闭

    关闭防火墙 1.查看防火墙状态 service iptables status 2.关闭,但开机后又会打开 service iptables stop 3.查看防火墙开机启动状态 chkconfig ...

  7. Visual Studio中的Build Event

    在VS中,进行build时,可以在build之前,或者之后执行一些操作,比如把一些css,font,images文件从一个项目的文件夹复制到另一个项目的文件夹 方法: 点击项目,右键-属性-Build ...

  8. java泛型 8 泛型的内部原理:类型擦除以及类型擦除带来的问题

    参考:java核心技术 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首 ...

  9. 【Stage3D学习笔记续】真正的3D世界(二):显示模型

    虽然我们进入真3D世界了,但是上一章的Demo仍然是显示的一个平面,尽管我们的平面在3D空间中旋转可以看出一点3D透视的效果,但是既然是真3D,就要拿出点3D的样子来! 如果要显示3D模型,我们就要告 ...

  10. dojo(四):ajax请求

    储备知识 1.在介绍新版本的ajax请求之前,需要先了解一些dojo/Deferreds. 初次听到“Deferred”这个概念,可能会觉得这是一个神秘的东西.实际上它在执行异步操作的时候非常强大,例 ...