导航:首页 > 编程语言 > unix环境高级编程学习方法

unix环境高级编程学习方法

发布时间:2022-05-12 01:50:48

‘壹’ 《UNIX环境高级编程》这本书怎么看怎么学习

W.Richard Stevens 先生所着之书比较适合有经验的人进一步深入学习

W.Richard Stevens 先生所着的UNIX 环境高级编程、UNIX网络编程、TCP/IP详解是难得的入门好书,但这里的入门指得是研究生级别的入门。Stevens 先生所着之书多半是为了给研究生上课时用做教材,因此 Stevens 先生假设阅读这些书的人至少已经接受过了系统的计算机技术本科教育,已经拥有了比较系统的计算机相关基础理论知识。在书中 Stevens 先生假设读者拥有了最基础的操作系统理论,网络技术理论,以及UNIX理论和实践经验,并拥有数种业界常用的UNIX系统作为学习环境(在国外的大学里很容易获得),这样才能体会书中所述的细节。因此这些书刚接触时看似通俗易懂,但在阅读细节上却对读者要求甚高,如果没有足够的专业理论和系统实践是很难真正读进去的。

所以,对于没有接受过系统的计算机专业教育的爱好者,或者主要以 linux 系统维护,或以linux 桌面应用为主的普通用户,Stevens 先生的书并不是很合适的阅读对象。

因此,就我个人的看法,掌握任何一种知识都是需要投入的。我们需要花费金钱去得知识来源(花钱买书,花钱上网,花钱培训),需要花费宝贵的时间去阅读(人生匆匆几十年,没多少时间可以给我们去浪费),需要花费精力去理解书中的内容(基础知识越扎实,理解所学内容越快,但累积基础同样需要大量时间和精力),需要找到合适的环境(光看不实践心里是不会有底的)去验证自己掌握的东西。因此,如果在决定投入之前,先要摸清楚自己到底想要达到什么样的目标,这个目标是否切合自己的实际(相信一个在流水线上辛苦劳作的普通工人,即使学会了计算机编程也是没有用武之地的,除非他有机会离开流水线)。自己是否有足够的资源承载自己的理想(如对于温饱问题尚未解决之人,要他花上千上万的钱去学MBA显然是不现实的)。

同时,任何一本书都会对读者提出一个基本的知识架构和程度上的要求,比方说即使是文学博士,让他去读高能物理学方面的书也会要他的命的。因此在选择所读之书前,先要对自己的实际能力做一次详细的评估,看自己目前到了哪种阶段,是否有能力去掌握自己想要掌握的东西。千万不要因为好高骛远而勉力为之。选择适合自己当前水平的书去阅读并理解,远好过拿着大师所着的神作干瞪眼。

如果主要希望掌握UNIX下的编程技术,尤其是网络编程技术的话,可以有两条路走:

1、以实际需要完善知识架构:为自己做一个项目,比方说自己写个简单的 Web 服务器,因为现在 Web 应用非常丰富,既有成熟的客户端如浏览器可以配合,又有足够全的文档如 RFC文档可供参考,再加上最基本的 socket 编程经验,就可以开始做自己的 Web 服务器。一步一步的为 Web 服务器添加流行的功能,如支持后台 FastCGI 接口,支持 WebDAV,支持流媒体等。在这个过程中不断地学习和掌握相关的理论知识,有时在发觉设计上的不足时甚至需要推翻全盘重新架构。当最终一个完全符合自己心意且足够实用的 Web 服务器做成时,就拥有了可以由自己支配和修改的服务器,同时也掌握了相关的专业理论。这种方式比较适合有一定专业基础的人使用。优点是直观,方向明确所以学习效率高。缺点是需求驱动,形成知识架构不容易完整。

2、系统掌握计算机专业理论:最好的书就是大学里的理论教科书,这些书不会去讲解过于具体的计算机应用,而是从概念开始讲起,力图使学习者获得一个完整的知识体系。只要以后碰到的工作和这个知识体系相关,自然就能很快学会。这种方式比较适合没有基础,或者希望深入学习的人使用,优点是知识架构会逐渐趋于完整,理论功底扎实,后劲足。缺点是花费时间长,方向不明确所以学习效率低,初期会因缺少实践而进展缓慢。

‘贰’ Linux/UNIX系统编程手册 UNIX环境高级编程 这两本书如何选择

你可以认为前者是unix/linux 系统相关的学习,比如api什么的,还有一些理论,概念. 而后者只是学C这门语言,学的是语法,再多就是数据结构. 后者是前者的基础.

‘叁’ UNIX环境高级编程

ubuntu是可以的。编译环境的话装好ubuntu之后就自带了,你可以打开终端输入gcc -v就知道你的编译器版本了。还有你可能需要装其他的库文件。
那本书的话建议你在没有了解linux系统的时候,最好从基础开始学起,不管怎么说,里面需要熟悉很多linux的命令,尽管他的名字是《 UNIX环境高级编程》,但是他在序言里面说了,第二版的书涉及linux。
你最好还是去了解一下系统的命令怎么用,然后再去学习。

‘肆’ unix环境高级编程 可以用linux学吗

UNIX环境高级编程》这本书对于初学者来说还太难。建议从基础开始学习。 linux: Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和中国络协议。它支持32位和64位硬件。Linux继承了Unix以中国络为核心的设计思想,是一个性能稳定的多用户中国络操作系统。 Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。 严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统

‘伍’ 怎么学<<UNIX环境高级编程>>这本书,学习方法,思路

如果C语言不过关的话建议,建议先读《C缺陷与陷阱》 《C专家编程》

APUE是你那本书的简称, 方法就是以章为节点 先通读一遍,有个概念,然后去linux下练习学到的函数。从文件i/0 到进程 线程 进程通信 线程同步 SOCKET。。等。。

如果学了1个月还没感觉入门的话,建议更换教材,《linux 程序设计》更适合入门选手。

奉劝一句,嵌入式linux 对硬件基础和C的要求很高,学也不是一天两天的功夫,建议先工作两年打下基础后再研究!

‘陆’ 请问怎么学UNIX C

一、概述

标准 UNIX 操作系统是一个交互式的分时系统,提供了一个支持程序开发全过程的基础和环境,可以支持40个终端用户。UNIX系统是由美国电报电话公司(AT&T)下属的Bell实验室的两名程序员K.汤普逊(Ken Thompson)和D.里奇(Dennis Ritchie)于1969~1970年研制出来的。UNIX问世以来十分流行,它运行在从高档微机到大型机各种具有不同处理能力的机器上。目前,UNIX除了可在PDP-11 、DEC公司的VAX-11系统的各种机型上运行之外,还可以在IBM的370、3300系列机和Amdahi公司、Data General公司、Hp公司的系列机上。近年来,几乎所有的16位机、32位微型计算机都竞相移植UNIX。这种情况在操作系统发展的历史上是极为罕见的。随着UNIX的普及,书写系统的C语言也成为引人注目的语言,得到广泛使用。

UNIX系统获得了巨大的成功,这有着内在的原因和客观的因素。客观条件之一是,UNIX问世之前己有许多操作系统研制成功,其中有成功的经验,也有失败的教训,而UNIX的设计者正是经过认真考虑,作了适当的取舍,使UNIX站在前人肩头上获得成功(MULTICS用了200人年未达到原定目标,UNIX只用了2个人年);其二是,由于当时人们需要一个使用方便、能提供良好开发环境、大小适中的系统,UNIX恰是生逄其时;其三是,UNIX是在PDP-11系列机上开发出来的,这种机器在世界上己得到广泛应用,这为UNIX广泛配置创造了条件。当然,UNIX成功的关键是在于自身的性能和特点。

UNIX的主要特点是:短小精悍、简易有效、并具有易理解、易扩充、易移植性。

UNIX的核心程序由约10000行C语言代码和1000行汇编语言代码构成,被分成能独立编译和汇编的44个文件,每个文件又分若干过程。这些文件可分以下三类:

⑴汇编语言文件:系统只有2个文件用汇编语言编程,包含33个汇编子程序,与机器硬件直接相关的部分,如中断处理、系统启动等,为了提高效率,有些频繁使用的基本过程,也用汇编语言编写。

⑵C语言文件:共有28个,其中包括进程管理的主要过程,它们又可分成190个子程序 。文件可以独立编译,经装配程序连接装配后就可执行。

⑶C语言全局变量文件:共14个,其中含有结构的重要说明。这类文件不能独立编译,而必须和某个C语言文件一起编译。

二、UNIX操作系统的主要特点

1.精巧的核心与丰富的实用层

UNIX系统在结构上分成内核层和实用层。核心层小巧,而实用层丰富。核心层包括进程管理、存储管理、设备管理、文件系统几个部分。UNIX核心层设计得非常精干简洁,其主要算法经过反复推敲,对其中包含的数据结构和程序进行了精心设计。因此,核心层只需占用很小的存储空间,并能常驻内存,以保证系统以较高的效率工作。

实用层是那些能从核心层分离出来的部分,它们以核外程序形式出现并在用户环境下运行 。这些核 外程序包含有丰富的语言处理程序。UNIX支持十几种常用程序设计语言的编译和解释程序,如C、APL、FORTRAN77、PASCAL、SNOBOL、COBOL、BASIC、ALGOL68等语言及其编译程序。还包括其他操作系统常见的实用程序,如编辑程序、调试程序、有关系统状态监控和文件管理的实用程序等。UNIX还有一组强有力的软件工具,用户能比较容易地使用它们来开发新的软件。这些软件工具包括:用于处理正文文件的实用程序troff,源代码控制程序SCC
S(Source Code Control System),命令语言的词法分析程序和语法分析程序的生成程序LEX(Generator of Lexical Analyzers)和YACC(Ye
t Another Compiler Compiler)等。另外,UNIX的命令解释程序Shel
l也属于核外程序 。正是这些核外程序给用户提供了相当完备的程序设计环境。

UNIX的核心层向核外程序提供充分而强有力的支持。核外程序则以内核为基础,最终都使用由核心层提供的低层服务,它们逐渐都成了“UNIX系统”的一部分。核心层和实用层两者结合起来作为一个整体,向用户提供各种良好的服务。

2.使用灵活的命令程序设计语言Shell

Shell首先是一种命令语言。UNIX 的200多条命令对应着200个实用程序。Shell 也是一种程序设计语言。它具有许多高级语言所拥有的控制流能力,如if、for、while、until、case语句,以及对字符串变量的赋值、替换、传替参数、命令替换等能力。用户可以利用这些功能用Shell语言写出“Shell”程序存入文件。以后用户只要打入相应的文件名就能执行它。这种方法易于系统的扩充。

3.层次式文件系统

UNIX系统采用树型目录结构来组织各种文件及文件目录。这样的组织方式有利于辅助存储器空间分配及快速查找文件,也可以为不同用户的文件提供文件共享和存取控制的能力,且保证用户之间安全有效的合作。

4.文件和设备统一看待

UNIX系统中的文件是无结构的字节序列。在缺省情况下,文件都是顺序存取的,但用户如果需要的话,也可为文件建立自己需要的结构,用户也可以通过改变读/写指针对文件进行随机存取。

UNIX将外围设备与文件一样看待,外围设备如同磁盘上的普通文件一样被访问、共享和保护。用户不必区分文件和设备,也不需要知道设备的物理特性就能访问它。例如系统中行式打印机对应的文件名是/dev/lp 。用户只要用文件的操作(write)就能把它的数据从打印机上输出。这样在用户面前,文件的概念简单了,使用也方便了。

5.良好的移植性

UNIX的所有实用程序和核心的90%代码是用C语言写成的,这使得UNIX成为一个可移植的操作系统。操作系统的可移植性带来了应用程序的可移植性,因而用户的应用程序即可用于小型机,又可用于其他的微型机或大型机。从而大大提高了用户的工作效率。

虽然UNIX系统取得了巨大的成功,但它也不是没有缺点的。概括起来,对UNIX的批评有如下几点:

1.UNIX系统的版本太多,造成应用程序的可移植性不能完全实现

UNIX是用C语言写成的,因而容易修改和移植。UNIX也鼓励用户用UNIX的工具开发适合自己需要的环境,这样造成了UNIX版本太多而不统一。为了解决这一问题,目前 AT&T己与四家重要的微机厂家(Inte
r,Motorola ,Zilog和National Semiconctor)合作制订统一的UNIX
system V版本,这将会给UNIX的标准化以重大影响。

2.UNIX系统缺少诸如实时控制、分布式处理、网络处理能力

这一缺点也在不断改进中,以UNIX为基础的分布式系统和具有实时处理能力的系统己在研制中,有的已研制成功。

3.UNIX系统的核心是无序模块结构

UNIX系统的核心有90%是用C语言写成的,但其结构不是层次的,故显得十分复杂,不易修改和扩充。

UNIX系统的这些缺点比起它的成就而言是十分次要的,它的成功是辉煌的。

三、UNIX系统结构

UNIX操作系统采用以全局变量为中心的模块结构,因而系统结构较为复杂,这主要表现在:模块间的循环调用和文件之间的全局变量问题。

从结构上看,UNIX可以分为核心层和外壳层,核心层又分成与硬件接口的设备驱动、物理存储块管理的最低层及实现存储管理、文件管理、设备管理、进程管理等功能的低层。核心的外层是系统调用,它是UNIX核心的对外接口。最外层的Shell是用户与UNIX系统的接口,其他的各种实用程序和用户程序也在这一层运行。

系统结构如图8.1所示。

1.Shell

UNIX提供的用户接口是一种被称为Shell的命令语言,这种命令语言的解释程序也称为Shell 。在系统初始启动时为每个用户建立一个Shell进程,每个Shell进程等待用户输入命令。命令的最简单形式是一个命令行,由命令名和若干参数组成,中间用空格隔开。Shell解释执行命令时,先区分命令名和参数,然后根据命令名找出对应的文件,把文件读入内存,并按给出的参数解释执行。

命令的执行是通过 fork 系统调用来完成的,Shell进程调用for
k后,fork创建一个Shell进程的子进程且让Shell进程等待。子进程解释执行命令,命令执行结束时子进程调用exit系统调用完成终止子进程和释放父进程的工作。Shell进程被释放后,给出允许用户输入下一个命令行的提示,命令的基本执行过程如图8.2。

UNIX的交互系统要求用户必须等待前一行命令执行结束,在终端上出现提示符后才能输入下一个命令行。由于有些命令的执行时间较长,因此为了减少用户等待时间,在UNIX系统中允许用户使用Shell命令语言编写程序来表示一组命令的执行顺序,用命令语言编写成的程序称Shell程序。Shell程序存放在文件上,需要时由命令解释程序去执行Shell程序中的各个命令。

2.系统调用

系统调用是用户程序请求操作系统为其服务的惟一形式,在UNIX中把系统调用称为程序员接口。UNIX规定用户程序用捕俘(trap)指令请求系统服务,UNIX核心中的中断捕俘程序根据trap的类型转向相应的处理程序。Trap指令形式如下:

UNIX第6版共有41条系统调用,可以分成以下三类:

①与进程管理有关的系统调用,如建立子进程、等待子进程、睡眠、发信号、修改数据段大小等。

②与文件管理有关的系统调用,如建立文件、连接文件、打开文件、关闭文件 、读文件 、写文件以及修改当前目录、修改文件属性等。

③其他系统调用,如取当前用户号 、取日历时间 、读取进程运行时间、改变优先数等。

在系统调用中,参数的传递有两种方式。第一种方式:在程序中通过trap指令后继单元传送。这一方式又分为直接方式和间接方式。在直接方式中,允许在trap指令的后继单元中最多可放5个参数;在间接方式中,trap指令的后继单元放的是一个参数区指针,在这个参数区可以存放更多的参数。第二种方式是通过寄存器R0,R1传递参数的。

UNIX的系统程序员界面这包括了大量的库子程序和标题文件。标题文件定义了在系统调用中使用的复杂数据结构;库子程序和库函数为系统调用提供了附加的程序支持。

3.存储管理

UNIX系统最初是在 PDP-11 上开发的,PDP-11是段式结构的存储器,在PDP-11中把段称作页,每一页可包含若干块,每块64个字节,主存以块为单位进行分配。

存储分配采用优先适应算法,存储空间使用空闲区表来管理。每表占50项,每项2个单元,一个指向相应空闲区起始块号,另一个指出空闲区大小。表内各项次序按空闲区地址从低到高排列,若有两个相邻空闲区则合并成一个。表项内容为0,表示表尾。

由于PDP-11不支持虚拟存储器,所以UNIX中内存用户区和磁盘对换区的分配和释放由存储管理模块管理。在对换程序的管理下内存用户区和磁盘对换区连成一体,起着虚拟存储器的作用。对换进程扫描PCB表,发现辅存有就绪进程时,查内存是否有空闲区,若有空闲区则直接调入;否则要把内存中某些进程换出,若内存没有可换出进程,则对换进程处于等待状态,直到某些事件发生,唤醒后再度工作。辅存有多个就绪进程时,按先进先出换进内存;内存有多个进程可换出时,则选可换进程中优先数低的进程换出。

当进程要增加页长时,可通过申请新页、释放旧页来实现。若内存无足够空间,则在辅存申请新页,同时将进程整个换到辅存。

‘柒’ 听说《UNIX环境高级编程》很难,而且需要c语言学得很好才容易看懂,请问需要先学哪些基础才看这本书

如果学过了C,看《Linux程序设计》应该是没有问题的,只是这本书并不只是讲C语言的知识,它讲了许多关于Linux系统的知识,如果你以前从没有使用过命令行,从没有使用过Linux,应该是有些费劲的,不过说实在的这本书确实很棒。

另外不管别人怎么说,自己读了才是硬道理,你就下一个电子版的试读一下,看看“自己”的感觉如何再做定夺。

‘捌’ 想学计算机编程但是不知道学什么

1.首先刚入门的话,你要先明确目标选择一门编程语言入门。个人建议选择java或者C。在学习编程语言的时候,计算机有关的知识你也是需要涉及的,也要多多去了解一下,看一些书籍,在网上下载视频边看边学效果会好一些。在你理论知识的基础上学习起来会相对容易一些。当你熟悉掌握一门语言后,这个时候就可以有学习的目标了。自己对哪方面感兴趣喜欢哪种语言就学哪门。

2.我这边来简单介绍一下java的学习内容吧。

①JAVA编程基础(基础语法、面向对象、和谐特性等)

②WEB应用开发(静态网页制作、Oracle数据库、Java Web开发技术、Linux技术、网站性能与安全、软件工程开发流程、Java Web和谐等)

③企业级框架开发(数据结构与算法、SSH框架、JavaEE和谐等)

④项目实训

3.如果你真的想学好编程语言,C语言也是蛮重要的。但是新手学C语言通常会出现一个问题,就是除了写个排序算法,似乎根本想不出来C语言有什么用。这是因为我们的教科书讲C语言的时候,只讲这些基本算法,甚至连读写文件都不去讲,更不用说图形界面处理了和网络操作了,没有这些知识,想写一个真正的应用那是不可能的。不过,书上没有不等于学不了,文件操作和网络操作的讲解网络上有着大把的讲解,只要你找几篇文章看看,具备了这些基础知识,写一个自己的WEB服务器并不难。在逐步增加功能完善功能的同时,你的C语言基本上就可以达到相当牛人的水平了。

4.互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。

想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,建议实地考察对比一下。

祝你学有所成,望采纳。

‘玖’ unix高级环境编程 应该怎么使用

Stevens着有三大本:UNIX环境高级编程、TCP/IP详解、UNIX网络编程。
我是抱着学习网络编程进而阅读web framework源码来学习它们的。
另外也是想提升一下自己的编程素养,为以后看kernel源码什么的做铺垫。

首先我是买了这本书,另外两套暂时没买。
开始也是各种不解,我就是想内核究竟干些啥事,如何通过system_call与之通信?

其实读这些书需要一些基础的。
操作系统原理、gcc、shell等等。

其实我也没全看完,建议先把环境装好(编译apue.h),然后一个一个运行书中示例。当然不是盲目的学,要知道自己差那一块就补那块。

‘拾’ 我刚刚开始按《UNIX环境高级编程》来学习LINUX编程,上面有很多库函数,记不住怎么用怎么办

不可能完全记得每个函数的所有用法的,有的函数参数多,使用方法复杂。

常用的记得就可以了,不常用的查手册。

这东西就这样,即使你今天全部记下来了,过一阶段不用,又忘了。

阅读全文

与unix环境高级编程学习方法相关的资料

热点内容
泡沫APP在哪里下载 浏览:937
简述高级语言进行编译全过程 浏览:39
管家婆辉煌2加密狗挪到另一台电脑 浏览:760
摩托车在哪里app看考题 浏览:356
苹果5app在哪里设置 浏览:737
如何查看服务器的磁盘使用 浏览:165
python蒙特卡洛模型投点图 浏览:330
安卓手机属于什么接口 浏览:742
微信群推广网站源码 浏览:764
九江离鹰潭源码 浏览:719
python可以当作函数的返回值 浏览:422
地铁逃生体验服怎么进入安卓 浏览:833
齐鲁工惠app的中奖记录在哪里 浏览:759
linuxkill命令详解 浏览:103
dhcp服务器动态分配地址 浏览:265
门禁卡加密了能破解吗 浏览:215
在哪里下载百度网盘app 浏览:917
服务器要升级什么意思 浏览:831
银行还房贷解压方法 浏览:702
服务器主机办公如何提速 浏览:920