⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000003.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;coolzhang&nbsp;(coolzhang),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;linux&nbsp;bible&nbsp;第二章&nbsp;软件基础&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;Oct&nbsp;25&nbsp;17:44:53&nbsp;1999)&nbsp;<BR>&nbsp;<BR>发信人:&nbsp;coolzhang&nbsp;(coolzhang),&nbsp;信区:&nbsp;UNIX&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;linux&nbsp;bible&nbsp;第二章&nbsp;软件基础&nbsp;<BR>发信站:&nbsp;武汉白云黄鹤站&nbsp;(Mon&nbsp;Oct&nbsp;25&nbsp;12:02:46&nbsp;1999),&nbsp;站内信件&nbsp;<BR>&nbsp;<BR>第二章&nbsp;软件基础&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>程序是执行某个特定任务的计算机指令集合。程序可以用多种程序语言来编写:从&nbsp;<BR>低级计算机语言-汇编语言到高级的、与机器本身无关的语言入C程序语言。操作系&nbsp;<BR>统是一个允许用户运行如电子表格或者字处理软件等应用程序的特殊程序。本章将&nbsp;<BR>介绍程序设计的基本原则,同时给出操作系统设计目标与功能的概述。&nbsp;<BR>&nbsp;<BR>2.1&nbsp;计算机编程语言&nbsp;<BR>&nbsp;<BR>2.1.1&nbsp;汇编语言&nbsp;<BR>&nbsp;<BR>那些CPU从主存读取出来执行的指令对人类来说是根本不可理解的。它们是告诉计算&nbsp;<BR>机如何准确动作的机器代码。在Intel&nbsp;80486指令中16进制数0x89E5表示将ESP寄存&nbsp;<BR>器的内容拷入EBP寄存器。为最早的计算机设计的工具之一就是汇编器,它可以将人&nbsp;<BR>们可以理解的源文件汇编成机器代码。汇编语言需要显式的操作寄存器和数据,并&nbsp;<BR>且与特定处理器相关。比如说Intel&nbsp;X86微处理器的汇编语言与Alpha&nbsp;AXP微处理器&nbsp;<BR>的汇编语言决然不同。以下是一段Alpha&nbsp;AXP汇编指令程序:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r16,&nbsp;(r15)&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Line&nbsp;1&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r17,&nbsp;4(r15)&nbsp;&nbsp;&nbsp;;&nbsp;Line&nbsp;2&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;beq&nbsp;r16,r17,100&nbsp;&nbsp;&nbsp;;&nbsp;Line&nbsp;3&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r17,&nbsp;(r15)&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Line&nbsp;4&nbsp;<BR>100:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Line&nbsp;5&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>第一行语句将寄存器15所指示的地址中的值加载到寄存器16中。接下来将邻接单元内&nbsp;<BR>容加载到寄存器17中。第三行语句比较寄存器16和寄存器17中的值,如果相等则跳转&nbsp;<BR>到标号100处,否则继续执行第四行语句:将寄存器17的内容存入内存中。如果寄存器&nbsp;<BR>中值相等则无须保存。汇编级程序一般冗长并且很难编写,同时还容易出错。Linux核&nbsp;<BR>心中只有很少一部分是用汇编语言编写,并且这些都是为了提高效率或者是需要兼容&nbsp;<BR>不同的CPU。&nbsp;<BR>&nbsp;<BR>2.1.2&nbsp;C编程语言和编译器&nbsp;<BR>&nbsp;<BR>用汇编语言编写程序是一件困难且耗时的工作。同时还容易出错并且程序不可移植:&nbsp;<BR>只能在某一特定处理器家族上运行。而用C语言这样的与具体机器无关的语言就要好得&nbsp;<BR>多。C程序语言允许用它所提供的逻辑算法来描叙程序同时它提供编译器工具将C程序&nbsp;<BR>转换成汇编语言并最终产生机器相关代码。好的编译器能产生和汇编语言程序相接近&nbsp;<BR>的效率。Linux内核中大部分用C语言来编写,以下是一段C语言片段:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(x&nbsp;!=&nbsp;y)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;y&nbsp;;&nbsp;<BR>&nbsp;<BR>它所执行的任务和汇编语言代码示例中相同。如果变量X的值和变量Y的不相同则将Y&nbsp;<BR>的内容赋予X。C代码被组织成子程序,单独执行某一任务。子程序可以返回由C支持&nbsp;<BR>的任何数据类型的值。较庞大的程序如Linux核心由许多单独的C源代码模块组成,每&nbsp;<BR>个模块有其自身的子程序与数据结构。这些C源代码模块将相关函数组合起来完成如&nbsp;<BR>文件处理等功能。C支持许多类型的变量,变量是一个通过符号名称引用的内存位置。&nbsp;<BR>在以上的例子中,X和Y都是内存中的位置。程序员并不关心变量放在什么地方,这些&nbsp;<BR>工作由连接程序来完成。有些变量包含不同类型的数据,整数和浮点数,以及指针。&nbsp;<BR>指针是那些包含其他数据内存位置或者地址的变量。假设有变量X,位于内存地址&nbsp;<BR>0x80010000处。你可以使用指针变量px来指向X,则px的值为0x80010000。C语言允&nbsp;<BR>许相关变量组合起来形成数据结构,例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i&nbsp;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;b&nbsp;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;my_struct&nbsp;;&nbsp;<BR>&nbsp;<BR>这是一个叫做my_struct的结构,它包含两个元素,一个是32位的整数i,另外一个是&nbsp;<BR>8位的字符b。&nbsp;<BR>&nbsp;<BR>2.1.3&nbsp;连接程序&nbsp;<BR>&nbsp;<BR>连接程序是一个将几个目标模块和库过程连接起来形成单一程序的应用。目标模块是&nbsp;<BR>从汇编器或者编译器中产生的机器代码,它包含可执行代码和数据,模块结合在一起&nbsp;<BR>形成程序。例如一个模块可能包含程序中所有的数据库函数而另一个主要处理命令行&nbsp;<BR>参数。连接程序修改目标模块之间的引用关系,使得在某一模块中引用的数据或者子&nbsp;<BR>程序的确存在于其他模块中。Linux核心是由许多目标模块连接形成的庞大程序。&nbsp;<BR>&nbsp;<BR>2.2&nbsp;操作系统概念&nbsp;<BR>&nbsp;<BR>如果没有软件,计算机只不过是一堆发热的电子器件。如果将硬件比做计算机的心脏&nbsp;<BR>则软件就是它的灵魂。操作系统是一组系统程序的集合,它提供给用户运行应用软件&nbsp;<BR>的功能。操作系统对系统硬件进行抽象,它提供给系统用户一台虚拟的机器。大多数&nbsp;<BR>PC可以运行一种或者多种操作系统,每个操作系统都有不同的外观。Linux由许多独&nbsp;<BR>立的功能段组成。比如Linux内核,如果没有库函数和外壳程序,内核是没有什么用的。&nbsp;<BR>为了理解操作系统到底是什么,思考一下当你敲入一个简单命令时,系统中发生了什么:&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>$&nbsp;ls&nbsp;<BR>Mail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;images&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perl&nbsp;<BR>docs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcl&nbsp;<BR>$&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>$符号是由用户登录外壳(这里指Bash)提供的提示符。它表示正在等待用户敲入一些命&nbsp;<BR>令。敲入ls命令,首先键盘驱动程序识别出敲入的内容。然后键盘驱动将它们传递给&nbsp;<BR>外壳程序,由外壳程序来负责查找同名的可执行程序(ls)。&nbsp;<BR>如果在/bin/ls目录中找到了ls,则调用核心服务将ls的可执行映象读入虚拟内存并开&nbsp;<BR>始执行。ls调用核心的文件子系统来寻找那些文件是可用的。文件系统使用缓冲过的&nbsp;<BR>文件系统信息,或者调用磁盘设备驱动从磁盘上读取信息。当然ls还可能引起网络驱&nbsp;<BR>动程序和远程机器来交换信息以找出关于系统要访问的远程文件系统信息(文件系统可&nbsp;<BR>以通过网络文件系统或者NFS进行远程安装)。当得到这些信息后,ls将这些信息通过&nbsp;<BR>调用视频驱动写到显示器屏幕上。&nbsp;<BR>以上这些听起来十分复杂。这个非常简单命令的处理过程告诉我们操作系统是一组协&nbsp;<BR>同工作的函数的集合,它们给所有的用户对系统有一致的印象。&nbsp;<BR>&nbsp;<BR>2.2.1&nbsp;内存管理&nbsp;<BR>&nbsp;<BR>由于资源的有限,比如内存,操作系统处理事务的过程看起来十分冗长。操作系统的&nbsp;<BR>一个基本功能就是使一个只有少量物理内存的系统工作起来象有多得多的内存一样。&nbsp;<BR>这个大内存叫为虚拟内存。其思想就是欺骗系统中运行的软件,让它们认为有大量内&nbsp;<BR>存可用。系统将内存划分成易于处理的页面,在系统运行时将这些页面交换到硬盘上&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -