第一章:计算机系统概述
1.1操作系统的基本概念
1.1.1操作系统的概念
操作系统是指控制和管理整个计算机系统的硬件与软件资源、合理地组织、调度计算机的工作与资源分配,进而为用户和其他软件提供方便接口与环境的程序集合。
是充当计算机硬件与用户之间的中介-管理裸机,扩充裸机以提供更强大的功能。
操作系统是计算机系统中最基本的系统软件。
扩展概念
硬件和软件资源统称为计算机资源,文件不属于硬件资源,属于计算机资源。
操作系统管理软件,是指操作系统关心计算机中的文件的逻辑结构、物理结构、文件内部结构、多文件如何组织的问题,而不是关系文件的具体内容,源程序储存在文件里,但操作系统不关心文件内容,因此源程序不是操作系统应该管理的。
硬件资源:
中央处理器(CPU)、输入设备(键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、游戏杆、语音输入装置等)、输出设备(显示器、影像输出系统、磁记录设备、打印机、语音输出系统、绘图仪)、储存器(软盘、硬盘、光盘、U盘等外存;ROM只读存储器、RAM随机存储器等内存,内存主要指RAM)、主板(一般为矩形电路板,安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电插接件等原件)
裸机:指没有配置操作系统和其他软件的电子计算机。
系统软件:操作系统、数据库管理系统、语言处理程序、服务性程序、标准库程序等。
1.1.2操作系统的特征
(1)并发:指两个或多个时间在同一时间间隔内发生。
操作系统的并发性:指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。
注意并发和并行的区别,在多道程序的环境下,一段时间内宏观上有多道程序在同时执行,而在每个时刻,单处理机的环境限制使得某一时刻只能有一道程序真正被处理、被执行,所以,把视角放到微观上,宏观看上去同时执行的程序其实是分时交替执行。(分时指的是时间片轮转,时间片轮转是一种最古老,最简单,最公平且使用最广的算法,又称RR调度。每个进程被分配成一个时间段,称作它的时间片,即该进程允许运行的时间。进程是程序的实体,不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。)
而并行则不是宏观同时,微观仍是顺序进行的状况,并行是同一时刻能够真正同时完成或两种以上的工作。而一个处理机同一时刻只能进行一项工作,因此,若要实现并行,则必须要有两个及两个以上的处理机,即多处理机(多核)这就是资源重复方面的并行实现办法,除此之外还有CPU分时技术和流水线技术。
(2)共享(资源共享):指系统中的资源可供内存中多个并发执行的进程共同使用。
共享可分为
互斥资源共享:系统中的某些资源,如打印机、磁带机虽然可供多个进程使用,但为使得所打印或记录的结果不致造成混淆,应规定在一段时间内只允许一个进程访问该资源。该时间段为宏观时间段,在宏观时间上,我们可以看到一个资源只允许一个进程访问。该资源被称为临界资源或独占资源。
常见的临界资源:
硬件上:打印机,磁带机,输入机
软件上:消息缓冲队列、变量、数组、缓冲区
同时访问方式:系统中还存在另外一种资源,这类资源允许在一段时间内由多个进程“同时”访问。这里的同时为宏观上,我们看到多个进程都在使用该资源,但在微观上,这些进程可能是交替着对该资源进行访问,比如采用时间片轮转的方式。从这里我们看到共享和并发的共同之处。
并发和共享是操作系统(包括现代)两个最基本特征,两者之间互为存在的条件:资源共享以程序的并发为条件,若系统不允许程序并发执行,共享就没有多个对象共同使用的条件,只有一者自然谈不了共享。同时,若共享无法被系统有效的管理,则必然会影响程序的并发执行,甚至根本无法执行。
(3)虚拟:是指把一个物理上的实体变为若干逻辑上的对应物。即实体对应着某些虚拟的没有物质支撑存在的事物,用户感觉上的事物。
用于实现虚拟的技术,称为虚拟技术。操作系统中存在的虚拟事物,虚拟处理器、虚拟内存、 和虚拟外部设备等。
虚拟处理器技术,采用多道程序并发执行的方法,将处理器分时使用,即可宏观上表现为被多个用户服务,且每个终端用户都感觉有一个中央处理器(CPU)在专门为它服务。
虚拟技术可归纳为:时分复用技术,如处理器的分时共享;空分复用技术,如虚拟存储器。
(4)异步
多道程序允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。异步的重要特点是不可预知。
单道程序设计的基本特征:封闭性、顺序性
1.1.4操作系统的目标和功能
为了给多道程序提供良好的运行环境,需要提供:处理机管理、存储器管理、设备管理和文件管理。
为了方便用户使用操作系统,为用户提供接口。接口有命令接口和程序接口(由一组系统调用组成,也叫广义指令)
命令接口包括链接命令接口和脱机命令接口。命令解释器和命令解析器(shell)均属于命令接口,面向用户
系统调用是操作系统为应用程序使用内核功能所提供的接口,系统调用只能通过用户程序间接使用,因为操作系统不允许用户直接操作各种硬件资源,因此用户程序只能通过系统调用的方式来请求内核为其服务,间接地使用各种资源。
还可作为扩充机器。
计算机开机后,操作系统最终被加载到RAM。操作系统不能直接用来编程。
说明库函数与系统调用的区别和联系:
库函数是语言或应用程序的一部分,可以运行在用户空间中。而系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要上下文的切换及状态的转换(由用户态转向核心态)