硬件资源分配

计算机名词

资源包括硬件资源和软件资源,是指执行一个用户程序所需要的全部硬件设备、软件设施和数据。这里主要介绍硬件资源分配相关内容。

硬件资源中最主要的资源是计算资源和存储资源。除了计算资源和内存资源的管理以外,操作系统对其他资源都通过I/O 来管理。
计算资源分配
计算资源即CPU(Central Processing Unit,中央处理单元)。主流的计算机通常有一个或多个CPU,或者一个CPU 中有多个核(即多核CPU)。从操作系统的角度来看,有多个CPU 或一个多核CPU 意味着可以同时执行多个任务。所以,操作系统必须合理地安排和调度任务,使得多个CPU 或多核尽可能地利用起来,避免出现竞争或闲置的情形。在支持多任务并发的操作系统中,这一职责称为任务调度。在现代操作系统中,由于任务是由进程线程来完成的,操作系统的这部分功能也称为进程调度或线程调度。因为任务的数量可能超过CPU 或核的数量,所以,多个任务可能共用同一个CPU 或核,这就需要有一种硬件机制能够让操作系统在不同的任务之间实现切换,这是任务调度的硬件基础。通常,计算机提供的时钟中断可以让操作系统很方便地做到这一点,也就是说,每隔一定的时间,硬件系统会触发一个中断;操作系统截获此中断,按照某种算法暂停当前正在执行的任务,并选择一个新的任务,从而实现任务的切换;到下一个时钟中断到来时,再继续这样的切换过程。因此,多个任务可以在一个CPU 或核中被轮流执行。操作系统可以设定时钟中断间隔的长度,也可以选择不同的算法来安排这些任务被先后执行,这样就形成了各种不同的调度算法。
存储资源分配
存储资源通常包括内存(RAM,随机访问存储器)和外存(也称为辅助存储器)。由于外存是通过标准的I/O(输入/输出)来管理的,而内存是CPU 直接通过系统总线来访问的,所以,我们将在讨论输入/输出的时候再介绍外存,仅考虑内存资源的管理。内存是CPU 执行一个任务的物质基础,CPU 内部的寄存器具备计算的能力。除了寄存器(其本身也是一种存储资源)以外,数据的来源是系统内存。在现代操作系统中,每个任务都有其独立的内存空间,从而避免任务之间产生不必要的干扰,所以操作系统有责任为每个任务提供相对独立的内存空间。把连续编址的物理内存划分成独立的内存空间,典型的做法是段式内存寻址和页式虚拟内存管理。不同的硬件体系结构可能支持不同的方案。Intel x86体系结构同时支持段式寻址和页式虚拟内存映射,但是,可在Intel x86 上运行的操作系统几乎都选择了虚拟内存映射作为内存管理的硬件基础。WindowsLinux便是典型的例子。
在支持多任务的系统中,若所有任务的内存需求加起来的总量超过了当前系统的物理内存总量,那么,系统要么停掉一些任务,要么把一些任务转移到外存(如磁盘)中,以后当内存空闲时再把这些任务转换回来。或者系统有选择地把部分不常用的内存转换到外存,并且根据适当的规则将来再慢慢地转换回来。虚拟内存的映射以及物理内存不足时的换出和换入操作,这都是操作系统管理内存资源的重要任务。前者依赖于硬件提供的机制,而后者则更多地由操作系统自己来控制。
I/O设备的资源分配
除了计算资源和内存资源的管理以外,操作系统对其他资源都通过I/O 来管理。例如,上面提到的外存资源,像磁盘,在现代计算机中是不可或缺的部件;另外,键盘鼠标通常是标准的输入设备,而显示器打印机往往是标准的输出设备。操作系统为了跟I/O 设备打交道,需要三方面的技术保障:CPU 通过特定的指令来控制I/O 设备,I/O 设备通知CPU 发生了特定的事情,以及在系统主内存和设备之间传输数据。
通常,CPU 直接访问设备的寄存器来操作一个设备,在Intel x86 系统上,CPU 通过in和out 指令能够做到这一点。设备寄存器是另一个地址空间,CPU 通过I/O 端口(I/O port)来访问它们。在现代计算机中,I/O 端口的分配跟软件硬件都有关系。不同的硬件设备会使用不同的端口编号,现代的设备大都可以通过软件方式来设置其端口号,而过去一些老的设备可能需要通过硬件跳线来改变端口号的设置。对硬件设备进行恰当的设置,也是操作系统管理硬件设备的任务之一。另外,CPU 怎么知道或检测设备的工作状态呢?一种做法是,通过不停地查询设备的状态寄存器来获知其工作状态;但是,更有效的做法是,当设备的状态发生变化时,它能够主动地通知CPU,从而操作系统可以采取相应的措施。这后者即是设备中断机制。比如说,当键盘设备接收到按键动作时,它产生一个中断,告诉CPU(和操作系统),当前哪个键被按下了。中断也有编号,中断的编号被视为系统全局资源,在早期计算机的中断控制器中,不同设备的中断号不能冲突,否则设备无法正常工作。现代计算机通常允许多个设备共享中断号,操作系统和设备驱动程序可以协商设备的中断号。
计算机的计算处理能力往往仅限于在CPU 内部寄存器和主内存之间进行,但是为了实现基本算术计算以外的其他各种能力,通常有必要让设备中的数据也参与到计算中来,所以,在设备与CPU 寄存器或主内存之间传输数据往往是必要的功能。例如,计算机通过磁盘设备可以实现永久存储,通过显示控制器实现彩色显示甚至三维模拟。实现数据传输的方法有多种,如果设备本身的数据量很小,则可以直接通过in指令来读取设备中的数据,或通过out 指令输出到设备中。或者也可以映射一段地址范围到设备中,这样,当CPU 访问这块地址范围时,实际上是在访问设备的内存,而不是系统的主内存。另外一种适合于大块数据传输的技术是DMA(Direct Memory Access,直接内存访问)。像硬盘控制器网络控制器就通常采用DMA方式来传输数据,CPU只须设置好数据传输的方向、位置、数量等信息,就可以启动DMA传输了。DMA 传输可以与CPU 计算同时进行,但是DMA 使用的总线不能与CPU 使用的发生冲突,它可以趁CPU 不用总线的时刻来传送数据,也可能会因此而阻塞CPU 指令的执行。DMA 传输影响CPU 执行指令的程度取决于DMA 控制器的传输策略。
从操作系统的角度来看,考虑到I/O 设备的多样性和出现新设备的可能性,操作系统有必要定义一个框架来容纳各种各样的I/O 设备,并且允许操作系统发布之后还能够为新的设备提供支持。所以,除了专用操作系统以外,现代操作系统都会提供一个I/O 模型,允许设备厂商按照此模型编写设备驱动程序(Device Driver),并加载到操作系统中。I/O模型通常具有广泛的适用性,能够支持各种类型的设备,包括对硬件设备的控制能力,以及对数据传输的支持。可以这么来概括I/O 模型,它对下提供了控制硬件设备的能力,对上为应用程序访问硬件提供了一个标准接口,同时I/O 模型也必须能够让操作系统有效地管理设备驱动程序。在Windows 系统中,第三方厂商可以使用Windows 的I/O 模型来编写设备驱动程序。Windows 本身在发行时,已经随带了大量主流设备的驱动程序,所以,Windows 系统在安装阶段可以自动将识别出来的设备的驱动程序安装到系统中。因此,用户并不需要手工下载或安装这些驱动程序。另一方面,由于驱动程序需要直接访问硬件设备,它执行的许多指令(包括in 和out)是特权指令,所以,驱动程序对于系统的稳定性和安全性有至关重要的影响,操作系统有必要对其执行严格的筛查措施,以避免恶意代码趁机闯入系统中。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市