百科问答小站 logo
百科问答小站 font logo



操作系统中到底是谁分配的资源? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

有人可能觉得这个答案比较不符合直觉或者教科书,那么在反对之前,先思考一下:

1. 如果没有驱动,硬件资源还存在吗?
2. 驱动是否是操作系统必需的一部分?

-----------------------原回答-----------------------

首先,得定义什么是资源。民用设备上的资源可能有:

1. 硬件资源:外设资源(键盘、鼠标、显卡……);总线资源(PCI/USB……);CPU资源(时钟、中断、CPU时间……)……
2. 软件资源:内存、信号量、地址空间、管道、共享内存……

对于现代民用操作系统来说,操作系统的主要意义可以总结为两句话:

1. 隔离任务(进程)间的数据,使其不能互相直接访问;
2. 授权任务(进程)间的通信,使其能够互相访问;


从这里可以看出来,操作系统的主要功能跟“资源分配”并不搭边。操作系统能直接掌控的“资源”主要都是软件资源,这些资源包括:

1、给进程分配内存资源和地址空间;
2、允许进程调度(信号量);
3、允许进程间通信。


一般来说,操作系统直接分配的资源只有这类软件资源,这些资源对于普通用户来说,其实并不是很直观的表现出来。对于普通用户可见的硬件资源,主要由驱动负责管理和分配,操作系统的主要角色是前面提到的“授权任务(进程)间的通信,使其能够互相访问”,操作系统起到的是一个中介的作用。

某个游戏希望显示一个图像,于是通过操作系统的进程间通信机制(某些API)去访问显示框架的API,最终把图像输出在屏幕上。也就是说,真正负责分配操作硬件工作的,其实是驱动,或者说,是驱动框架。操作系统只是负责传递用户任务(进程)的请求,操作系统对这些请求进行封装和隔离。

从宏观的角度上看,操作系统确实有能力决定某个进程是否有权限去访问某个硬件资源,但要说“分配”这个行为,主要还是驱动来做的,操作系统只是对驱动提供的资源接口进行封装和编号

当然,在没有驱动的时代,用户任务确实可以直接操作硬件,比如DOS时代的一些软件(游戏),都是自带驱动的,但现代操作系统已经基本上都实现了隔离。


所以,准确的说:

1. 软件资源:主要由操作系统负责分配和控制;
2. 硬件资源:主要由对应的硬件驱动(包括驱动框架)负责分配,操作系统在其中只是作为一个中介的角色存在。




  

相关话题

  微软宣布 Windows 11 全部免费升级,还有哪些值得关注的信息? 
  为什么没有普及128位操纵系统的计算机? 
  为什么不同系统不能兼容同一个已编译的可执行二进制文件? 
  如何看待Windows系统性能不及国产麒麟操作系统? 
  为什么现在没有人开发新的OS内核? 
  如何看待Windows系统性能不及国产麒麟操作系统? 
  Linus Torvalds 开过哪些著名的嘴炮? 
  elasticsearch 部署在windows, 还是在linux? 
  操作系统能否知道自己处于虚拟机中? 
  Linux 的核心思想是什么? 

前一个讨论
程序中的堆和栈大小是动态变化的,还是相对固定的?
下一个讨论
为什么坐动车需要二次检票?





© 2025-02-16 - tinynew.org. All Rights Reserved.
© 2025-02-16 - tinynew.org. 保留所有权利