百科问答小站 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更新后无法启动时你的心情怎样、第一步怎么做? 
  Linux 为什么没发展成 macOS 或者 Windows 那样的大众图形化操作系统? 
  没有ESP分区或EFI分区也可以正常启动系统吗? 
  为什么总有人极力推荐使用命令行操作而非图形界面? 
  为什么没有国产 Windows 的诞生? 
  为什么总有人极力推荐使用命令行操作而非图形界面? 
  有大神研究过华为 P40 上的鸿蒙 OS 2.0 吗?事实它到底是个全新的自主操作系统还是个套壳安卓? 
  如果计算机没有浮点运算能力,系统能正常启动吗? 
  为什么win10不出一个mini.iso版本的镜像,安装过程实时在线下载? 
  操作系统中到底是谁分配的资源? 

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





© 2024-05-17 - tinynew.org. All Rights Reserved.
© 2024-05-17 - tinynew.org. 保留所有权利