操作系统(Operating System)负责管理计算机的所有资源并提供一个可以在其上编写应用程序的平台。
1.1 什么是操作系统
操作系统的两大功能:
1.1.1 操作系统作为扩展机
从这个角度看,操作系统的功能是为用户提供一台等价的
扩展计算机(虚拟机 Virtual machine),为用户提供各种系统调用来操作系统的各项服务,而不用管底层的硬件。
虚拟机模型是一种自顶向下的观点。
1.1.2 操作系统作为资源管理器
如果按照自底向上的观点看,可以把操作系统看成一个在相互竞争的程序之间,有序控制各项硬件设备分配的管理器。
管理器主要包含两种方式的资源共享:
- 时间上的资源共享:指的是各个程序或用户轮流使用该资源(就是每个程序分时间片)
- 空间上的资源共享:指的是把资源分成若干份,然后分配给各个程序(如将内存空间分成若干份)
1.2 操作系统的发展历史
过,以后有兴趣再看吧。。。
1.3 操作系统的概念系统调用(system call):操作系统与用户程序之间的接口,是一组“扩展指令”集。
1.3.1 进程 进程从本质上说就是一个正在执行的程序。每个进程有自己的
地址空间。地址空间实际就是一组内存地址,其中包括可执行程序、程序的数据和栈。
一般的操作系统中,进程的所有信息(除了地址空间的内容)存放在一张表中,称为
进程表(process table),实际是一个数组(或链表),每个进程占一项。
综合上面说的,一个挂起的进程主要包含两部分内容:进程的地址空间(内核映像 core image)和相应的进程表项(存放寄存器值及其他信息)
在与进程有关的系统调用中,最重要的是进程的
创建和
终止。
进程可以创建其他进程,称为
子进程,子进程还可以创建子进程,这样就得到一颗
进程树。有时一组相关进程互相合作,共同完成某种某项任务,相互通信称之为
进程通信(interprocess communication)。
1.3.2 文件(以MINIX3为例) 几个概念:目录、根目录、工作目录、路径名
一个重要概念:
设备文件(special file)目的是使I/O设备的使用更像文件。分为以下两类:
- 块设备文件(block special file):描述以随机访问的数据块为单元的设备,如磁盘。
- 字符设备文件(character special file):指以字符流方式进行操作的设备,如打印机。
一般设备都保存在/dev下。
管道(pipe)是一种用来连接两个进程的虚拟文件。(进程通信的一种手段)
1.3.3 命令解释器 shell,csh,ksh,zsh,bash都来源于最初的sh。
1.4 系统调用 由于发出一个系统调用的方式往往与具体的机器有关,而且通常用
汇编语言来实现,所以为了能在C程序中使用系统调用,通常需要另外构造函数库。
MINIX一共有6大类系统调用。
1.5 操作系统结构
1.5.1 整体结构 整个操作系统是一组函数的集合。每个函数在需要时可以调用任何其他的函数。
操作系统提供服务的请求过程:把参数放入预先确定的地方(寄存器或栈)->执行一条特殊的陷阱指令(访管程序调用 supervisor call 或者 内核调用 kernel call)
这种组织形式提出了操作系统的一种结构:
- 一个主程序(main procedure),用来调用被请求的服务历程
- 一组服务例程(service procedures),用来实现相应的系统调用
- 一组工具函数(utility procedures),用来帮助服务例程的实现
这样一个三层模型如图:
1.5.2 分层结构
将上述的方法进行进一步的推广,就是分层结构。把整个操作系统组织成一个层次结构,每一层软件都在其下层软件的基础上构造起来。如下图是THE系统结构:
1.5.3 虚拟机
nothing to say.
1.5.4 外核 在内核态下运行的最底层软件是一个称为
外核(exokernel)的程序,其任务是为虚拟机分配资源并保证资源的使用不会发生冲突。
1.5.5 客户-服务器模型
现代操作系统的一个趋势是将代码移到更高层次,从操作系统中去掉尽可能多的东西,只留下一个最小的内核。通常的方法是把很多系统功能由用户进程来实现。
但是,有很多操作系统功能无法靠用户空间的程序实现,如向物理I/O设备寄存器中写入命令字。解决的方法有两种:
- 设立一些运行于内核态的专用服务器进程(如设备驱动程序),可以访问硬件设备,但是用平常的消息机制与其他进程通信。
- 在内核中建立一套最小的机制(mechanism),而将策略(policy)留给用户空间的服务器进程。如在MINIX3中,驱动程序运行在用户空间,然后通过特殊的内核调用来请求读写I/O寄存器,或是访问内核信息。
阅读(568) | 评论(0) | 转发(0) |