操作系统功能

▶1.进程管理

简单地说,进程是程序的执行过程。程序是静态的,它仅仅包含描述算法的代码;进程是动态的,它包含了程序代码、数据和程序运行的状态等信息。进程管理的主要任务是对CPU资源进行分配,并对程序运行进行有效的控制和管理。

1)进程的状态及其变化

进程执行过程为"就绪→运行→等待"三个循环进行的状态。操作系统有多个进程请求执行时(如打开多个网页),每个进程进入"就绪"队列,操作系统按进程调度算法(如先来先服务FIFO、时间片轮转、优先级调度等)选择下一个马上要执行的就绪进程,并分配就绪进程一个几十毫秒(与操作系统有关)的时间片,并为它分配内存空间等资源。上一个运行进程退出后,就绪进程进入"运行"状态。目前CPU工作频率为GHz级,1ns最少可执行1~4条指令(与CPU频率、内核数量等有关),在10多个毫秒的时间片里,CPU可以执行数万条机器指令。CPU通过内部硬件中断信号来指示时间片的结束,时间片到点后,进程将控制权交还操作系统,进程必须暂时退出"运行"状态,进入"就绪"队列或"等待"或"完成"状态。这时操作系统分配下一个就绪进程进入运行状态。以上过程称为进程切换。进程结束时(如关闭某个程序),操作系统会立即撤销该进程,并及时回收该进程占用的软件资源(如程序控制块、动态链接库)和硬件资源(如CPU、内存等)。

2)进程同步

进程对共享资源(如CPU)不允许同时访问,这称为进程互斥,以互斥关系使用的共享资源称为临界资源。为了保证进程能够有序执行,就必须进行进程同步。进程同步有两种方式:一是进程互斥方式,即进程对临界资源进行访问时,互斥机制为临界资源设置一把锁;锁打开时,进程可以对临界资源进行访问,锁关闭时禁止进程访问该临界资源。二是空闲让进,忙则等待,即临界资源没有进程使用时,可让进程申请进入临界区;如果已有进程进入临界区,其他试图进入临界区的进程都必须等待。

3)Windows进程管理

为了跟踪所有进程,Windows在内存中建立了一个进程表。每当有程序请求执行时,操作系统就在进程表中添加一个新的表项,这个表项称为PCB(程序控制块)。PCB中包含了进程的描述信息和控制信息。进程结束后,系统收回PCB,该进程便消亡。在Windows系统中,每个进程都由程序段、数据段、PCB三部分组成。

▶2.存储管理

1)存储空间的组织

操作系统中,每个任务都有独立的内存空间,从而避免任务之间产生不必要的干扰。将物理内存划分成独立的内存空间,典型的做法是采用段式内存寻址和页式虚拟内存管理。页式存储解决了存储空间的碎片问题,但是也造成了程序分散存储在不连续的空间。x86体系结构支持段式寻址和虚拟内存映射,x86机器上运行的操作系统采用了虚拟内存映射为基础的页式存储方式,Windows和Linux就是典型的例子。

2)存储管理的主要工作

存储管理的主要工作为:一是为每个应用程序分配内存和回收内存空间;二是地址映射,就是将程序使用的逻辑地址映射成内存空间的物理地址;三是内存保护,当内存中有多个进程运行时,保证进程之间不会相互干扰,影响系统的稳定性;四是当某个程序的运行导致系统内存不足时,如何给用户提供虚拟内存(硬盘空间),使程序顺利执行,或者采用内存"覆盖"技术、内存"交换"技术运行程序。

3)虚拟内存技术

虚拟内存就是将硬盘空间拿来当内存使用,硬盘空间比内存大许多,有足够的空间用于虚拟内存;但是硬盘的运行速度(毫秒级)大大低于内存(纳秒级),所以虚拟内存的运行效率很低。这也反映了计算思维的一个基本原则,以时间换空间。

虚拟存储的理论依据是程序局部性原理:程序在运行过程中,在时间上,经常运行相同的指令和数据(如循环指令);在存储空间上,经常运行某一局部空间的指令和数据(如窗口显示)。虚拟存储技术是将程序所需的存储空间分成若干页,然后将常用页放在内存中,暂时不用的程序和数据放在外存中。当需要用到外存中的页时,再把它们调入到内存。

4)Windows虚拟地址空间

32位Windows系统的虚拟地址空间为4GB,这是一个线性地址的虚拟内存空间(即大于实际物理内存的空间),用户看到和接触到的都是该虚拟内存空间。利用虚拟地址不但能起到保护操作系统的效果(用户不能直接访问物理内存),更重要的是用户程序可以使用比实际物理内存更大的内存空间。用户在Windows中双击一个应用程序的图标后,Windows系统就为该应用程序创建一个进程,并且分配每个进程2GB(内存范围:0~2GB)的虚拟地址空间,这个2GB的地址空间用于存放程序代码、数据、堆栈、自由存储区;另外2GB的(内存范围:3~4GB)虚拟地址空间由操作系统控制使用。由于虚拟内存大于物理内存,因此它们之间需要进行内存页面映射和地址空间转换。

▶3,文件管理

文件是一组相关信息的集合。在计算机系统中,所有程序和数据都以文件的形式存放在计算机外部存储器(如硬盘、U盘等)上。例如,一个C源程序、一个Word文档、一张图片、一段视频、各种程序等都是文件。

1)Windows文件系统

操作系统中负责管理和存取文件的程序称为文件系统。Windows的文件系统有NTFS、FAT32等。在文件系统管理下,用户可以按照文件名查找文件和访问文件(打开、执行、删除等),而不必考虑文件如何存储、存储空间如何分配、文件目录如何建立、文件如何调入内存等问题。文件系统为用户提供了一个简单统一的文件管理方法。

文件名是文件管理的依据,文件名分为文件主名和扩展名两部分。文件主名由程序员或用户命名。文件主名一般用有意义的英文或中文词汇命名,以便识别。不同操作系统对文件命名的规则有所不同。例如Windows操作系统不区分文件名的大小写,所有文件名的在操作系统执行时,都会转换为大写字符。而有些操作系统区分文件名的大小写,如Linux操作系统中,test.txt、Test.txt、TEST.TXT被认为是3个不同文件。

文件的扩展名表示文件的类型,不同类型的文件处理方法不同。例如,在Windows系统中,扩展名.exe表示执行文件。用户不能随意更改文件扩展名,否则将导致文件不能执行或打开。在不同操作系统中,表示文件类型的扩展名并不相同。

文件内部属性的操作(如文件建立、内容修改等)需要专门的软件,如建立电子表格文档需要Excel软件,打开图片文件需要ACDSee等软件,编辑网页文件需要Dreamweaver等软件。文件外部属性的操作(如执行、复制、改名、删除等)可在操作系统下实现。

目录(文件夹)由文件和子目录组成,目录也是一种文件。Windows操作系统将目录按树状结构管理,用户可以将文件分门别类地存放在不同目录中。这种目录结构像一棵倒置的树,树根为根目录,树中每一个分枝为子目录,树叶为文件。Windows系统中,每个硬盘分区(如C、D、E盘等)都建立一个独立的目录树,有几个分区就有几个目录树(与Linux不同)。

2)Linux文件系统

Linux文件系统是一个层次化的树形结构。Linux系统只有一个根目录(与Windows不同),Linux可以将另一个文件系统或硬件设备通过"挂载"操作,将其挂装到某个目录上,从而让不同的文件系统结合成为一个整体。

Linux系统的文件类型有文本文件(有不同编码,如UTF-8)、二进制文件(Linux下的可执行文件)、数据格式文件、目录文件、连接文件(类似Windows的快捷方式)、设备文件(分为块设备文件和字符设备文件)、套接字文件(Sockets,用于网络连接)、管道文件(用于解决多个程序同时存取一个文件造成的错误)等。

大部分Linux使用Ext2文件系统,但也支持FAT、VFAT、FAT32等文件系统。Linux将不同类型的文件系统组织成统一的虚拟文件系统(VFS)。Linux通过VFS可以方便地与其他文件系统交换数据,虚拟文件系统隐藏了不同文件系统的具体细节,为所有文件提供了统一的接口。用户和进程不需要知道文件所属的文件系统类型,只需要像使用Ext2文件系统中的文件一样使用它们。

▶4.中断处理

中断是CPU暂停当前执行的任务,转而去执行另一段子程序。中断可以由程序控制或者由硬件电路自动控制完成程序的跳转。外部设备通过信号线向CPU提出中断请求信号,CPU响应中断后,暂停当前程序的执行,转而执行中断处理程序,中断处理程序执行完成后,返回到原来主程序的中断处,继续按原顺序执行。

例:计算机打印输出时,CPU传送数据的速度很高,而打印机打印的速度很低,如果不采用中断技术,CPU将经常处于等待状态,效率极低。而采用中断方式后,CPU可以处理其他工作,只有打印机缓冲区中的数据打印完毕发出中断请求之后,CPU才予以响应,暂时中断当前工作转去执行向缓冲区传送数据,传送完成后又返回执行原来的程序。这样就大大地提高了计算机系统的效率。

相关推荐
乔巴不是狸猫5 分钟前
第11周作业
linux
Web阿成42 分钟前
3.学习webpack配置 尝试打包ts文件
前端·学习·webpack·typescript
雷神乐乐1 小时前
Spring学习(一)——Sping-XML
java·学习·spring
李雨非-19期-河北工职大1 小时前
思考: 与人交际
学习
Bessssss1 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
哦哦~9211 小时前
深度学习驱动的油气开发技术与应用
大数据·人工智能·深度学习·学习
silver6872 小时前
Linux 下的 GPT 和 MBR 分区表详解
linux
小木_.2 小时前
【python 逆向分析某有道翻译】分析有道翻译公开的密文内容,webpack类型,全程扣代码,最后实现接口调用翻译,仅供学习参考
javascript·python·学习·webpack·分享·逆向分析
Web阿成2 小时前
5.学习webpack配置 babel基本配置
前端·学习·webpack