Andrew S. Tanenbaum, Jorrit N. Herder, and Herbert Bos

Vrije Universiteit, Amsterdam

Microkernels—long discarded as unacceptable because of their lower performance

compared with monolithic kernels—might be making a comeback in operating systems

due to their potentially higher reliability,which many researchers now regard as more

important than performance.

When was the last time your TV set crashed

or implored you to download some emergency

software update from the Web? After

all, unless it is an ancient set, it is just a computer

with a CPU, a big monitor, some analog

electronics for decoding radio signals, a couple of

peculiar I/O devices—a remote control, a built-in VCR

or DVD drive—and a boatload of software in ROM.

This rhetorical question points out a nasty little secret

that we in the computer industry do not like to discuss:

Why are TV sets, DVD recorders, MP3 players, cell

phones, and other software-laden electronic devices reliable

and secure but computers are not? Of course there

are many “reasons”—computers are flexible, users can

change the software, the IT industry is immature, and

so on—but as we move to an era in which the vast

majority of computer users are nontechnical people,

increasingly these seem like lame excuses to them.

What consumers expect from a computer is what they

expect from a TV set: You buy it, you plug it in, and it

works perfectly for the next 10 years. As IT professionals,

we need to take up this challenge and make computers

as reliable and secure as TV sets.

The worst offender when it comes to reliability and

security is the operating system. Although application

programs contain many flaws, if the operating system

were bug free, bugs in application programs could do

only limited damage, so we will focus here on operating

systems.

However, before getting into the details, a few words

about the relationship between reliability and security

are in order. Problems with each of these domains often

have the same root cause: bugs in the software. A buffer

overrun error can cause a system crash (reliability problem),

but it can also allow a cleverly written virus or

worm to take over the computer (security problem).

Although we focus primarily on reliability, improving

reliability can also improve security.

WHY ARE SYSTEMS UNRELIABLE?

Current operating systems have two characteristics

that make them unreliable and insecure: They are huge

and they have very poor fault isolation. The Linux kernel

has more than 2.5 million lines of code; the Windows

XP kernel is more than twice as large.

One study of software reliability showed that code

contains between six and 16 bugs per 1,000 lines of executable

code,1 while another study put the fault density

at two to 75 bugs per 1,000 lines of executable code,2

depending on module size

.................................

全文可以直接下载附件。。。。。。。。。。。。。。。

Can We Make Operating Systems Reliable and Secure?的更多相关文章

  1. 对Can We Make Operating Systems Reliable and Secure 的翻译

    摘要:微内核-相对于大内核(monolithic kernels)来说,由于它的 lower performance,长期以来被认为是不可接受的.而现在,由于它潜 在的高可靠性(higher reli ...

  2. Modern Operating Systems(Ⅰ)——2014.12.15

    进程   进程模型     进程就是一个正在执行的程序的实例  值得注意的是,若一个程序运行了两遍,则算作两个进程 创建进程 在通用系统中,有四种主要事件导致进程的创建 ①系统的初始化 ②执行了 正在 ...

  3. [No00003D]操作系统Operating Systems信号量的代码实现Coding Semaphore &死锁处理Deadlock

    操作系统Operating Systems信号量的代码实现Coding Semaphore &死锁处理Deadlock 可以操刀了—从纸上到实际 从Linux 0.11 那里学点东西… 读磁盘 ...

  4. [No00003C]操作系统Operating Systems进程同步与信号量Processes Synchronization and Semaphore

    操作系统Operating Systems进程同步与信号量Processes Synchronization and Semaphore 进程合作:多进程共同完成一个任务 从纸上到实际:生产者− − ...

  5. [No00003A]操作系统Operating Systems 内核级线程Kernel Threads内核级线程实现Create KernelThreads

    开始核心级线程 内核级线程对多核的支持怎么样? 和用户级相比,核心级线程有什么不同? ThreadCreate 是系统调用,内核管理TCB ,内核负责切换线程 如何让切换成型? − − 内核栈,TCB ...

  6. Operating Systems (COMP2006)

    Operating Systems (COMP2006) 1st Semester 2019Page 1, CRICOS Number: 00301JOperating Systems (COMP20 ...

  7. the virtual machine is configured for 64-bit guest operating systems

    Security--Virtualization--Inter(R) Virtualization Technolog 设置为enable 本机安装的是WIN 7 ,详细版本是:Windows 7 U ...

  8. Method of address space layout randomization for windows operating systems

    A system and method for address space layout randomization ("ASLR") for a Windows operatin ...

  9. CMPT 300 – Operating Systems

    Assignment 4 – Create Simple YetFunctional File SystemCMPT 300 – Operating SystemsPlease submit a zi ...

随机推荐

  1. Java编译与反编译

    Javac是一种编译器,它的作用是将符合Java语言规范的源代码转化成符合Java虚拟机规范的Java字节码. 一.编译过程 词法分析:找出源代码中的所有关键字,生成Token流 语法分析:检查Tok ...

  2. python之strip()小记

    描述 Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符. 语法 strip()方法语法: ...

  3. python网络编程-udp

    目录 1. 创建socket 2. udp网络程序-发送数据 3. udp网络程序-接收数据 4. python3中的编码转换 5. udp端口绑定 1. 创建socket 在 Python 中 使用 ...

  4. 元素的属性:client系列,scroll系列,offset系

    元素的属性 div.attributes 是所有标签属性构成的数组集合 dir.classList 是所有class名构成的数组集合 在classList的原型链上看一看到从 add()和remove ...

  5. Android Lifecycle使用

    引言 Lifecycle 是官方提供的架构组件之一,目前已经是稳定版本,Lifecycle 组件包括LifecycleOwner.LifecycleObserver.Lifecycle 组件是执行操作 ...

  6. jquery中each中使用break和continue

    在jquery中each中直接使用break或者continue会提示:必须在循环中使用.会报错不能直接使用. 但是,是不是就不能用呢,答案是的,但是换种方法可以达到相同的效果: 可以只用return ...

  7. JavaScript 中的相等操作符 ( 详解 [] == []、[] == ![]、{} == !{} )

    ECMAScript 中的相等操作符由两个等于号 ( == ) 表示,如果两个操作数相等,则返回 true. 相等操作符会先转换操作数(通常称为强制转型),然后比较它们的相等性. 在转换不同的数据类型 ...

  8. gulp简介

    简介 gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试.检查.合并.压缩.格式化.浏 ...

  9. 洛谷P4841 城市规划(生成函数 多项式求逆)

    题意 链接 Sol Orz yyb 一开始想的是直接设\(f_i\)表示\(i\)个点的无向联通图个数,枚举最后一个联通块转移,发现有一种情况转移不到... 正解是先设\(g(n)\)表示\(n\)个 ...

  10. [ORACLE]ORA-28002 The password will expire within 7 days.将不能登录系统

    错误“ORA-28002 The password will expire within 7 days.  Cannot logon to the database“当在进程调度器上运行AE程序可能遇 ...