收藏 分销(赏)

Linux操作系统作业论文.doc

上传人:Fis****915 文档编号:554642 上传时间:2023-12-08 格式:DOC 页数:19 大小:226KB
下载 相关 举报
Linux操作系统作业论文.doc_第1页
第1页 / 共19页
Linux操作系统作业论文.doc_第2页
第2页 / 共19页
Linux操作系统作业论文.doc_第3页
第3页 / 共19页
Linux操作系统作业论文.doc_第4页
第4页 / 共19页
Linux操作系统作业论文.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、班 级:09501班姓 名:杜雪薇学 号:20913050119 院 系:信息工程学院 Linux操作系统摘要:操作系统(Operating System,简称OS)传统上是负责对计算机硬件直接控制及管理的系统软件。操作系统的功能一般包括处理器管理、存储管理、文件管理、设备管理和作业管理等。当多个程序同时运行时,操作系统负责规划以优化每个程序的处理时间。计算机操作系统中DOS、windows(包括2000、XP、VISTA.WIN7)、UNIX、LINUX 比较常见。本学期我们主要学习了Linux,本文主要对Linux操作系统的版本及特点、Linux与Windows的主要区别、Linux的简单

2、操作、Linux与外围设备的连接以及Linux新的发展基础进行了简单的分析和阐述。关键词:Linux操作系统、版本特点、主要区别、简单操作、发展一、 Linux操作系统的版本及特点发行版为许多不同的目的而制作, 包括对不同计算机结构的支持, 对一个具体区域或语言的本地化,实时应用,和嵌入式系统,甚至许多版本故意地只加入免费软件。目前,超过三百个发行版被积极的开发,最普遍被使用的发行版有大约十二个。Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。RedhaRedhat,应该称为

3、Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式

4、采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。DebianDebian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,

5、适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:)UbuntuUbuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一

6、个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。GentooGentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于

7、2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统 Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。FreeBSD FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Li

8、nux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。二、 Lin

9、ux与Windows的主要区别 Linux是一套免费使用和自由传播的类UNIX操作系统,主要用于基于Intel x86系列CPU的计算机上。Linux系统是由全世界各地的成千上万的程序员设计和实现的,其目的是建立不受任何商品化软件的版权所制约的、全世界都能自由使用的UNIX兼容产品。Windows同样主要用于基于Intel x86系列CPU的计算机上。1、进程调度篇: 进程是Linux的重要概念,Linux中实现了对多个进程的公平高效的调度,其实现过程中所用数据结构和调度算法均简洁明了,且又不是使用单一的调度策略,而是将几种调度策略非常有机地综合起来应用。是一个进程调度的典型范例。在Linux

10、中的进程是非常重要的一个概念,是分配资源的基本单位,运行于自己的虚拟地址空间中,有自己的权限和任务;且多个进程并发运行,彼此相对独立。Linux中每一个进程用一个taskstruct数据结构来表示,即进程控制块PCB,所有指向这些数据结构的指针构成进程向量数组task,向量数组大小是512,即系统中最多同时容纳512个进程。taskstruct包括了各种调度信息,如进程的类别、进程的优先级等。 传统Unix操作系统的调度算法必须实现几个互相冲突的目标:进程响应时间尽可能快,后台作业的吞吐量尽可能高,进程的饥饿现象尽可能避免,低优先级和高优先级进程的需要尽可能调和等等。决定什么时候以怎样的方式选

11、择一个新进程运行的这组规则就是所谓的调度策略(scheduling policy)。 Linux的进程调度是基于分时技术(time-sharing)。允许多个进程“并发”运行就意味着CPU 的时间被粗略地分成“片”,给每个可运行进程分配一片。 当然,单处理器在任何给定的时刻只能运行一个进程。当一个并发执行的进程其时间片或时限(quantum)到期时还没有终止,进程切换就可以发生。分时依赖于定时中断,因此,对进程是透明的。为保证CPU 分时,不需要在程序中插入额外的代码。 调度策略也是基于依照优先级排队的进程。有时用复杂的算法求出进程当前的优先级,但最后的结果是相同的:每个进程都与一个值相关联,

12、这个值表示把进程如何适当地分配给CPU。在Linux 中,进程的优先级是动态的。调度程序跟踪进程做了些什么,并周期性地调整它们的优先级。在这种方式下,在较长的时间间隔内没有使用CPU的进程,通过动态地增加它们的优先级来提升它们。相应地,对于已经在CPU上运行了较长时间的进程,通过减少它们的优先级来处罚它们。每个进程在创建之初有一个基本的优先级,执行期间调度系统会动态调整它的优先级,交互性高的任务会获得一个高的动态优先级,而交互性低的任务获得一个低的动态优先级。类进程的时间片计算如下图所示: 当谈及有关调度问题时,传统上把进程分类为“I/O 范围(I/O-bound)”或“CPU范围(CPU-b

13、ound)”。前者频繁地使用I/O 设备,并花费很多时间等待I/O操作的完成;而后者是需要大量CPU 时间的数值计算应用程序。Linux操作系统支持多进程,进程控制块PCB(Process Control Block)是系统中最为重要的数据结构之一。用来存放进程所必需的各种信息,PCB用结构taskstruct来表示,包括进程的类型、进程状态、优先级、时钟信息等。Linux系统中,进程调度操作由schedule()函数执行,这是一个只在内核态运行的函数,函数代码为所有进程共享。Linux的进程调度时机与现代操作系统中的调度时机基本一致,为了判断是否可以执行内核的进程调度程序来调度进程,Linu

14、x中设置了进程调度标志needresched,当标志为1时,可执行调度程序通常,Linux调度时机分以下两种情况:(1)主动调度:指显式调用schedule()函数明确释放CPU,引起新一轮调度一般发生在当前进程状态改变,如:进程终止、进程睡眠、进程对某些信号处理过程中等(2)被动调度:指不显示调用schedule()函数,只是PCB中的need_resched进程调度标志,该域置位为1将引起新的进程调度,而每当中断处理和系统调用返回时,核心调度程序都会主动查询needresched的状态(若置位,则主动调用schedule()函数。一般发生在新的进程产生时、某个进程优先级改变时、某个进程等待

15、的资源可用被唤醒时、当前进程时间片用完等在Linux中,进程调度策略共定义了3种:Linux系统中的每个进程用task,struct结构来描述,进程调度的依据是taskstruct结构中的policy、priority、counter和rtpriority,PCB中设置Policy数据项,其值用于反映针对不同类型的进程而采用的调度策略。SCHEDRR和SCHEDFIFO用于实时进程。分别表示轮转调度策略和先进先出调度策略;SCHEDOTHER表示普通进程,也按照轮转调度策略处理。这三类调度策略均基于优先级PCB中设置Priority数据项,其值为普通进程的调度优先级普通进程的可用时间片的初始值

16、即为该值,该值通过系统调用是可以改变的。PCB中设置rtp riority数据项,其值是实时进程专用的调度优先级,实时进程的可用时间片的初始值即为该值该优先级也可以用系统调用来修改,PCB中设置counter数据项。用于进程可用时间片时值的计数,初始值为rtpriority或Priority。进程启动后该值随时钟周期递减。 而每个windows进程都是由一个执行体进程块来表示的。EPROCESS块中除了包含许多与进程有关的属性以外,还包含和指向了许多其他的相关数据结构。例如,每个进程都有一个或多个 线程,这些线程由执行体线程块来表示。执行体进程块和相关的数据结构位于系统空间中,不过,进程块环境

17、是个例外,它位于进程地址空间中(因为它包含了一些需要由用户模式代码来修改的信息)。 除了EPROCESS块以外,windows子系统进程为每个windows进程维护了一个类似的结构。而且,windows子系统的内核模式部分有一个针对每个进程的数据结构,当一个线程第一次调用windows的USER或GDI函数时,此数据结构就会被创建。下图是一个简化的关于进程和线程数据结构的框图: Windows 中的每一个进程都是EPROCESS结构体。此结构体中除了进程的属性之外还引用了其它一些与实现进程紧密相关的结构体。例如,每个进程都有一个或几个线程,线程在系统中就是ETHREAD 结构体。简要描述一下存

18、在于这个结构体中的主要的信息,这些信息都是由对内核函数的研究而得知的。首先,结构体中有KPROCESS 结构体,这个结构体中又有指向这些进程的内核线程(KTHREAD)链表的指针(分配地址空间),基优先级,在内核模式或是用户模式执行进程的线程的时间,处理器affini ty(掩码,定义了哪个处理器能执行进程的线程),时间片值。在ETHREAD 结构体中还存在着这样的信息:进程ID、父进程ID、进程映象名。在EPROCESS结构体中还有指向PEB的指针。ETHREAD 结构体还包含有创建时间和退出时间、进程ID 和指向EPROCESS 的指针,启动地址,I/O请求链表和KTHREAD 结构体。在

19、KTHREAD 中包含有以下信息:内核模式和用户模式线程的创建时间,指向内核堆栈基址和顶点的指针、指向服务表的指针、基优先级与当前优先级、指向APC的指针和指向T E B的指针。KTHREAD 中包含有许多其它的数据,通过观察这些数据可以分析出KTHREAD 的结构。通过遍历KPROCESS结构体中的ETHREAD,找到系统中当前所有的KTHREAD 结构,这个结构中的偏移量为0x124处的Affinity域(WindowsXPsp3)即为设置CPU亲缘性掩码的内存地址。Windows实现了一个优先驱动的,抢先式的调度系统具有最高优先级的可运行线程总是运行,而该线程可能仅限于在允许它运行的处理

20、器上运行,这种现象称为处理器亲和性,在默认的情况下,线程可以在任何一个空闲的处理器上运行,但是,你可以使用windows调度函数,或者在映像头部设置一个亲和性掩码来改变处理器亲和性。在此重点解释CPU亲缘性的概念,CPU亲缘性就是指在系统中能够将一个或多个进程或线程绑定到一个或多个处理器上运行,这是期待已久的特性。也就是说:“在1号处理器上一直运行该程序”或者是“在所有的处理器上运行这些程序,而不是在0 号处理器上运行”。然后, 调度器将遵循该规则,程序仅仅运行在允许的处理器上。 Windows 的进程调度代码是在它的System 进程下的,所以它不属于任何用户进程上下文。调度代码在适当的时机

21、会切换进程上下文,这里的切换进程上下文是指进程环境的切换, 包括内存中的可执行程序, 提供程序运行的各种资源.进程拥有虚拟的地址空间,可执行代码, 数据, 对象句柄集, 环境变量, 基础优先级, 以及最大最小工作集等的切换。 而Windows最小的调度单位是线程, 只有线程才是真正的执行体,进程只是线程的容器。Windows调程序在时间片到期,或有切换线程指令执行(如Sleep,KeWaitForSingleObject 等函数)时, 将会从进程线程队列中找到下一个要调度的线程执行体,并装入到KPCR(Kernel s Processor Control Region ,内核进程控制区域) 结

22、构中,CPU 根据KPCR结构中的KPRCB 结构执行线程执行体代码。而在多核CPU下,当Windows调度代码执行时,从当前要调度执行的KTHREAD结构中取出Affinity,并与当前PC 机上的硬件配置数据中的CPU 掩码作与操作,结果写入到指定的CPU,例如双核CPU 的设备掩码为0x03,如果当前KTHREAD 里的Affinity 为0x01,那么0x01&0x03=0x01,这样执行体线程会被装入CPU1的KPRCB 结构中得以执行,调度程序不会把这个线程交给CPU2 去执行。这就是为线程选择指定CPU 核的原理。2、 存储管理篇Linux存储管理(1) Linux存储管理的基本

23、框架 Linux内核采用虚拟页式存储管理,采用三次映射机制实现从线性地址到物理地址的映射。其中PGD为页面目录,PMD为中间目录,PT为页面表。 32位的微机平台如Intel的X86采用段页式的两层映射机制,而64位的微处理器采用三级分页。对于传统的32位平台,Linux采用让PMD(中间目录)全0来消除中间目录域,这样就把Linux逻辑上的三层映射模型落实到X86结构物理上的二层映射,从而保证了Linux对多种硬件平台的支持。(2) Linux对虚拟内存的管理Linux对虚拟内存的管理以进程为基础。32位的线性地址映射的4G的虚拟空间中,从0XC0000000到0XFFFFFFFF的1G空间

24、为所用进程所共享的内核空间,每个进程都有自己的3G用户空间。 Linux的虚拟内存管理需要各种机制的支持,首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚拟地址没有对应的物理地址,就发出请页要求:如果有空闲的内存可供分配,就请求分配内存,并把正在使用的物理页记录在页缓存中,如果没有足够的内存分配,就调用交换机制,腾出一部分内存。另外在地址映射中要通过TLB(后援存储器)来寻找物理页,交换机制中要用到交换缓存,并且把物理页内容交换到交换文件中也要修改页表来映射文件地址。 Linux在管理进程虚存空间时定义了虚存段(vma)。虚存段是进程一段持

25、续的虚存空间,在这段虚存里,所有单元拥有相同的特征。这样分割是因为每个虚拟内存区域可能来源不同,因此,Linux把虚存分割管理。 Linux用数据结构vm_area_struct描述虚存段的属性,当某个程序的映像开始执行时,可执行映像装入到进程的虚拟地址空间。此时Linux将产生一组vm_area_struct结构来描述虚存段。每个vm_area_struct结构描述可执行映像的一部分。同一进程的vma段的vm_area_struct结构通过vm_next指针连接组成链表。系统以虚拟内存地址的降序排列vm_area_struct结构。这样建立了文件的逻辑地址到虚拟线性地址的映射。(3) Lin

26、ux对物理内存的管理如果系统是NUMA结构的处理机系统,则物理内存被划分为三个层次来管理:存储节点(Node),管理区(Zone),页面(Page)。处理器的本地内存组成的区域叫做一个节点(Node),它通过pglist_data数据结构来描述。各个节点的物理内存根据不同的作用又分为ZONE_DMA、ZONE_NORMAL、ZONE_HIGH,ZONE_DMA面积小,且专供DMA使用,ZONE_NORMAL则供大多数的程序使用,对于ZONE_HIGH仅仅只有页面缓存以及用户进程能够使用该区域的空间。每个管理区对应一个free_area数组来组织空闲页面队列,该数组的每一项描述某一种页块的信息,

27、第一个元素描述大小为1页的内存块的信息,第二个元素描述大小为2 页的内存块的信息,依此类推,所描述的页块大小以 2 的倍数增加。Windows 的存储管理Windows存储管理的主要任务是管理存储器资源,为多道程序运行提供有力的支撑。管理的主要功能包括:1)存储分配。存储管理将根据用户程序的需要给它分配存储器资源。2) 存储共享。存储管理能地让主存中的多个用户程序实现存储资源的共享,以提高存储器的利用率。3)存储保护。存储管理要把各个用户程序相互隔离起来互不干扰,更不允许用户程序访问操作系统的程序和数据,从而保护用户程序存放在存储器中的信息不被破坏。4)存储扩充。由于物理内存容量有限,难于满足

28、用户程序的需求,存储管理还应该能从逻辑上来扩充内存储器,为用户提供一个比内存实际容量大得多的编程空间,方便用户的编程和使用。 操作系统的这一部分功能与硬件存储器的组织结构和支撑设施密切相关,操作系统设计者应根据硬件情况和用户使用需要,采用各种相应的有效存储资源分配策略和保护措施。3、 设备管理篇 Linux的设备管理的主要任务是控制设备完成输入输出操作,所以又称输入输出(I/O)子系统。它的任务是把各种设备硬件的复杂物理特性的细节屏蔽起来,提供一个对各种不同设备使用统一方式进行操作的接口。Linux把设备看作是特殊的文件,系统通过处理文件的接口虚拟文件系统VFS来管理和控制各种设备。设备被分为

29、三类,块设备、字符设备和网络设备。字符设备是以字符为单位输入输出数据的设备,一般不需要使用缓冲区而直接对它进行读写。块设备是以一定大小的数据块为单位输入输出数据的,一般要使用缓冲区在设备与内存之间传送数据。网络设备是通过通信网络传输数据的设备,一般指与通信网络连接的网络适配器(网卡)等。Linux使用套接口(socket)以文件I/O方式提供了对网络数据的访问。Linux设备管理的基本特点是把物理设备看成文件,采用处理文件的接口和系统调用来管理控制设备。从抽象的观点出发,Linux的设备又称为设备文件。设备文件也有文件名,设备文件名一般由两部分组成第一部分23个字符,表示设备的种类,如串口设备

30、是cu,并口设备是lp,IDE普通硬盘是hd,SCIS硬盘是sd,软盘是fp等。第二部分通常是字母或数字,用于区分同种设备中的单个设备,如hda、hdb、hdc分别表示第一块、第二块、第三块IED硬盘。而hda1、hda2表示第一块硬盘中的第一、第二个磁盘分区。设备文件一般置于/dev目录下,如/dev/hda2、/dev/lp0等。Linux使用虚拟文件系统VFS做为统一的操作接口来处理文件和设备。与普通的目录和文件一样,每个设备也使用一个VFSinode来描述,其中包含着该种设备的主、次设备号。对设备的操作也是通过对文件操作的file_operations结构体来调用驱动程序的设备服务子程

31、序。例如,当进程要求从某个设备上输入数据时,由该设备的file_operations结构体得到服务子程序的操作函数入口,然后调用其中的read()函数完成数据输入操作。同样,使用file_operations中的open()、close()、write()分别完成对设备的启动、停止设备运行,向设备输出数据的操作。Windows设备管理的主要任务是管理各类外围设备,完成用户提出的I/O请求,加快I/O信息的传送速度,发挥I/O设备的并行性,提高I/O设备的利用率;以及提供每种设备的设备驱动程序和中断处理程序,向用户屏蔽硬件使用细节。为实现这些任务,设备管理应该具有以下功能:1)提供外围设备的控制

32、与处理;2)提供缓冲区的管理;3)提供外围设备的分配;4)提供共享型外围设备的驱动;5)实现虚拟设备。4、 文件管理篇 红旗Linux为每个文件都分配了一个文件所有者,称为文件主,并赋予文件主惟一的注册名。对文件的控制取决于文件主或超级用户(root)。文件或目录的创建者对所创建的文件或目录拥有特别使用权,文件的所有关系是可以改变的,您可以将文件或目录的所有权转让给其他用户,但只有文件主或root才有权改变文件的所有关系。文件的所有权标志是用户ID(UID)。chown命令更改某个文件或目录的所有权。chown命令的语法格式是:chown 选项用户或组文件1文件2.用户可以是用户名或用户ID。

33、文件是以空格分开的要改变权限的文件列表,可以用通配符表示文件名。如果改变了文件或目录的所有权,原文件主将不再拥有该文件或目录的权限。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。在Linux下,每个文件又同时属于一个用户组。当你创建一个文件或目录,系统会赋予它一个用户组关系,用户组的所有成员都可以使用此文件或目录。文件用户组关系的标志是GID。文件的GID只能由文件主或超级用户(root)来修改。chgrp命令可以改变文件的GID,其语法格式为:chgrp 选项 group文件名其中group是用户组ID。文件名是以空格分开的要改变属组的文

34、件列表,它支持通配符。Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。访问权限规定三种不同类型的用户:文件主(owner)、同组用户(group)、可以访问系统的其他用户(others)。访问权限规定三种访问文件或目录的方式:读(r)、写(w)、可执行或查找(x)。Windows的文件管理则是对系统的信息资源的管理。在现代计算机中,通常把程序和数据以文件形式存储在外存储器上,供用户使用,这样,外存储器上保存了大量文件,对这些文件如不能采取良好的管理方式,就会导致混乱或破坏,造成严重后果。为此,在操作系统中配置了文件管理,它的主要任务是对

35、用户文件和系统文件进行有效管理,实现按名存取;实现文件的共享、保护和保密,保证文件的安全性;并提供给用户一套能方便使用文件的操作和命令。具体来说,文件管理要完成以下任务:1)提供文件逻辑组织方法;2)提供文件物理组织方法;3)提供文件的存取方法;4)提供文件的使用方法;5)实现文件的目录管理;6)实现文件的存取控制;7)实现文件的存储空间管理。5、 网络与通信管理篇 Linux的组网能力非常强大,它的TCP/IP代码是最高级的。Linux提供了对于当前的TCP/IP协议的完全支持,并且包括了对下一代Internet。协议Ipv6的支持。Linux内核还包括了IP防火墙代码、IP防伪、IP服务质

36、量控制及许多安全特性。这些特性可以和像Cisco这样的公司提供的高端路由设备的特性相媲美。此外,利用Redhat Linux提供的Samba组(并不是RedHat Linux独有),Linux可以作为Windows客户机的打印和文件服务器,还可以用做NT的文件和打印服务器。运用Linux包含的AppleTalk模块,Linux甚至可以作为一个Macintosh客户机的文件和打印服务器。让Apache这个世界上应用范围最广的Web服务器软件系统跑在Linux上,你就可以运行自己的Intranet或者Internet web服务器。Linux还包含了一个Ftp服务程序、一个电子邮件传输代理程序以及

37、,POP和IMAP邮件服务程序。如果你愿意,你还可以在Internet上免费获得一个Linux的LDAP服务程序。性能超群稳定的APACHE服务器也是许多网络管理员选择LINUX的原因。计算机网络源于计算机与通信技术的结合, 近二十年来, 从单机与终端之间的远程通信, 到今天全世界成千上万台计算机联网工作, 计算机网络的应用已十分广泛。Windows联网操作系统至少应具有以下管理功能:1)网上资源管理功能。计算机网络的主要目的之一是共享资源,网络操作系统应实现网上资滚源的共享, 管理用户应用程序对资源的访问, 保证信息资源的安全性和一致性。2)数据通信管理功能。计算机联网后, 站点之间可以互相

38、传送数据, 进行通信, 通过通信软件, 按照通信协议的规定, 完成网络上计算机之间的信息传送。3)网络管理功能。包括: 故障管理、安全管理、性能管理、记帐管理和配置管理。三、 Linux的简单操作(一) 文件管理1.Linux文件系统Linux支持多种文件系统,如ext、ext2、minix、iso9660、msdos、fat、vfat、nfs等。在这些具体文件系统的上层,Linux提供了虚拟文件系统(VFS)来统一它们的行为,虚拟文件系统为不同的文件系统与内核的通信提供了一致的接口。 在Linux平台下对文件编程可以使用两类函数:(1)Linux操作系统文件API;(2)C语言I/O库函数。

39、 前者依赖于Linux系统调用,后者实际上与操作系统是独立的,因为在任何操作系统下,使用C语言I/O库函数操作文件的方法都是相同的。2.Linux文件APILinux的文件操作API涉及到创建、打开、读写和关闭文件。创建int creat(const char *filename, mode_t mode);参数mode指定新建文件的存取权限,它同umask一起决定文件的最终权限(mode&umask),其中umask代表了文件在创建时需要去掉的一些存取权限。umask可通过系统调用umask()来改变:int umask(int newmask);该调用将umask设置为newmask,然后

40、返回旧的umask,它只影响读、写和执行权限。打开int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);open函数有两个形式,其中pathname是我们要打开的文件名(包含路径名称,缺省是认为在当前路径下面),flags可以是下面的一个值或者是几个值的组合:标志含义O_RDONLY以只读的方式打开文件O_WRONLY以只写的方式打开文件O_RDWR以读写的方式打开文件O_APPEND以追加的方式打开文件O_CREAT创建一个文件O_EXEC如果使用了O

41、_CREAT而且文件已经存在,就会发生一个错误O_NOBLOCK以非阻塞的方式打开一个文件O_TRUNC如果文件已经存在,则删除文件的内容O_RDONLY、O_WRONLY、O_RDWR三个标志只能使用任意的一个。如果使用了O_CREATE标志,则使用的函数是int open(const char *pathname,int flags,mode_t mode);这个时候我们还要指定mode标志,用来表示文件的访问权限。mode可以是以下情况的组合:标志含义S_IRUSR用户可以读S_IWUSR用户可以写S_IXUSR用户可以执行S_IRWXU用户可以读、写、执行S_IRGRP组可以读S_IW

42、GRP组可以写S_IXGRP组可以执行S_IRWXG组可以读写执行S_IROTH其他人可以读S_IWOTH其他人可以写S_IXOTH其他人可以执行S_IRWXO其他人可以读、写、执行S_ISUID设置用户执行IDS_ISGID设置组的执行ID除了可以通过上述宏进行“或”逻辑产生标志以外,我们也可以自己用数字来表示,Linux总共用5个数字来表示文件的各种权限:第一位表示设置用户ID;第二位表示设置组ID;第三位表示用户自己的权限位;第四位表示组的权限;最后一位表示其他人的权限。每个数字可以取1(执行权限)、2(写权限)、4(读权限)、0(无)或者是这些值的和。例如,要创建一个用户可读、可写、可

43、执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户ID位。那么,我们应该使用的模式是1(设置用户ID)、0(不设置组ID)、7(1+2+4,读、写、执行)、0(没有权限)、5(1+4,读、执行)即10705: open(test, O_CREAT, 10705);上述语句等价于:open(test, O_CREAT, S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );如果文件打开成功,open函数会返回一个文件描述符,以后对该文件的所有操作就可以通过对这个文件描述符进行操作来实现。读写 在文件打开以后,我们才可对文件进行读写了,Linux中提供文件读写

44、的系统调用是read、write函数:int read(int fd, const void *buf, size_t length);int write(int fd, const void *buf, size_t length);其中参数buf为指向缓冲区的指针,length为缓冲区的大小(以字节为单位)。函数read()实现从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。函数write实现将把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。以O_CREAT为标志的open实际上实

45、现了文件创建的功能,因此,下面的函数等同creat()函数:int open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode);定位对于随机文件,我们可以随机的指定位置读写,使用如下函数进行定位:int lseek(int fd, offset_t offset, int whence);lseek()将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置。参数whence可使用下述值:SEEK_SET:相对文件开头SEEK_CUR:相对文件读写指针的当前位置SEEK_END:相对文件末尾offset可取负值,

46、例如下述调用可将文件指针相对当前位置向前移动5个字节:lseek(fd, -5, SEEK_CUR);由于lseek函数的返回值为文件指针相对于文件头的位置,因此下列调用的返回值就是文件的长度:lseek(fd, 0, SEEK_END);关闭当我们操作完成以后,我们要关闭文件了,只要调用close就可以了,其中fd是我们要关闭的文件描述符: int close(int fd);(二) 文字处理光标移动0: 移动到这一行的最前面字符处(常用);$: 移动到这一行的最后面字符处(常用);H: 光标移动到这个屏幕的最上方那一行;M: 光标移动到这个屏幕的中央那一行;L : 光标移动到这个屏幕的最下

47、方那一行;G: 移动到这个档案的最后一行(常用);nG : n为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu);gg : 移动到这个档案的第一行,相当于 1G 啊! (常用)n: n 为数字。光标向下移动 n 行(常用);如向下移动 30 行,可以使用 30j 或 30 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!查找/word: 向光标之下寻找一个字符串名称为 word 的字符串! (常用)?word: 向光标之上寻找一个字符串名称为 word 的字符串!n: 往下/上重复上次搜索!查找并替换:n1,n2s/word1/word2/g: n1与n2为数字,在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2,举例来说!:1,$s/word1/word2/g : 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为word2 !(常用):1,$s/word1/word2/gc : 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为word2!且在取代前显示提示字符给使用者确认!(常用)删除复制与粘贴x, X: 在一行字当中, x 为向后删除一个字符 (相当于 del 按键

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服