世界是数字的(一)

操作系统怎么工作

操作系统控制和分配计算机资源。首先,它负责管理CPU,调度和协调当前运行的程序。它控制CPU 在任意时刻执行的程序,包括应用程序和后台进程(如杀毒软件和检查更新的程序)。它会将一个暂时等待的程序(比如等待用户在上面单击的对话框)挂起。它会阻止个别程序多占资源。如果一个程序占用CPU 时间太多,操作系统会强行将其中断以便其他任务得以正常执行。

CPU的结构是经过特殊设计的。计算机加电后,CPU会开始执行存放在非易失性存储器中的一些指令。这些指令继而从一小块内存中读出足以运行某些设备的代码。这些代码在运行过程中再从磁盘、CD、USB存储器或网络连接的既定位置读出更多指令。这些指令再继续读取更多指令,直到加载了足够完成有效工作的代码为止。这个准备开始的过程叫做启动(booting),源自拉着靴带(bootstrap)给自己穿上靴子的典故。具体细节可能不同,但基本思想是一样的,即少量指令足以找到更多指令,后者依次再找到更多的指令。

计算机启动过程中通常还要检查硬件,以便知道有哪些设备接入了计算机,比如有无打印机或者无线设备。还会检查内存和其他组件,以确保它们都可以正常工作。启动过程还会为接入的设备加载软件(驱动程序),以便操作系统能够使用这些设备。上述过程都需要时间,而我们从开机到计算机能用的这段时间内通常都会等得不耐烦。尽管计算机比过去快了不知多少倍,但在启动上仍然要花一两分钟时间,的确够让人泄气的。操作系统运行起来之后,它就会转而执行一个简单循环,依次把控制权交给准备运行或需要关注的每个应用程序。如果我在字处理程序中输入眼下这些字的时候,顺便收了一下邮件,又到网上逛了逛,同时还在后台播放音乐,那么操作系统会让CPU 依次处理这些进程,并根据需要在它们之间切换。每个程序会得到一段极短的时间,在程序请求系统服务后或者分配给它的时间用完时结束。

操作系统会响应各种事件,比如音乐结束、邮件或网页到达,或者用户按下了键盘上的按键。对这些事件,操作系统都会作出必要的处理,通常是把相应的事件转发给相关的应用程序。如果我重新排列屏幕上的窗口,操作系统会告诉显示器把窗口放在什么地方,并告诉每个应用程序它们各自窗口的哪一部分可见,以便重新绘制窗口。如果我选择“文件 > 退出”或单击窗口右上角的“×”按钮退出应用程序,系统会通知应用程序它马上要“死”了,以便它赶紧“安排后事”(比如,弹出对话框询问用户“您想保存这个文件吗?”)。然后,操作系统会回收该程序占用的所有资源,并告诉那些窗口得见天日的其他程序,必须重绘各自的窗口了。

系统调用

操作系统提供了硬件和其他软件之间的接口。有了这个接口,硬件就好像能听懂人的话了,而程序员编程因此就会变得简单。用这个圈子里的行话说,操作系统提供了一个平台,在这平台上可以构建应用程序。

操作系统为应用程序定义了一组操作(也叫服务),比如将数据存储至文件或者从文件中取出数据、建立网络连接、获取键盘输入、报告鼠标移动和按钮点击、绘制屏幕,等等。

操作系统以标准化的或者说大家协商一致的方式提供这些服务,而应用程序通过执行一种特殊的指令来请求这些服务,并将控制权移交给操作系统中特定的地址。操作系统根据请求完成计算,然后再将控制权和结果返回给应用程序。操作系统的这些“入口”被称为系统调用(system call),而对这些系统调用的详细说明实际上恰恰解释了操作系统能做什么。系统调用可以直接拿操作系统内部的代码作为入口,也可以是对某个(为相应服务而准备的)库函数的调用。但多数情况下,即便是程序员也不用关心上述区别。正因为如此,谁也说不清楚到底有多少个系统调用,但通常一两百个总是有的。

设备驱动程序

设备驱动程序是一种沟通操作系统与特定硬件设备(如打印机和鼠标)的程序。驱动程序的代码知道怎么让特殊的设备履行自己的职责,比如从特定的鼠标得到移动和按钮信息、让磁盘通过旋转的磁表面读取和写入信息、让打印机在纸上留下记号、让特定的无线网卡发送和接收无线电信号。

例如打印机专属的驱动程序,要负责把操作系统请求转换为特定设备完成相应任务必需的指令。一句话,就是操作系统发送通用的请求,而具体的设备驱动程序负责在各自硬件上落实、执行请求。

这里写图片描述

-摘自《世界是数字的》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值