摘要: 互斥 操作系统的同步与互斥可以从线程和进程两个角度进行理解。如果从线程的角度理解,这里本文以两个线程为例,需要考虑这两个线程是否属于同一个进程,对于不同进程的线程来说,它们本质上和从两个进程的角度进行理解是一样的,在之后讨论两个进程间的同步互斥时会详细说明。对于同一进程的两个线程,假设有这样一段代码 阅读全文
posted @ 2018-08-03 23:31 miao_zheng 阅读(4137) 评论(0) 推荐(1) 编辑
摘要: 大约1个月前的一个周三,主管通知我下周要去松山湖开始硬装实践。得到这个消息以后,心里还是有些说不清的滋味,一方面,我觉得可以暂时放松一下自己,摆脱工作的烦恼;另一方面,我又觉得这和我的主业不相关,一个月的时间太长了,我是在浪费时间。带着这种矛盾的心情,我踏上了东莞之旅,一个小插曲是,周日晚上飞东莞时 阅读全文
posted @ 2018-06-16 20:40 miao_zheng 阅读(10395) 评论(0) 推荐(0) 编辑
摘要: auto C++11新引入的auto是一个十分好用的特性,它的用途主要是自动类型推断和返回值占位。 1. 自动类型推断 auto可以从表达式中推断出“返回值类型”,这里一定要有一个具体的表达式,然后根据表达式计算出结果,将结果返回给auto类型的变量。 auto的自动类型推断有两个显著优点,其一是可 阅读全文
posted @ 2018-03-12 12:36 miao_zheng 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 之前面试时曾被问到“如果实现操作系统的线程调度应该采用什么数据结构?”,因为我看过ucore的源码,知道ucore是采用斜堆的方式实现的,可以做到O(n)的插入、O(1)的查找。我回答了斜堆,但面试官坚持让我在B树和红黑树之间选择一个,由于实际上很少用到B树和红黑树,所以我也不太清楚,只是隐约记得红 阅读全文
posted @ 2018-02-28 19:50 miao_zheng 阅读(3992) 评论(0) 推荐(0) 编辑
摘要: 概述 对于客户机操作系统来说,存在两种常用的虚拟化方法,即full virtualization(完全虚拟化)、para virtualization(并行虚拟化)。由于本文讨论影子页表,因此只针对内存进行考虑,影子页表是完全虚拟化的做法,所谓完全虚拟化,是指客户机操作系统不感知自身处于虚拟环境,因 阅读全文
posted @ 2017-11-19 17:11 miao_zheng 阅读(5245) 评论(0) 推荐(0) 编辑
摘要: 最近在看Xen在2003年发表在sosp上的论文《Xen and the Art of Virtualization》,中途遇到一些不理解的技术点,在网络上查找相关资料,发现大多数人都只是介绍了一些Xen的历史和相关概念,对底层实现方案几乎没有涉及,少有的几篇博客虽然介绍了一些内容,但是我个人觉得很 阅读全文
posted @ 2017-06-22 21:56 miao_zheng 阅读(3873) 评论(0) 推荐(0) 编辑
摘要: 本文将以ucore为例,介绍一下从系统上电开始,到第一个用户进程的启动过程。这个过程是非常复杂和琐碎的,如果读者是刚刚接触操作系统,有些部分我可能不会介绍的十分详细,读者可以自行Google查阅不懂的部分,最好还是在理解理论的基础上自己做一些实验。实验用的硬件平台是x86架构(用qemu模拟的),实 阅读全文
posted @ 2017-06-20 17:34 miao_zheng 阅读(1272) 评论(0) 推荐(0) 编辑
摘要: 设计动机以及基本框架 在现实应用中,我们有这样一种需求,就是选取出当前队列中优先级最高的元素,比如操作系统中的线程调度,当前线程时间片用完的时候,需要从就绪队列中选出优先级最高的线程,对于一个无序队列,我们需要遍历所有的元素,那么时间复杂度就是O(n)。研究优先级队列的目的就是找到一种数据结构和对应 阅读全文
posted @ 2017-06-10 09:08 miao_zheng 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 串的模式匹配可以说是非常常见的算法了,我们首先分析最简单易懂的蛮力算法(Brute Force,简称BF),然后分析蛮力算法存在的问题以及如何改进,引出KMP算法,然后对KMP算法进行分析,关于蛮力算法和KMP算法我都会给出代码,这些代码都是我经过测试可以正确执行的,当然如果有疏漏或者没有考虑到的地 阅读全文
posted @ 2017-06-08 22:46 miao_zheng 阅读(1414) 评论(0) 推荐(0) 编辑
摘要: 最近在leetcode和牛客网上刷题,经常碰到一些和动态规划相关的问题,虽然动态规划的思路貌似不难,但是在具体的应用场景上却总是困扰我,很难巧妙结合,决定写一篇博客来记录下我对动态规划的理解和遇到的各种问题以及如果将理论与实际编码结合。 这篇博客不是一次写成的,我会陆续将我遇到的、我认为有代表性的动 阅读全文
posted @ 2017-06-02 22:48 miao_zheng 阅读(524) 评论(0) 推荐(0) 编辑