操作系统
mick_seu
这个作者很懒,什么都没留下…
展开
-
xv6试验环境bochs及qemu搭建
最近打算学习操作系统,无意中看到xv6,learn by doing。首先下载源码,开始使用官网提供的方法git,无奈失败,好在在github上搜到一份可以用的,都不知道是第几版的。见panks 。解压后cd Xv6/make源代码编译成功。接下来就是运行环境的搭建。方案一:qemu# 安装虚拟环境sudo apt-get install qemu-system-i386原创 2015-10-18 08:49:25 · 3658 阅读 · 0 评论 -
实模式、保护模式和虚拟8086模式
参考自:实模式与保护模式解惑之(一)——二者的起源与区别(河西无名式)概述:实模式和保护模式是处理器发展的两个非常重要的阶段。这两个模式下的编程也有着显著的不同,弄明实模式与保护模式的区别是理解操作系统运行原理和编写操作系统的基础。本文主要讲解了实模式和保护模式的区别和保护模式的起源,侧重点在二者寻址方式上的差异。这里插入一段 CPU 的发展式(源自:8086 CPU原创 2016-12-04 20:14:06 · 2705 阅读 · 0 评论 -
【Linux编程】僵尸进程和孤儿进程
本文参考自:孤儿进程与僵尸进程[总结] 以及百度百科一、基本概念我们知道,父进程创建子进程后,在相互无通信或同步的情况下,子进程与父进程之间是完全独立的,结束时间也是这样。Linux 提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到。这种机制就是:在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等,但是仍然为其保留一定原创 2016-12-11 16:16:54 · 880 阅读 · 0 评论 -
【xv6学习之Lec8】System calls, Interrupts, and Exceptions
* why do we need to take special care for user to kernel? security/isolation only kernel can touch devices, MMU, FS, other process' state, &c think of user program as a potential malicious原创 2016-02-25 21:03:03 · 1531 阅读 · 0 评论 -
【xv6学习之lab3】User Environment
今天是2016年1月20日,距离回家过年不到10天了,我要尽快把这个lab做完,任务很艰巨!Part A: User Environments and Exception Handling首先是如下三个变量:kern/env.c然后我们需要对 struct Env 有个较细致的理解:inc/env.hAlloc原创 2016-02-24 14:40:15 · 4163 阅读 · 0 评论 -
【xv6学习之番外篇】Exceptions and Interrupts
本文主要源自 Chapter 9 Exceptions and Interrupts(80386 Programmer's Manual)Interrupts and exceptions are special kinds of control transfer; they work somewhat like unprogrammedCALLs. The differe原创 2016-01-26 15:50:23 · 1857 阅读 · 0 评论 -
【xv6学习之番外篇】内存管理
本文源自:https://pdos.csail.mit.edu/6.828/2014/readings/i386/c05.htm#fig5-1 (Intel 80386 Reference Programmer's Manual)首先是逻辑地址,线性地址,物理地址间的区别与联系,可以见下图(图中虚拟地址即指逻辑地址):注意上图中的分页机制有问题,需将 P原创 2015-12-26 22:12:42 · 2231 阅读 · 0 评论 -
折腾之重装linux
之前的linux系统是灵哥帮我装的,我啥也没管,所以啥也没学会。之后帮别人重装过几次系统后,装系统的过程已经比较熟悉了。可是装完之后各方面的配置以及最基础的软件安装与删除工程都还不熟悉,前天下定决心折腾一次,为的就是真正搞懂整个过程。1、网络配置以前装的几次都没有遇到联网问题,这次遇到了。这个问题活活折腾了我2天。感觉自己真是弱爆了。开始以为是配置的问题,纠缠半天都没解决。经过原创 2015-11-02 12:48:03 · 1396 阅读 · 0 评论 -
【xv6学习之第0章】操作系统接口
1、fork()函数一个进程调用 fork() 函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。fork() 函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事(即复制了 fork()函数后的代码),但如果初始参数或者传入的变量不同,两个进程也原创 2015-10-20 10:43:41 · 2577 阅读 · 0 评论 -
【xv6学习之HW1】shell
第一次的作业就把我难倒了。在此十分感谢JasonLeaster,没有这一系列的博文,我可能就要放弃了。希望能坚持下去,虽然比较难,但是我肯定能学到很多东西。传送在此:http://blog.csdn.net/cinmyheart/article/details/45122619不会的东西比较多,记录的东西也就比较多,比较杂。记下来先,慢慢熟悉。看了JasonLeaster写的代原创 2015-10-23 20:44:53 · 7151 阅读 · 3 评论 -
【xv6学习之Lab 2】Memory Management
Part 1: Physical Page Management内存分布如下:注意到kernel结束之后就是free memory了,而在free memory的最开始存放的是pgdir,这块内存同样由boot_alloc申请实验开始之前,我们先搞懂几个常识:1、首先是 i386 的页面大小问题。虽然在很多操作系统书讲到页式地址管原创 2015-12-23 15:45:29 · 5559 阅读 · 8 评论 -
【xv6学习之番外篇】详解struct Env 与 struct Trapframe
鉴于我们有必要对struct Env和struct Trapframe 这两个用户环境的关键结构体有个细致的了解,这篇博文应运而生。主要借鉴张弛的report。(内联汇编参见 http://grid.hust.edu.cn/zyshao/OSEngineering.htm 第二章)首先是 Env 结构体:inc/env.h这其中的 env_tf 存储了各寄存器内容原创 2016-01-23 11:19:43 · 4416 阅读 · 0 评论 -
【xv6学习之番外篇】jos内存布局详解
xv6的内存格式我们可以通过打开 inc/memlayout.h 查看。具体如下:这个页面布局代表的是启用地址转换以后,无论是操作系统还是用户程序,看到的虚拟内存布局(这也就是说,操作系统和用户程序 使用的是同一套页目录和页表,这个在绍老师的讲义里有提到)。关于每部分的详解,我们可以参见:这里列出几个需要注意的地方:1、[UPAGES, UVPT原创 2016-01-05 21:51:58 · 2696 阅读 · 2 评论 -
【xv6学习之HW3】xv6 lazy page allocation
xv6使用lazy page allocation。当进程需要更多的内存的时候,调用malloc申请更多的堆内存,而系统调用sbrk()完成该工作。但是有的进程会一次申请大量的内存,但是又可能根本用不到,比如说sparse array。所以说复杂的内核涉及会将实际的allocation的工作推迟到实际用的时候,发生了page fault了,然后再进行实际的分配Part On原创 2016-01-19 09:11:34 · 3921 阅读 · 4 评论 -
【xv6学习之番外篇】保护
本文源自:https://pdos.csail.mit.edu/6.828/2014/readings/i386/s06_01.htm (Intel 80386 Reference Programmer's Manual)1 Why Protection?The purpose of the protection features of the 80386 is to he原创 2015-12-27 21:01:57 · 1399 阅读 · 0 评论 -
【xv6学习之Lec2】 PC hardware and x86 programming slides
这一节我们主要了解 PC 的硬件与 x86 编程。PC architecture首先是计算机架构,如下图:关于EIP:内存操作:基本栈操作:8086:x86: I/O:原创 2015-11-27 14:22:11 · 1362 阅读 · 0 评论 -
【xv6学习之lab1】Booting a PC
进入lab1,使用git下载lab文件。然后略过Introduction,从Part 1开始看。Part 1按照介绍一步一步来,make qemu后会出现 QEMU window。(记得先安装qemu)。若此处使用make qemu-nox,则不会跳出QEMU 窗口,只在你的终端里显示。原创 2015-11-07 15:02:12 · 5489 阅读 · 0 评论 -
ubuntu 16.04装机心得
最近重装了ubuntu 16.04LTS,两个坑需要注意一下。1、启动引导设置问题。(这一步其实是硬盘安装的步骤,U盘安装没有这一步)我们都知道为了引导 ubuntu 的装机程序,需要使用 EasyBCD 创建引导,在配置menu.lst 时,我们会加入一下代码:title Install Ubunturoot (hd0,0)kernel (hd0,0)/vmlinuz.e原创 2016-12-30 19:09:14 · 3635 阅读 · 0 评论