操作系统设计与实现 第一章 引言(一)

操作系统,一般是指在内核态(kernel mode)或称管态(supervisor mode)下运行的软件,它受到硬件的保护,用户不能随便去篡改它的内容。

1.1 什么是操作系统

给出精确的定义很难,可能是因为操作系统具有两个互不相关的功能:扩展机和资源管理

1.1.1 操作系统作为扩展机

通常的程序员不愿意涉及太多的软盘编程细节,他需要的是一种简单的、高度抽象的接口。

    操作系统负责将硬件细节与程序员隔离开来,并提供一个简单、方便的文件访问方式的程序。除了磁盘硬件之外,它还隐藏了许多其他的低层特性,如中断、时钟、存储管理等。对于每一种硬件,操作系统都提供了一个简单、好用的抽象接口。

从这个角度看,操作系统的功能就是为用户提供一台等价的扩展计算机,或称虚拟机它比底层硬件更容易编程。

1.1.2 操作系统作为资源管理器

虚拟机模型是自顶向下的观点。反之,按照自底向上的观点,则可以把操作系统视为一个复杂系统的管理者。

    从这个角度来看,操作系统的任务就是在相互竞争的程序之间,如何有序地控制这些硬件设备的分配。

资源管理主要包括两种形式的资源共享:时间上的资源共享和空间上的资源共享。

    时间上的资源共享,指的是各个程序或用户轮流使用该资源。
    空间上的资源共享,指的是把资源划分成若干份,然后分配给各个程序。

1.2 操作系统的发展历史

此小节简略总结

1.2.1 第一代计算机(1945-1955):真空管和插接板

1.2.2 第二代计算机(1955-1965):晶体管和批处理系统

1.2.3 第三代计算机(1965-1980):集成电路和多道程序

1.2.4 第四代计算机(1980- ):个人计算机

1.2.5 MINIX3的历史

1.3 操作系统概念

操作系统与用户程序之间的接口由操作系统提供的“扩展指令”集来定义。这些扩展指令传统上称为系统调用

    MINIX3的系统调用大致可以分为两类:与进程有关的系统调用与文件系统有关的系统调用。

1.3.1 进程

从本质上来说,一个进程就是一个正在执行的程序

每个进程都有自己的地址空间,也就是一组内存地址,从某个最小值到某个最大值,进程可以读写其内容。地址空间中包括可执行程序、程序的数据和它的栈。与每个进程相关的还有一组寄存器,如程序计数器、栈指针和其他硬件寄存器,以及运行该程序所需要的所有其他信息。

在许多操作系统中,一个进程的所有信息均存放在操作系统的一张表中,该表称为进程表。它实际上是一个结构数组或链表,系统中的每一个进程都要占用其中的一项。

因此,对于一个被挂起的进程,它主要包括两部分的内容。一是进程的地址空间,称为内核镜像,二是相应的进程表项,包含寄存器值及其他信息。

一般来说,一个进程能够创建一个或多个其他的进程(子进程),而且这些子进程又可以创建它们自己的子进程,这样就得到了一课进程树。

信号有点类似于硬件中断,只不过它是一种纯软件机制。

每一个合法用户都有一个由系统管理员分配的用户标识号(UID)。对于每一个进程,都记录有启动它的用户的UID。子进程的UID与其父进程的相同。此外,用户可以是某个组的成员,每个组都有一个组标识号(GID)。

1.3.2 文件

操作系统的一个主要功能就是屏蔽磁盘和其他I/O设备的具体细节,给程序员提供一个简洁方便且与设备无关的文件模型。

进程和文件:
共同点:被组织成树状结构。
不同点:进程树的层次一般不会很深(通常不超过三层),文件树会较深;进程之间的层次结构是暂时性的,通常只存在几分钟,而目录层次可以长期存在,几年;父进程可以控制和访问子进程,但对于文件和目录来说,除了所有者以外,其他用户也可以对它们进行访问。

挂装(mount):
MINIX3允许将光驱上的文件系统挂装到主文件树上。在执行mount系统调用之前,在硬盘上有一个根文件系;在CD-ROM上也有一个文件系统,这两个文件系统是相互独立、没有关联的。
在MINIX3中,程序员可以用mount系统调用将CD-ROM上的文件系统被挂装到根文件系统中的任何位置。

设备文件:
目的是使I/O设备使用起来更类似于文件。
设备文件分为两类:块设备文件、字符设备文件。

管道:
用来连接两个进程的虚拟文件。

1.3.3 命令解释器

MINIX3的命令解释器:shell
终端用户与操作系统之间的主要接口除非用户使用了一个图形用户界面。

当用户登录进入系统时,同时将启动一个shell,它以终端作为标准的输入和输出。一般来说,它首先会显示一个系统提示符,如美元符号,提示用户shell正在等待接收一条命令。

你可能感兴趣的:(操作系统)