操作系统
文章平均质量分 54
刘秋杉
区块链资深研究者
展开
-
基于r-Kernel的LiteOS操作系统
LiteOS是应用于资源受限的传感网络的一种基于线程的类UNIX操作系统。它采用r-kernel内核,r-kernel有三个特征翻译 2014-04-21 21:15:21 · 6137 阅读 · 0 评论 -
seL4的编译和运行(OdroidXU3)
seL4支持平台seL4所在的git如下: https://github.com/seL4/seL4.git不过我们编译和运行seL4一般不只是用这个git,而是借助seL4test(seL4的测试框架): https://github.com/seL4/sel4test.gitseL4提供了各种平台上的配置文件,也提供了用于测试seL4的app。seL4指定了可以运行的平台,按照下面的匹配来编原创 2015-07-22 16:03:14 · 7881 阅读 · 7 评论 -
开源微内核seL4
越大的系统潜在的bug就越多,所以微内核在减少bug方面很有优势,seL4是世界上最小的内核之一。 如今,安全越来越成为一个新兴嵌入式设备的关键要素,如智能手机。原创 2015-07-10 11:15:56 · 14146 阅读 · 0 评论 -
Parrot源码分析之海贼王
我们的目的是找到speedup-example在使用Parrot加速的原因,如果只说它源于Context Switch的减少,有点简单了,它到底为什么减少了?除了Context Switch外是否还有其他的performance counter也对提速有帮助?这些都是值得去思考的问题。先来看一下我们用来探索Parrot奥秘的程序speedup-example.cpp。前言:RR原创 2014-11-18 21:54:07 · 3896 阅读 · 12 评论 -
线程调度策略SCHED_RR(轮转法)和SCHED_FIFO(先进先出)之对比
我们在用pthread创建线程时,可以指定调度策略policy——SCHED_OTHER(默认)、SCHED_RR和SCHED_FIFO。这里TALK一下两个实时策略——SCHED_RR和SCHED_FIFO。先看一下效果,我们创建了四个子线程,指定最高优先级(针对特定策略):SCHED_RRSCHED_FIFO对相同优先级的任务原创 2014-06-22 11:35:36 · 11737 阅读 · 2 评论 -
详解clone函数
我们都知道linux中创建新进程是系统调用fork,但实际上fork是clone功能的一部分,clone和fork的主要区别是传递了几个参数。clone隶属于libc,它的意义就是实现线程。看一下clone函数:原创 2014-06-22 04:09:58 · 15083 阅读 · 1 评论 -
Linux下的常用性能查询命令top、vmstat、gprof、pidstat之对比
(1)查看各个CPU核的使用情况sudo top -d 1进入之后,按1,会出现下面的CPU使用情况,其中us列反映了各个CPU核的使用情况,百分比大说明该核在进行紧张的任务。(2)查看哪个进程在哪个CPU核上运行sudo top -d 1进入之后,依次按f、j和空格,会出现如下(其中P列指示的是该进程最近使用的CPU核,如进程mencoder的P列为7,则表示原创 2014-07-03 23:05:56 · 6679 阅读 · 0 评论 -
RR调度(Round-robin scheduling)简介
在RR调度策略下,一个线程会一直执行,直到:自愿放弃控制权被更高优先级的线程抢占时间片用完如下图所示,A在用完自己的时间片后,将CPU执行权让给线程B,于是A离开Read队列,而B进入Read队列。一旦线程的时间片用完,该线程就会被下一个READ的具有同等优先级的线程给抢占。一个时间片通常是一个时钟周期的4倍。原创 2014-06-29 03:50:25 · 9707 阅读 · 0 评论 -
Preemption Context Switches 和 Synchronization Context Switches
Preemption Context Switches度量的是操作系统任务调度器将处理器中的一个正在运行的线程切换为另一个更高优先级的线程的次数,即发生抢占的次数。Synchronization context switches度量的是由于显式调用线程同步API而发生线程切换的次数,如给多线程共享的变量加锁,多线程共同去修改,有些线程要阻塞在lock,直至占用锁的线程释放lock,这个度量反映原创 2014-06-19 00:17:11 · 3586 阅读 · 1 评论 -
地址映象和变换(一)之主存虚存
地址映象:是将每个虚存单元按某种规则装入实存,即建立多用户虚地址与实存地址之间的对应关系。地址变换:是程序按照这种映象关系装入实存后,在执行时,多用户虚地址如何变换成对应的实存地址。页面争用(实页冲突):发生两个以上的虚页想要进入主存中同一个页面位置的现象。原创 2014-06-13 13:46:57 · 3554 阅读 · 0 评论 -
页式管理
页式管理,是将虚拟地址空间划分为一个一个固定大小的块(称作虚页),同时也让实际地址空间也划分为一个一个同样大小的页(称作实页)。原创 2014-06-13 10:45:40 · 2473 阅读 · 0 评论 -
找BUG
近日在写一个简易的操作系统,经常受到bug的偷袭,由于开发OS的特殊性,一些常规的debug手段用不上,于是打算记录下自己的debug过程,用于交流。Problem:在做图层叠加时,引入结构体SHTCTL进行各个图层的管理,但遭遇了黑屏,原因可能来自于图层管理模块、内存管理模块或其他未知原因。Solution:恢复到上次不黑屏的版本(即去掉图层管理模块),果然可以进行显示。在此基础原创 2014-05-27 20:26:37 · 1368 阅读 · 0 评论 -
FreeBSD的包管理
FreeBSD下安装软件不是Ubuntu的apt-get,也不是Gentoo的portage。有三种方法:packageports自主进行源码编译安装原创 2014-06-09 22:03:30 · 3275 阅读 · 0 评论 -
解决Ubuntu下安装VMware错误could not open /dev/vmmon
在安装VMware并启动新建的虚拟系统时,会出现错误could not open /dev/vmmon。一般情况下,这是由于ubuntu系统gcc版本的问题。我机器上是gcc-4.5,于是我将其修改为gcc-4.6,方法如下原创 2014-06-09 01:31:02 · 7281 阅读 · 0 评论