如果你走入我们的内核之旅网站http://www.kerneltravel.net/ ,静下心阅读并动手实践,或许,流逝的时间,让你手捧沉甸甸的果实。 欢迎在讨论区提问。 如果你希望加入Linux内核学习圈,请到http://blog.chinaunix.net/group/group_1475.html

释义Linux内核(4)-操作系统基本概念(1)

上一篇 / 下一篇  2007-07-10 00:15:48 / 个人分类:释义Linux内核

查看( 2514 ) / 评论( 4 )


任何计算机系统都包含一个称为操作系统的基本程序集合。在这个集合里,最重要的程序称为内核(kernel)。当操作系统启动时,内核被装入到RAM中,内核中包含了系统运行所必不可少的很多过程(procedure)。其他程序是一些不太重要的实用程序,尽管这些程序为用户提供了与计算机进行广泛交流的经验(以及用户买计算机要做的所有工作),但系统根本的样子和能力还是由内核决定。内核也为系统中所有事情提供了主要功能,并决定高层软件的很多特性。因此,我们将经常使用术语“操作系统”作为“内核”的同义词。

QUOTE:

其实,凡是C语言的程序,都是由一个个函数组成。操作系统内核也不过如此。内核与一般程序的差别,在于运行时机和方式。它像所有程序的父母,在机器启动时,就无私的跳入内存,准备为大家服务。

操作系统必须完成两个主要目标:

·     与硬件部分相互作用,为包含在硬件平台上的所有低层可编程部件提供服务。

QUOTE:

这是一个艰难的目标,其复杂性就在此,也就是文件系统和设备驱动的职责。


·     为运行在计算机系统上的应用程序(即所谓用户程序)提供执行环境。

QUOTE:

这就是服务的本性,进程调度,内存管理就是为此目标的。


一些操作系统允许所有的用户程序都直接与硬件部分进行交互(典型的例子是MS-DOS)。与此相反,类Unix操作系统把与计算机物理组织相关的所有低层细节都对用户运行的程序隐藏起来。当程序想使用硬件资源时,必须向操作系统发出一个请求。内核对这个请求进行评估,如果允许使用这个资源,那么,内核代表应用程序与相关的硬件部分进行交互。

为了实施这种机制,现代操作系统依靠特殊的硬件特性来禁止用户程序直接与低层硬件部分打交道,或者禁止直接访问任意的物理地址。特别是,硬件为CPU引入了至少两种不同的执行模式:用户程序的非特权模式和内核的特权模式。Unix把它们分别称为用户态(User Mode)和内核态(Kernel Mode)。

QUOTE:

这两种状态的划分是由内核还是硬件?




多用户系统
多用户系统就是一台能并发和独立地执行分别属于两个或多个用户的若干应用程序的计算机。“并发”意味着几个应用程序能同时处于活动状态并竞争各种资源,如CPU、内存、硬盘等等。“独立”意味着每个应用程序能执行自己的任务,而无须考虑其他用户的应用程序在干些什么。当然,从一个应用程序切换到另一个会使每个应用程序的速度有所减慢,从而影响用户看到的响应时间。现代操作系统内核提供的许多复杂特性(我们将在本书中考察这些特性)减少了强加在每个程序时上的延迟时间,给用户提供了尽可能快的响应时间。

QUOTE:

也许大家经常用Linux,但真正的多用户一起使用的感觉可能不一定体会过
多用户操作系统必须包含以下几个特点:

·     核实用户身份的认证机制。
·     一个保护机制,防止有错误的用户程序防碍其他应用程序在系统中运行。
·     一个保护机制,防止有恶意的用户程序干涉或窥视其他用户的活动。
·     计账机制,限制分配给每个用户的资源数。

为了确保能实现这些安全保护机制,操作系统必须利用与CPU特权模式相关的硬件保护机制,否则,用户程序将直接访问系统电路并克服强加于它的这些限制。Unix是实施系统资源硬件保护的多用户系统。

QUOTE:

在多用户使用系统时,体验一下Unix的安全性是多么美妙和有趣

用户和组
在多用户系统中,每个用户在机器上有私用空间,典型地,他拥有磁盘空间的某个限额来存储文件,接受私人邮件信息等等。操作系统必须保证用户空间的私有部分仅仅对其拥有者是可见的。特别是必须能保证,没有用户能够开发一个用于侵犯其他用户私有空间的系统应用程序。

所有的用户由一个唯一的数字来标识,这个数字叫用户标识符(User ID,即UID)。通常一个计算机系统只能由有限的人使用。当其中的某个用户开始一个工作会话时,操作系统要求输入一个登录名和口令,如果用户输入的信息无效,则系统拒绝访问。因为口令是不公开的,因此用户的保密性得到保证。

为了和其他用户有选择地共享资料,每个用户是一个或多个组的一名成员,组由唯一的组标识符(Group ID,即GID)标识。每个文件也恰好与一个组相对应。例如,可以设置这样的访问权限,拥有文件的用户具有对文件的读写权限,同组用户仅有只读权限,而系统中的其他用户没有对文件的任何访问权限、

任何类Unix操作系统都有一个特殊的用户,叫做root,即超级用户(superuser), 或管理员(supervisor)。系统管理员必须以root的身份登录,以便处理用户帐号,完成诸如系统备份、程序升级等维护任务。root用户几乎无所不能,因为操作系统对她不使用常用的保护机制。尤其是,root用户能访问系统中的每一个文件,能干涉每一个正在执行的用户程序的活动。

QUOTE:

如果你有志于将来从事 系统管理员的工作,那么,你一个人在PC上怎么玩,也找不到感觉


[ 本帖最后由 陈莉君 于 2007-7-10 12:14 编辑 ]

TAG:

开源大讲堂_黄富强 黄富强 发布于2007-07-10 00:10:15
支持,基本
eccony发布于2007-07-10 07:38:34
深入浅出呀!!!!
Fluke@LUPA fluke 发布于2007-07-14 03:22:28

QUOTE:

这两种状态的划分是由内核还是硬件?
是有系统划分吧?内核态和用户态的地址映射不一样,然后就是特权级别不一样,特权的保护机制硬件已经提供了。
仰空冥思 陈莉君 发布于2007-07-14 03:36:09
其实,设计几个状态是处理机做的事,如何去应用是内核的事。例如,IntelIA32设计了4种保护环,但体现在OS中,用其中的最外层和最内层作为用户态和内核态,如此,以简化OS的设计。
我来说两句

(可选)

日历

« 2008-08-30  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 43439
  • 日志数: 105
  • 图片数: 2
  • 书签数: 1
  • 建立时间: 2006-11-09
  • 更新时间: 2008-08-28

RSS订阅

Open Toolbar