先阅读计算机硬件结构历史简介:

https://blog.csdn.net/starcraft501/article/details/100806378

操作系统层次结构

操作系统软件可以分为两部分:1. 平台型,包括内核,驱动,以及系统工具 2. 开发环境型,包括编译器,汇编器,链接器和运行库

计算机软件,包括系统软件,通常按层次结构设计,这种方式可以通过新加层来解决任何问题。(如虚拟机技术,在硬件和操作系统之间增加了一层虚拟层,使得一个计算机上可以同时运行多个操作系统)

Any problem in computer science can be solved by another layer of indirection.

底层提供接口,上层使用接口,接口尽量稳定并保持向后兼容。除了最底层的硬件和最上层的应用程序,都叫中间层; 由于中间层的存在,使得应用程序和硬件保持相对独立,应用程序可以在同一架构的芯片系列和操作系统(向后兼容设计)升级后运行,也可以很方便的移植到不同的平台,节省了大量应用程序的开发适配时间。

计算机系统软件体系结构

除硬件外,计算机系统主要分为用户态和内核态两个层次。应用程序,运行库都属于用户态程序:内核,驱动,系统调用都属于内核态程序

用       |应用程序:浏览器 播放器 字处理软件 邮箱客户端 图片浏览器 |  开发工具:编译器,汇编器,调试器,第三方库

户       |-----------应用程序API接口-----------

态        |运行库(linux用的是基于POSIX标准的Glibc),封装系统调用,给应用程序提供完整的功能,比如C语言的fread

--------|----------系统调用(linux,用户程序或运行库使用int 0x80作为软中断,进入内核态执行系统调用)-----------

内核态|操作系统内核,驱动(关注硬件规格,发挥硬件的最大能力, 将设备映射为/dev下文件,供应用软件操作)

|----------硬件规格接口----------(定义驱动程序如何操作硬件,比如CPU指令手册)

|硬件

可以看出,操作系统的一个功能是给上层提供抽象的接口,不感知硬件差异,另一个功能是管理硬件资源,能够充分利用硬件能力,在更短时间内处理更多的任务。下面重点讲一下操作系统充分利用硬件能力的设计。

充分利用计算机硬件性能

  • 对CPU的充分利用
  • 对I/O设备的充分利用
  • 对内存的充分利用
  • 多线程的设计及线程安全

1. 对CPU的充分利用

如果一个CPU只能运行一个程序,那么当程序在执行磁盘I/O时,CPU是空闲的。

最初始的优化方法:

多道程序设计 multiprogramming, 监控程序发现CPU空闲时就运行其他等待运行的程序;缺点是程序没有优先级,正在运行的程序不会主动让出CPU,也不能被抢占CPU,导致一些紧急的任务不能及时的运行。

改善后的方法:

Time-Sharing system,协作式分时系统,每个程序运行一段时间后主动让出CPU,使得其他程序有机会运行。缺点:如果一个重度计算的或恶意的程序一直占用CPU,那么其他程序还是没有机会运行; 死循环会导致系统死机。

当前的方法:

Multi-tasking, 多任务系统,操作系统接管了所有的硬件资源,运行在一个受硬件保护的级别(内核态)。所有的应用程序都以进程的方式运行在用户态(比内核态级别低),每个进程都有独立的地址空间(虚拟地址空间0~4G),映射到不同的物理地址空间,使得进程地址空间相互隔离,不会发生地址冲突的情况。CPU的时间片由操作系统根据当前进程优先级统一分配给某个进程,当进程运行超出时间片,操作系统就暂定执行该进程,将时间片分配给其他等待CPU的进程,这种方式是抢占式分配(preemptive), 操作系统可以强制剥夺CPU资源并分配给它认为目前最需要的进程。由于每个时间片很短,CPU在多个进程间快速切换,从用户程序的角度来看,是很多进程同时运行,支持多任务。目前所有流行的操作系统都时这种方式,包括UNIX,linux, Windows, Mac OS X.

2. I/O驱动利用设备

操作系统对硬件进行管理和抽象,应用程序不需要关心具体的硬件型号,它们需要一个统一的硬件访问接口。比如读写硬件端口,处理硬件中断,这些都交给操作系统来完成, 也是硬件驱动(device driver)程序来完成。驱动按照系统提供的接口和框架开发,与内核一起运行在内核态,以模块的形式呈现,可以方便的

操作系统软件层次结构及硬件资源管理能力设计相关推荐

  1. 正版软件 |Windows 10 家庭版操作系统软件 终身授权

    正版Windows 10 家庭版操作系统,一款非常适合家庭用户的操作系统,它综合了多个功能和特性,提供更好的用户体验和更高的可靠性,是完美地适应于家庭和教育高校等各种使用场景. Windows 10 ...

  2. Windows Server基础架构云参考架构:硬件之上的设计

    作者 王枫 发布于2014年1月27日 综述 毫无疑问,移动互联网.社交网络.大数据和云计算已经成为IT发展的四个大的趋势.其中云计算又为前三个提供了一个理想的平台.今天不仅互联网公司,很多传统行业的 ...

  3. 设备独立的操作系统软件

    一般来说,设备驱动程序并不直接从用户处接收I/O请求,而是通过另外一层中介获得用户请求.这层介于设备驱动程序与用户程序之间的中介就是设备独立的操作系统软件.操作系统在设计时之所以有这层软件是因为I/O ...

  4. 学习笔记2011.11.8-张飞-硬件开发与设计实战-门控开关设计

    文章目录 项目开发步骤 项目一:门控开关设计 项目背景 项目评估 原理图 原理图分析+元器件原理分析 研发测试标准 1. 二极管 2. 电阻 3.全桥整流滤波 4.电容(类比水缸) 项目开发步骤 项目 ...

  5. 微软服务器操作系统软件价格,供应微软服务器操作系统软件

    详细信息(供应微软服务器操作系统软件) Windows Server 2008是微软*新一个服务器操作系统的名称,它继承 Windows Server 2003.Windows Server 2008 ...

  6. 【正版软件】Windows 11/10 专业工作站版操作系统软件 终身使用,支持迁移。

    使用人群:数据科学家.CAD 专业人员.研究人员.媒体制作团队.平面设计师和动画师 Windows 11/10 专业工作站版操作系统软件,专为具有高级工作负载和数据需求的人设计. Windows 11 ...

  7. 织梦蓝色简洁大气电脑操作系统软件下载网站模板 带手机版

    介绍: 织梦蓝色简洁大气电脑操作系统软件下载网站模板 带手机版 织梦内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,电脑操作系统.windows系统软件.软件下载类的网站都可以用该模板. ...

  8. Linux之硬件资源管理

    ------·今天距2021年271天·------ 这是ITester软件测试小栈第107次推文 在上一篇Linux系列文章:Linux之vi 文本编辑命令,主要介绍了常用的vi文本编辑命令.以下, ...

  9. 【麒麟操作系统软件商店老是闪退?--麒麟系统软件商店卸载与重装(小白教程)】

    麒麟操作系统软件商店老是闪退?–麒麟系统软件商店卸载与重装 1.打开终端 快捷键: CTRL+Alt+T 或者鼠标右键->打开终端 终端界面,在这里输入以下命令 2.麒麟软件商店卸载 apt-g ...

最新文章

  1. 用JQuery模仿淘宝的图片显示效果
  2. nrf52840 gpiote如何配置中断输入_51单片机外部中断点亮LED
  3. 【OS学习笔记】五 VirtualBox的下载、安装和配置
  4. curl 常用的命令
  5. ZooKeeper Internals -- ZooKeeper内部工作方式
  6. springboot酒店管理信息系统答辩PPT模板
  7. Windows 10一周年更新版本号将锁定为Build 14393
  8. 当KPI说谎:数据科学错误的高昂代价
  9. 好玩好用的网站,不能错过!
  10. 修改this指向的方法
  11. 导航栏背景色、标题颜色以及返回键自定义
  12. 《麦肯锡教给我的写作武器》摘录
  13. 鸿蒙电视应用beta,华为鸿蒙 2.0 开发者公测版 Beta 3 更新:增加三个鸿蒙应用
  14. cad审图软件lisp_CAD审图标记最新版
  15. python中的pd进行数据处理
  16. 密度峰值聚类(Density Peak Cluster,DPC)——Python实现
  17. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: FUNCTION security.to_date does not exist
  18. Ubuntu - 安装字体(Source Code Pro)
  19. linux eval
  20. 【重磅】2017中国机器人产业发展报告权威发布,智能技术比肩欧美(2万字,57PDF)...

热门文章

  1. 量子计算机编程pdf,量子计算与量子计算机.pdf
  2. 地理信息系统应用于教育领域之查询功能
  3. WZOI-279进制转换
  4. Unity WebGL/WebPlayer与html通信对比,在html添加网页端按钮直接测试
  5. 免费的在线SVN存储库
  6. 【历史上的今天】10 月 2 日:ENIAC 计算机退休;贝尔德发明电视;香港科技大学办学
  7. 【面试必过系列】程序员简历就该这样写,美的Java面试题
  8. 微信公众号开发之关键词回复
  9. java面向对象(OOP)
  10. QT界面:tabWidget选项卡使用小结