摘要:死锁银行家算法 死锁 死锁的定义 如果一个线程集合中的每个线程都在等待这个集合中另一个线程的执行结果才能继续执行下去,若无其他外力,它们都无法推进,这就形成了死锁。 死锁的4个必要条件 1、互斥条件:一个资源在某时刻内只能允许一个线程进行访问; 2、占有且等待:一个线程A占有一部分资源,此时去申请另
        
阅读全文
 
    
        
        
摘要:操作系统栈帧 栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(地址地)。下图为典型的存取器安排,观察栈在其中的位置 入栈操作:push eax; 等价于 esp=
        
阅读全文
 
    
        
        
摘要:Linux基本概念 Linux的发展史 Linux发行版 发行版一般提提供两种用户界面 图形化用户界面(GNOME,KED等) 命令行界面CLI(bash) Linux的优势 与Unix操作系统兼容 广泛的硬件运行条件 多硬件平台支撑和可移植性 支持多种文件系统 良好的设备独立性 强大的网络功能 完
        
阅读全文
 
    
        
        
摘要:Shell编程语法 什么是Shell脚本 shell脚本(script)是一个可执行的纯文本文件,由多个shell命令组成 shell脚本通过组合shell内部命令和外部命令,同时结合正则表达式,管道命令,数据流重定向等辅助命令,完成一个完整的功能。 shell提供了数组、循环、条件与逻辑判断等程序
        
阅读全文
 
    
        
        
摘要:Linux Linux的概述 作为概念来说,Linux是什么东西,这个系统是怎么来的。发展的历程。 Linux是一个免费的类Unix操作系统,最初由Linus Torvalds和来自世界各地的开发者共同协助完成的。在GNU的公共开发许可证中开发的,源码对于任何一个人来说都是免费的。 1973年Uni
        
阅读全文
 
    
        
        
摘要:陷入,中断和驱动程序 运行进程时,cpu 一直处于一个大循环中:取指,更新 PC,执行,取指……。但有些情况下用户程序需要进入内核,而不是执行下一条用户指令。这些情况包括设备信号的发出、用户程序的非法操作(例如引用一个找不到页表项的虚拟地址)。处理这些情况面临三大挑战:1)内核必须使处理器能够从用户
        
阅读全文
 
    
        
        
摘要:调度 任何操作系统都可能碰到进程数多于处理器数的情况,这样就需要考虑如何分享处理器资源。理想的做法是让分享机制对进程透明。通常我们对进程造成一个自己独占处理器的假象,然后让操作系统的多路复用机制(multiplex)将单独的一个物理处理器模拟为多个虚拟处理器。本章将讲述 xv6 是如何为多个进程模拟
        
阅读全文
 
    
        
        
摘要:文件系统 文件系统的目的是组织和存储数据,典型的文件系统支持用户和程序间的数据共享,并提供数据持久化的支持(即重启之后数据仍然可用)。 xv6 的文件系统中使用了类似 Unix 的文件,文件描述符,目录和路经名(请参阅第零章),并且把数据存储到一块 IDE 磁盘上(请参阅第三章)。这个文件系统解决了
        
阅读全文
 
    
        
        
摘要:锁 xv6 运行在多处理器上,即计算机上有多个单独执行代码的 CPU。这些 CPU 操作同一片地址空间并分享其中的数据结构;xv6 必须建立一种合作机制防止它们互相干扰。即使是在单个处理器上,xv6 也必须使用某些机制来防止中断处理程序与非中断代码之间互相干扰。xv6 为这两种情况使用了相同的低层概
        
阅读全文
 
    
        
        
摘要:PC 硬件 本文介绍供 x86 运行的个人计算机(PC)硬件平台。 PC 是指遵守一定工业标准的计算机,它的目标是使得不同厂家生产的机器都能够运行一定范围内的软件。这些标准随时时间迁移不断变化,因此90年代的 PC 与今日的 PC 看起来已是大不相同。 从外观来看,PC 是一个配置有键盘、屏幕和各种
        
阅读全文
 
    
        
        
摘要:第一个进程 本章通过第一个进程的创建来解释 xv6 是如何开始运行的,让我们得以一窥 xv6 提供的各个抽象是如何实现和交互的。xv6 尽量复用了普通操作的代码来建立第一个进程,避免单独为其撰写代码。接下来的各小节中,我们将详细探索其中的奥秘。 xv6 可以运行在搭载 Intel 80386 及其之
        
阅读全文
 
    
        
        
摘要:操作系统接口 操作系统的工作是(1)将计算机的资源在多个程序间共享,并且给程序提供一系列比硬件本身更有用的服务。(2)管理并抽象底层硬件,举例来说,一个文字处理软件(比如 word)不用去关心自己使用的是何种硬盘。(3)多路复用硬件,使得多个程序可以(至少看起来是)同时运行的。(4)最后,给程序间提
        
阅读全文
 
    
        
        
摘要:Ubuntu16.04SLT 64位 工具链 sudo apt-get install gcc-multilib libsdl1.2-dev, libtool-bin, libglib2.0-dev, libz-dev, and libpixman-1-dev. 下载lab进行make编译 下载qe
        
阅读全文
 
    
        
        
摘要:XV6文件系统 buffer cache在内存中,大小有系统定义。对文件的操作都是对buffer cache进行操作的。对原始数据块的操作通过ide.c驱动程序进行磁盘数据的块读取。磁盘中存放的数据结构如下boot为操作系统的应道块,super记录了磁盘的信息(inodes的个数,起始地址,bit的
        
阅读全文
 
    
        
        
摘要:上下文切换分为两种情况 用户程序陷入到内核,再从内核返回 两个应用程序之间的上下文切换 用户程序陷入到内核 用户程序陷入到内核通过中断INT指令,在xv6中系统调用的号为64 操作系统在初始化的时候会建立IDT表以及GDT表 通过INT找到IDT中的项,通过IDT中的项找到GDT中的项,最后定位到代
        
阅读全文
 
    
        
        
摘要:汇编 端口 端口 前面讲过,各种存储器都和CPU的地址线、数据线、控制线相连。CPU在操控它们的时候,把它们都当作内存来对待,把它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑器我们称其为内存地址空间。 在PC机系统中,和CPU通过总线相连的芯片除各种存储器外,还有以下3种芯片: 1)各种接
        
阅读全文
 
    
        
        
摘要:64KB-4GB-64TB? 我记得大学的汇编课程、组成原理课里老师讲过实模式和保护模式的区别,在很多书本上也有谈及,无奈本人理解和感悟能力实在太差,在很长一段时间里都没真正的明白它们的内含,更别说为什么实模式下最大寻址空间为1MB?段的最大长度不超过64KB?而保护模式下为啥最大寻址能力就变成了6
        
阅读全文