操作系统
1.1操作系统的概念
1.1.1计算机系统资源
1.计算机硬件
主机:处理器+存储器,是最宝贵的系统资源。
I/O设备:种类繁多,差异巨大,如网卡、CD-ROM。
系统总线:各功能部件间传送数据的公共通道。设备之间交换信息,要先向OS申请总线,获得使用权后才进行通信,通信双方数据交换时,OS不再响应其他设备的总线申请,其他设备只能等待。总线速度对系统性能影响大。
单处理器系统总线包括地址、数据、控制总线。目前,多核处理器技术已经成熟,OS在多个CPU核上分配工作负荷,以提高系统计算性能。
2.计算机软件
(1)固化软件
与计算机硬件联系密切、主要完成各类硬件设备设置、实现系统引导的软件。通常功能简单、规模较小、所需存储空间不大,并固化在计算机的ROM中。
(2)系统软件
管理各种资源,生成计算机可识别的机器指令,为各类程序提供良好的运行环境,包括:操作系统、编译系统、数据库管理系统、分布式软件系统等。操作系统是最底层的系统软件。
(3)工具软件
辅助开发人员进行软件开发工作的软件。
(4)应用软件
具有特殊用途、针对特定用户的软件,种类繁多,如通信软件、网络浏览器。
1.1.2操作系统地位
计算机硬件与软件形成层次结构。每层都有一定功能。底层向上层提供功能调用接口,上层无需了解下层具体实现过程。只要通过调用接口直接调用即可。
终端用户不关心硬件的实现细节,他们看来计算机就是一台应用程序组成的虚拟机,只要熟悉应用程序即可。
程序员开发应用程序,要使用一些系统软件、工具软件,以及OS的各种系统功能调用。
OS处于中间层,支配并支持上层的系统软件及工具软件,对下层的硬件直接控制和管理,它很多功能要与硬件配合实现,如中断系统、缓冲管理等,因此OS设计者必须熟悉硬件。同时,OS通过UI与终端用户直接接触。
1.1.3 操作系统的定义
操作系统是配置在计算机硬件上的第一层系统软件,由许多程序模块组成。它为用户控制和管理计算机系统中的所有软硬件资源,同时又为用户提供良好的用户接口。两个重要特征(重要作用):高效资源管理和方便用户使用。
操作系统安全:
系统软件和应用软件,都建立在操作系统之上,都要通过OS提供的系统功能调用,来完成信息存取和处理。
在网络环境中,网络安全基础是互联网中各主机系统的安全可信性,而主机系统的安全,又依赖于其上操作系统的安全性。安全机制已成为当今主流操作系统不可或缺的一部分。
1.1.4 操作系统的设计目标
1.高效性:提高系统资源利用率及作业吞吐量;
2.方便性: 用户界面方便友好;
3.可扩充性:适应硬件资源、体系结构的发展;
4.开放性:即兼容性,使不同平台开发的应用程序具有可移植性、可互操作性。
5.安全性:至少具有身份认证、访问控制、数据保密、数据完整、不可否认性五种安全机制。
1.2 操作系统的发展与分类
1.2.1 操作系统发展历史
1.第一代计算机(1946-1955年):主要由电子管组成,无操作系统;
2.第二代计算机(1955-1965年):主要由晶体管组成,出现监控程序及联机、脱机批处理系统,来对作业进行管理,如IBM的1401和7094系统。
3.第三代计算机(1965-1980年):采用集成电路芯片,出现多道批处理系统,如IBM OS/360;
4.第四代计算机(1980-1990):采用大规模集成电路芯片,出现成熟的商用操作系统,如UNIX、MS-DOS、Windows ;
5.第五代计算机(1990-至今):主要由超大规模集成电路芯片组成, 出现嵌入式、强实时、并行、分布式操作系统,并充分考虑系统安全与保护。
1.2.2 操作系统分类
1.批处理操作系统
工作流程为:用户将作业交给系统操作人员,系统操作人员将多个用户的作业组成一批输入磁带,然后启动批处理操作系统。系统自动从磁带上加载作业到内存执行,最后把执行结果输出。
根据一次加载作业的道数,批处理操作系统分为:
-
单道批处理:每次只加载一道作业到内存中执行。
-
多道批处理:每次加载多道作业到内存中并发执行,各作业轮流使用处理机和其他系统资源,最终依次完成。
批处理系统适合处理大批无交互的作业。
多道批处理系统引入了—多道程序设计技术。
基本思想:
在内存中同时存放多道相互独立的程序,这些程序共享系统资源,并在OS控制下交替在CPU上执行。
宏观上看,内存中的多道程序都已经开始执行都尚未结束;微观上看,某一时刻只有一个程序获得CPU执行。
多道程序交替执行的方式,称为程序的并发执行。
批处理操作系统优点:作业逐批进入系统并逐批进行处理,系统资源利用率高、作业吞吐量大;作业之间的过渡由操作系统完成,无需人工干预,减少差错出现。
批处理操作系统缺点:作业周转时间长;用户不能和正在执行的程序进行交互;不利于程序的开发和调试。
2 .分时操作系统
指将多个程序装入内存,系统把CPU运行时间分成一个个时间片,时间片大小通常为几十毫秒。多个程序轮流获得CPU的时间片,当OS分给某程序的时间片用完后,系统强行收回CPU,该程序等待下一次获得时间片时再继续执行。
- 分时系统的特点:
同时性、交互性、独占性、及时性 - 时间片的选取:
过长会使终端用户不能及时得到响应,过短会造成CPU频繁切换,增大系统开销。
3.实时操作系统
实时操作系统能及时响应外部事件请求,并在规定的时间内处理完毕。
实时任务按截止时间分为:
①硬实时任务:系统必须满足任务对截止时间的要求。
②软实时任务:对截止时间要求不太严格。
实时操作系统为保证系统能够及时、准确做出响应,一般具备实时时钟硬件和相关管理软件。
采用实时操作系统的系统中多采用较高时钟中断频率,实现精确计时,这可保证实时任务及时被执行。
4.网络操作系统
计算机网络有利于用户突破地理条件的限制,方便使用远程计算机资源。网络操作系统即安装在计算机网络中各计算机上的操作系统。
网络操作系统具备两大特征:
(1)由于网络中的各计算机是相互独立,故网络操作系统首先具备普通操作系统的功能,以便能及时响应本地用户的请求。
(2)用户通过网络操作系统要能使用共享资源,这要求网络操作系统必须遵循网络体系结构协议,提供网络管理、通信、安全等各种服务,并通过网络协议实现网络资源的统一配置,建立网络资源共享平台。
5.分布式操作系统
分布式系统中,各计算机既相互对立又相互协作,OS统一进行资源分配和共享,执行中协调各计算机之间的同步,实现它们之间的通信和负载平衡。
分布式操作系统以计算机网络为基础,它的各个子功能和子任务被布置在多个处理器上执行,形成处理上的分布;系统管理模块可在系统中任何一个处理器上运行,进行系统任务分配和负载均衡调整。
网络操作系统和分布式操作系统的区别:
① 分布式系统的各个计算机之间地位平等,无主从关系;网络操作系统中的计算机之间有主从关系。
② 分布式系统中的系统资源为所有用户共享;网络操作系统的各用户有限制地共享系统资源。
③ 分布式系统中,任务可分给若干处理器相互协作共同完成,而网络系统中的各个处理器往往是各司其责,不进行协作。
6.个人操作系统
是为没有计算机专业知识的个人用户编写的、运行在个人计算机上的操作系统。特点主要有:
① 具有良好的图形用户接口。
② 管理性能较高,引入了许多过去在小型机中采用的技术,如虚拟内存技术、多线程技术等。
③ 具有较好的可扩充性和兼容性,方便不同系统之间的互连和分布式处理。
④ 具有丰富的应用软件。
7.嵌入式操作系统
为嵌入式应用研制的一种特定操作系统,它运行在嵌入式计算机或嵌入式处理机芯片上,具有及时响应外部请求,调度执行任务和控制I/O设备等功能。
一般采用微内核结构,常包括以下基本功能:
① 处理机调度。 ② 基本内存管理。
③ 通讯机制。 ④ 电源管理。
主要具有以下4个特征:
(1)实时性 (2)微型化 (3)可定制
(4)可靠性:提供预防故障及容错措施。
1.3 操作系统的主要功能
操作系统作为系统的资源管理者,并作为计算机和用户间的接口,主要功能如下:
(1)处理机管理 (2)存储器管理 (3)设备管理
(4)文件管理 (5)用户接口管理
1.3.1 处理机管理功能
主要任务:对CPU进行分配,并对其运行进行有效控制和管理,包括:进程控制、进程同步、进程通信、进程调度、线程模型等。
OS对处理机的管理策略不同,其提供的作业处理方式也不同。如,批处理方式、分时处理方式、实时处理方式等。
1.3.2 内存管理功能
主要任务:为多道程序的运行提供良好环境,提高存储器的利用率,包括:内存分配、地址映射、内存共享、内存保护和内存扩充等。
内存容量有限,如何在内存中装入更多的并发执行进程,如何以及如何运行比内存容量大得多的进程?OS通常采用虚拟存储技术,来提高内存利用率和系统并发程度。如何保证内存中多道程序互不干扰,也是内存管理的主要功能之一。
1.3.3 设备管理功能
主要任务:管理各类I/O设备,完成用户提出的I/O请求,加快I/O信息的传输速度,发挥I/O设备的并行性,为用户屏蔽硬件细节,提供方便简单的设备使用方法,包括:I/O设备的控制、缓冲管理、设备独立性、设备分配、设备处理、虚拟设备管理和磁盘存储管理等。
计算机所配置的I/O设备多种多样,它们的工作原理、I/O传输速度、传输方式千差万别。为了方便用户操作它们,OS通常采用统一界面来管理,使用户感觉不到差异。操作系统将I/O设备本身的物理特性差异交给设备驱动程序去处理,提高了其适应性。
1.3.4 文件管理功能
主要任务:对用户文件、系统文件进行有效的管理,包括:文件组织方式、目录管理、文件存储控制、文件共享和保护、文件操作和文件存储空间管理等。
文件的存储介质主要是磁盘。不同的操作系统对文件的磁盘存储结构,有不同的组织方式,文件在磁盘上的组织和存放结构,直接影响文件存取速度。
1.3.5 用户接口管理功能
操作系统向用户提供了各种使用接口,包括:命令行接口、图形用户接口、系统调用接口等。
1、命令行接口:OS向用户提供的一组控制操作命令,需要记忆。
2、系统调用接口:程序接口,是OS与应用程序间的接口,供应用程序调用其预定功能的内核函数,程序员使用。
3、图形用户接口:主要构件是窗口、菜单、按钮、对话框等,无需记忆,一般不属于OS内核。
1.4 操作系统的主要特征
1.4.1 并发执行
并发性:指两个或多个事件,在同一时间间隔内发生。并发性使内存中可同时存放OS及若干应用程序,各程序交替执行,轮流切换地使用CPU,即宏观上同时微观上交替执行。
正在运行的程序,称为进程。OS使用进程机制实现多道程序的并发执行,它提供进程创建、进程结束等系统调用。
并发性能有效提高系统资源利用率和作业吞吐率,也使OS的设计变得异常复杂。
并行性:两个或多个事件,在同一时刻发生。如多处理器系统中,同一时刻可执行多个进程,每个处理器执行一个。
1.4.2 资源共享
资源共享分成两类:
(1)互斥型共享:同一时间段内,只允许一个进程排他性地使用资源(如打印机、全局变量、队列)。
(2)同时型共享:允许多个进程,在同一时间段内对资源进行交替访问(磁盘、CPU等)。
OS的并发性,实现了资源共享。但一味追求共享,管理不好就会影响并发性的实现,甚至会导致进程运行结果错误。
1.4.3 一切皆虚拟
OS中的“虚拟”指:通过某种技术,把一个物理实体变为若干个逻辑上的对应物,或把物理上的多个实体变成逻辑上的一个对应物。物理实体客观存在,逻辑上的对应物是虚构的。
现代操作系统中,主要有两种虚拟技术:
(1)时分复用技术:把硬件设备的使用时间,分割成小的时间片,供多个用户程序“轮流”、“切换”使用。
(2)空分复用技术:通过空间的划分,把一个物理存储设备改造成为逻辑上的多个存储设备(如硬盘分区)。
1.4.4 异步性
指在多道程序环境下,因受资源限制或其他因素的影响,计算机系统中每道程序的推进时间、执行顺序、完成时间是不确定的。程序执行,以“走走停停”的方式运行。
异步性增加了OS的设计难度。同一程序多次执行相同的数据,或不采取技术措施,受异步性影响可能会得到不同的运行结果。
1.5 操作系统的结构设计
OS结构设计包括两个方面:
1、系统整体结构;
2、系统局部结构,包括采用的数据结构和控制结构。
1.5.1 无结构操作系统
早期使用,系统无结构,由众多过程组成,用于功能简单的专用小型OS设计。
1.5.2 模块化结构操作系统
按功能系统划分为若干个相对独立的模块,模块间通过接口实现交互。模块间复杂的调用关系,使系统难以开发和维护。
1.5.3 分层式结构操作系统
按OS的模块功能和依存关系,将系统功能逐层分解,每层由若干模块组成,并且其功能仅依赖于该层以下的各层,即:该层只能调用它下层的模块,不能调用它的上层模块,类似“洋葱头”。
层次如下:中心是裸机本身提供的功能
常驻内存的操作系统内核(中断处理程序、常用设备驱动程序、进行控制模块、进行通信模块、进行调度模块)
存储管理I/O处理文件存取
调度和资源分配(具备用户所需功能的虚拟机)
MS-DOS、早期Windows、传统UNIX,即采用层次式结构设计。
1.5.4 虚拟机结构操作系统
基本思想:在裸机上运行OS的核心—虚拟机监控程序,它具有多道程序并发执行功能;
虚拟机监控程序向上层提供若干台虚拟机,每台虚拟机仅包含CPU工作状态、I/O功能、中断和其它硬件所具有的功能,不具备文件等高级功能;
在不同的会话监控系统(CMS)上可运行不同的OS,形成更高一层的虚拟机。会话监控系统指:在一层虚拟机上运行各种OS,如单用户交互式系统或批处理系统等。
在每台虚拟机上运行的OS互不干扰,用户使用时可拥有独立的硬盘和OS,并像使用单机一样对硬盘进行分区、安装应用程序。
典型系统:IBM VM/370。对硬件要求较高。目前常用虚拟机软件有VMware Workstation 、Virtual PC,都可以在PC机上建立多台虚拟机,同时运行多个OS。
1.5.5 微内核结构操作系统
此结构支持客户/服务器模式,能有效支持多处理机运行,适用于分布式OS。
此类OS的内核,仅存放最基本的核心功能模块,即依赖于硬件功能、支持用户模式的部分,如存储管理、内部通信进程、基本调度管理、中断管理等。
系统的其他功能,如I/O控制、文件管理等,都建立在内核之上,作为系统或用户进程运行。
例如:Windows NT、Amoeba(阿米巴/变形虫,免费分布式OS,Python语言最初为此平台开发 )、Mach(马赫,支持研究的操作系统内核,Mac OS X使用的是Mach或其派生系统 )。
不足:使得在系统管理中,核心层与用户层之间切换频繁,增大了系统开销,而且所有用户进程都要通过微内核通信,消息传递效率低。此问题,可通过提高系统硬件性能或把部分常用系统功能重新移入内核的方式来解决。
1.6 操作系统的运行环境
1.6.1 操作系统硬件运行环境
1、时钟
计算机必须提供系统时钟,来控制各部件的有序操作。系统时钟通常安装在主板上。
系统时钟有两种控制方式:
1.同步时序控制:用统一发出的时序,对各项操作进行同步控制。此方式下,操作时间的单位为时钟周期。CPU根据统一的时钟周期,为指令的执行安排严格的时间表。
2.异步时序控制:各操作不按统一的时序信号约束,可根据实际需要安排时间长短。此方式主要控制总线的操作,以适应总线所连接各设备的工作速度与时间要求。
2、处理机状态及状态转换
根据运行程序对资源和机器指令的使用权限,OS把处理机的执行状态分成两类:
(1)核心态(管态/特权状态/系统模式)
指操作系统运行时,处理机所处的状态。处理机处于核心态时,其上运行的程序可以执行包括特权指令和非特权指令在内的全部机器指令,能访问所有系统资源,并具有改变处理机状态的能力。
计算机中有若干个寄存器,其中PSW(程序状态字)是专门标识处理机状态的寄存器。PSW中有一个位专门标识CPU的执行状态,这个位的值可通过特权指令修改。
从核心态转变为用户态,可以使用LPSW指令(加载程序状态字),使用它对PSW进行修改即可。
(2)用户态(目态/目标状态/用户模式)
指用户程序运行时处理机所处的状态。处理机处于用户态时只能执行硬件机器指令的一个子集,即非特权指令。
用户态转换为核心态,需要通过中断机构才能实现,即在以下情况下发生:
-
用户程序执行一条系统调用,请求OS提供服务;
-
用户程序运行时发生中断事件,CPU执行核心态下的中断处理程序。
3、特权指令和非特权指令
特权指令是只能在核心态下执行的指令,这些指令的执行不但能影响程序本身,还会影响其他程序甚至整个OS。如:启动物理设备指令、设置时钟中断指令、控制中断屏蔽指令、存储保护指令等。
非特权指令是在核心态和用户态下都能执行的指令,这些指令的执行只与运行程序本身有关,不会影响其他程序。例如:数据传送指令、图形显示指令等。
OS能使用特权指令和非特权指令,用户程序只能使用非特权指令。若用户程序直接使用特权指令,可能引起系统冲突或由于某些意外造成系统错误,威胁系统安全。
4、控制和状态寄存器
(1)程序状态字(PSW)寄存器
PSW 用来指示处理机状态、控制指令执行顺序并保留与运行程序有关的各种信息,主要作用是实现程序状态的保护和恢复。每个正在执行的程序都有一个与其执行相关的程序状态字,处理机通过读取程序状态字,可知道当前处于用户态还是处于核心态。
不同处理机的PSW不同,一般包括以下内容:
指令地址:下一条指令的存放地址;
条件码:指令执行结果的特征;
指令状态:核心态/用户态;
程序计数器:指明要执行的下一条指令地址;
中断码:记录当前发生的中断事件;
中断屏蔽位:指出当程序发生中断时,是否允许中断发生。
(2)程序计数器(PC)
程序计数器存放要执行的下一条指令的内存地址。
在程序执行时,CPU将自动修改PC的内容,顺序执行时为PC+1,程序跳转执行时,PC将被装入跳转指令所含的目标地址,从而使程序能连续自动地执行下去,直至结束。
(3)指令寄存器(IR)
IR中临时存放从内存中取得的、待执行的指令。指令有操作码、地址码两个字段。 CPU执行指令时,要从内存取到数据寄存器,再送到指令寄存器中,再经过指令译码器测试,识别出所要求的操作,操作码译出后,即向操作控制器发出具体信号。
(4)堆栈寄存器
通常保存中断断点、子程序调用返回点、CPU现场数据、程序间传送的参数等。CPU针对不同用途,设立多个堆栈寄存器,用于保存LIFO的数据。
5、中断和异常
OS功能主要由内核程序实现,CPU执行用户程序时,进入内核程序的唯一途径就是中断或异常。
(1)中断
中断指计算机系统为应对突发事件而采取的处理措施。在用户程序执行过程中,若遇到某个突发事件,CPU要及时用设定好的中断机制,中断当前正在执行的进程,保存好中断现场,执行中断处理程序。当中断处理完后,再恢复进程的中断现场,继续执行该进程。中断由硬件软件协作完成。
用户程序执行系统调用指令、OS管理I/O设备及处理各种内部或外部事件时,都要通过中断机制完成。
(2)异常
异常是由CPU执行指令的某种特殊结果而引发的中断。如:除数为0、地址越界、硬件异常等,又称为内部中断、例外或陷入(Trap)。
异常和中断比较:
① 异常由CPU内部产生,在单处理机的计算机系统中,不会同时发生多个异常。
② 除“页面例外”和硬件异常之外,通常不会发生异常嵌套。
③ 异常不能被屏蔽。异常必须被及时处理,否则程序无法继续正常运行。
异常通常会引起中断,但中断未必全由异常引起。
6、地址映射机构
操作系统使用硬件系统中的地址映射机构。完成地址转换,从而保证程序放入内存后,能正确找到并执行完毕。
(1)使用高级语言编写程序时,各种数据的地址,一般从0开始。但程序中的地址并非内存实际地址,因此不能被CPU直接执行。
(2)程序编译或汇编后生成目标程序,而目标程序中的地址是逻辑地址,也不是内存实际地址。逻辑地址的集合,称为程序的逻辑地址空间,逻辑地址空间是从0开始排序的一维地址或二维地址。
(3)当程序运行时被装入内存,程序和数据的内存地址,一般与原来的逻辑地址不一致。在多道程序系统中,内存中同时存放多个程序,每个程序在内存中的存放位置,是随机的而且可以更改。
7、通道与DMA控制器
(1)CPU与I/O设备速度差异巨大,CPU直接控制I/O设备则大量时间在等待。为增加CPU与I/O设备、I/O设备与I/O设备间的并行程度,OS利用DMA(Direct Memory Access)控制器或通道,专门负责I/O设备的操作,CPU只负责发送I/O指令。
在I/O设备工作时,CPU可去做其他工作。I/O设备在DMA控制器或通道控制下工作,只有I/O操作结束或出现异常时,DMA才向CPU发出中断请求。
(2)通道是专门负责I/O操作的处理机,具有自己的简单指令系统,但一般没有独立内存,通常和CPU共用系统内存。
通道可执行由通道指令组成的通道程序,控制I/O设备和内存之间一次传输一组数据块,传输期间不需CPU干预。
DMA控制器与通道类似,但功能相对简单,它没有自己的专用指令系统,而且一次只能控制I/O设备和内存间传输一个数据块。
8、陷入
指CPU执行进行系统调用的“陷入”指令,或执行指令时出现异常情况,如:算术溢出、取数时发生奇偶错误、访存指令越界等。此时,OS会中断当前的进程执行,转去执行相应的陷入处理程序或异常处理程序。
用户程序执行时,如想请求OS为其提供某种服务,可在程序中安排执行一条陷入指令。陷入处理不能被屏蔽,必须立即处理。
陷入指令是一种特殊程序调用,其特殊之处在于:处理机状态从“用户态”变成“核心态”。
1.6.2 操作系统与其他系统软件关系
二者是控制与协作关系。OS是第一层系统软件,它控制、管理和服务于其它系统软件,并与它们共同支撑用户程序的运行。OS是永久运行的超级系统软件。
没有OS的支持,其他系统软件都不能运行。同时,操作系统的功能设计也受其他系统软件功能强弱的影响,没有完备系统软件与应用软件的支持,OS也不会得到用户的认可。
1.7 初识Linux操作系统
1.7.1 Linux概述
Linux操作系统是UNIX操作系统的一种典型克隆。但严格来说,Linux是有别于UNIX的一种新的操作系统。Linux的兴起极大地得益于因特网的流行,加上其免费下载、开放源代码的特点,Linux在全世界计算机爱好者的共同努力下,在不到3年的时间里得到飞速发展,一跃成为一个功能完善、稳定可靠的主流操作系统。
Linux已不断向高端发展,开始进入越来越多的计算机领域。
(1)服务器领域
(2)桌面领域
(3)网络设备领域
(4)嵌入式系统领域
Linux操作系统在很短的时间内得到迅猛的发展,这与其具有的良好特性是分不开的。
(1)开放性、兼容性好。
(2)多用户、多任务,系统运行效率高。
(3)提供了丰富的网络功能,具有网络优势。
(4)可靠的系统安全性。
(5)出色的稳定性和高速运算性。
(6)良好的用户界面,方便用户使用。
(7)较好的程序兼容性。
(8)GNU软件的支持。
1.7.2 Linux内核设计
Linux是一个用C语言编写、符合POSIX标准的类UNIX操作系统。Linux“内核”实际上是一个提供硬件抽象、文件(磁盘)系统控制、多任务并发执行等功能的系统软件。严格意义上讲,内核不是完整的操作系统,一套基于Linux内核的完整操作系统才叫Linux操作系统,或GNU/ Linux。
一般来讲,Linux体系结构可分为五个子系统:CPU和进程管理、存储管理、虚拟文件系统、设备管理和驱动和网络通信。
网络接口(NET)提供了对各种网络标准协议的存取以及对各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序两部分。网络协议部分负责实现每一种可能的网络传输协议。网络驱动程序部分负责与硬件设备进行通信, 每一种网络硬件设备都有相应的网络设备驱动程序。
1.7.3 Linux启动和初始化过程
Linux操作系统可在多种硬件平台上运行,如80x86CPU 系列(80386 以上)、SUNsparc 64、ARM26等。为了使Linux具有良好的可移植性,Linux 内核针对不同的硬件平台,开发了不同的启动程序和初始化程序。这些程序处于arch/子目录中,用户可根据自己的需求修改内核代码,并能即时编译,形成满足自己要求的内核。这也是Linux 操作系统广受欢迎的主要原因之一。。
Linux 操作系统的启动过程主要包括: BIOS (基本输入输出程序,完成机器自检等步骤后将主控权交给引导程序)自检、GRUB 引导、加载 Linux内核、执行 /sbin/init 和执行脚本等。启动过程中的第一个步骤BIOS自检是任何一个操作系统启动必须经历的过程,也是计算机启动时必要的自我检查过程。
1.7.4 Linux系统调用介绍
Linux系统类似于UNIX操作系统,它通过在内核设置一组实现系统功能的子程序来实现系统调用。系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于核心态下。Linux的系统调用技术保证了内核安全,用户进程不能随意拦截、修改系统调用。
在Linux系统中,程序的运行空间分为内核空间和用户空间,也常称为核心态和用户态。Linux提供两种运行模式:内核模式和用户模式。
通常,应用程序运行在用户模式,只能访问用户空间;系统调用运行在内核模式,可以访问内核空间,实现与用户空间的通信。应用程序和系统调用分别运行在不同的级别上,逻辑上相互隔离。
Linux中的系统调用都以sys开头,如sys_mkdir()。它们通过int ox80来完成从用户态切换到核心态,进入特权级执行。int ox80会使执行跳转到系统调用在内核中定义的入口地址。这个位置叫做System_call,它是唯一确定的,且只可被用户进程读操作,不可进行写操作。进程通过查找系统调用表system_call_table,从中找到希望调用的内核函数的地址,调用此函数。除了系统调用号以外,大部分系统调用都还需要一些外部的参数输入。
Red Hat Linux-2.4.20版中共有258个系统调用,大体上分为进程控制、文件系统控制、文件系统操作、系统控制、内存管理、网络管理、socket控制、用户管理、进程通信管理等几方面。例如,系统调用open()在内核里面的入口函数是sys_open,其定义是
static inline long open(const char * name, int mode, int flags)
{ return sys_open(name, mode, flags); }