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

本文详细探讨了操作系统如何通过层次结构管理和优化硬件资源,包括CPU、I/O设备和内存的充分利用,以及多线程设计和线程安全。通过对CPU的多任务调度、I/O设备的驱动管理、内存的虚拟地址设计以及多线程模型的分析,展示了操作系统在提高系统性能和确保数据安全方面的关键作用。
摘要由CSDN通过智能技术生成

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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值