【操作系统】操作系统的设计与实现
设计目标
系统设计的首要问题是定义目标和规范。
从高层来说,系统设计取决于所选硬件和系统类型:批处理、分时、单用户、多用户、分布式、实时或通用。
除了最高设计层外,需求可能很难说清,但需求可以分为两类:用户目标和系统目标。
用户要求系统具有一定的优良性能:系统应该易于学习和使用、可靠、安全和快速。
研发人员为设计、创建、维护、运行操作系统,也可以定义一组相似要求:系统应该易于设计、实现和维护,也应该灵活、可靠、正确且高效。
操作系统的分析与设计是一个很有创意的工作,软件工程里的软件需求分析与系统设计的基本理论对此会有一些启发。
机制与策略
机制决定如何做,策略决定做什么。
OS设计的一个重要原则是机制与策略分离,这对系统的灵活性很重要。
微内核OS通过实现一组基本且简单的模块,将机制与策略的分离用到了机制。
对于所有的资源分配,策略决定非常重要。只要决定是否分配资源,就应该做出策略决定。只要问题是怎么做而不是做什么,就要由机制来决定。
实现
在OS被设计以后,就应该被实现。
OS由很多程序构成,且由许多程序员在很长时间内编写,因此很难形成通用原则。
早期的OS是用汇编语言写的,现在大多都用C/C++配汇编语言写的。
实际上,OS可用多种语言编写:内核底层可以用汇编语言写而高层函数用C,应用程序可以用C/C++或者解释性脚本语言如Python甚至Shell脚本。
使用高级语言或至少系统实现语言来实现OS的优势在于&#x
【操作系统】操作系统的设计与实现相关推荐
- linux课程设计死锁避免,linux操作系统课程设计—车辆死锁.doc
linux操作系统课程设计-车辆死锁.doc 键入文字"操作系统原理"课程设计BX090709吴沛儒操作系统原理课程设计报告姓名吴沛儒班级BX0907学号9指导老师胡静二〇一一年十 ...
- python枪战项目计划书_燕山大学操作系统课程设计计划书
燕山大学操作系统课程设计计划书 燕山大学课程设计计划书 课程设计名称:操作系统 题目:多道程序缓冲区协同操作 年级:2016级 开发小组名称:WWW. 小组负责人: 课题组成员: 姓名 学号 班级 分 ...
- python操作系统课程设计_操作系统课程设计.pdf
计算机科学与通信工程学院 操作系统课程设计报告 题目:linux系统下实现PV 操作 班级: 软件工程1401 姓名: 吴帅帅 学号: 3140608020 指导老师: 牛德姣 2016 年12 月2 ...
- 华中科技大学计算机课程设计,华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc...
<华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<华中科技大学计算机学院操作系统课程设计资料报 ...
- 操作系统-1.设计的原则
由于操作系统到处都是算法和设计,为了能快速的学习和掌握,我选择站在操作系统设计者的角度去学习他,一般学习,一遍猜想,然后把自己的想法和操作系统的设计内容做对比,分析优劣. 而要站在操作系统设计者的角度 ...
- 图解linux内核设计艺术,Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理...
Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理 作者:新设计团队 出版日期:2011年05月 文件大小:29.01M 支持设备: ¥6.00在线试读 适用客户端: 言商书局 iPa ...
- 华中科技大学计算机课程设计,华中科技大学计算机学院操作系统课程设计报告[1] (精选可编辑)...
<华中科技大学计算机学院操作系统课程设计报告[1] (精选可编辑)>由会员分享,可在线阅读,更多相关<华中科技大学计算机学院操作系统课程设计报告[1] (精选可编辑)(27页珍藏版) ...
- 操作系统课程设计geekos project1-3
概述 实验环境 GeekOS-0.3.0 Bochs和Vmware介绍 开发过程 编译运行 配置文件 前导知识 一.全局描述符表GDT(Global Descriptor Table) 二.段选择子( ...
- 操作系统课程设计报告2021-2022——pintos
操作系统课程设计报告 2021-2022 目录 操作系统课程设计报告 2021-2022 第一章 实验项目介绍 环境配置 ( 一 ). Ubuntu 服务器搭建 图形界面搭建 ( 二 ). Pinto ...
- 【操作系统】《2023 南京大学 “操作系统:设计与实现” (蒋炎岩)》- 知识点目录
<2023 南京大学 "操作系统:设计与实现" (蒋炎岩)> 1. 操作系统概述 (操作系统的历史:学习建议) [南京大学2023操作系统-P1] 1.1 Z3库:解决 ...
最新文章
- linux哪些文件被更新,Linux:如何確定文件是否已被其他進程更新?
- Android Studio你不知道的调试技巧
- Linux学习笔记(知识点总结)
- sftp shell 批量上传文件_shell脚本进行sftp、ftp文件批量上传与下载
- 创业要拿出独门秘籍才行
- 一般服务器崩了要多久能修复,阴阳师服务器崩了修复了吗?阴阳师最新4月15日更新内容...
- 如何处理Marketing Cloud OData服务的错误消息
- java对象内存模型_Java对象的内存模型
- vue仿微博评论回复_Vue之 3.0升级
- [转]SQL Server 2005报表服务入门(一)
- Android广播时间——实现强制下线功能
- Silverlight中的ControlTemplate
- Social Media附加价值开发的四大模式
- 用c语言写贪吃蛇(简易)(适用初学者)(保姆级)
- 手机麦克风结构原理图_麦克风的分类和工作原理
- android 华为 imei,华为手机怎么查看IMEI码?华为手机查询IMEI串号两种方法,华为imei...
- Code For Better 谷歌开发者之声——谷歌Web工具包(GWT)
- C++ 多线程CreateThread LPVOIDlpParameter传递多个参数
- word文档单独删除或修改首页或某一页的页眉页脚及其下划线
- 笔记本上怎么怎么暂停cmd打印窗口
热门文章
- mysql10.3修改默认存储路径
- P4 类、对象、类成员简介
- 关于(int argc char **argv)
- 如何在android模拟器中安装apk
- [UVA315]Network(tarjan, 求割点)
- Java运行原理研究(未完待续)
- ORACLE 进入sqlplus的协议适配器错误
- hdu 1257 最少拦截系统 (DP)
- MySQL各个版本区别
- Can not find the tag library descriptor for http://java.sun.com/jsp/jstl/core