百科问答小站 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. 硬件资源:主要由对应的硬件驱动(包括驱动框架)负责分配,操作系统在其中只是作为一个中介的角色存在。




  

相关话题

  力挺 Linux 是一种怎样的体验? 
  是什么让 Ubuntu 选用 Qt 而不是 GTK? 
  为什么这么多人认为win7比win10好用? 
  如何看待开源计算器 Numworks 禁止安装第三方操作系统? 
  如果华为手机使用自己的操作系统,你会考虑买华为手机吗? 
  有没有什么办法可以让双系统同时运行? 
  Linode 里为什么 Ubuntu 最火呢? 
  为什么没有国产 Windows 的诞生? 
  如何看待今天(8.9)华为在广东东莞举行的2019年开发者大会上,正式发布全新分布式操作系统:鸿蒙!? 
  macOS 与 Windows 哪个更强,强在何处? 

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





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利