Unix/Linux系统编程自学笔记-第一章:序章
0、第一章为绪论章,主要介绍了本书的特点和主要内容以及服务对象,还简要介绍了Unix/Linux系统的发展史以及如何在虚拟机环境下安装调试Ubuntu Linux系统,以及相应的Linux基本操作。
1、本书主要内容是Unix/Linux的所有基本组件:
1.进程管理
2.并发程序
3.定时器和时钟服务
4.文件系统
5.网络编程
6.MySQL数据库系统
除此之外,还有很多的编程的实践内容,拥有许多大学实践编程题目。
2、本书的目的
1.本书除了主要介绍Unix/Linux系统编程之外,还有许多的C语言编程实践。
它涵盖了程序开发的方方面面,包括了汇编器、编译器、链接器、可执行文件内容、程序执行镜像、函数调用约定、参数传递方案、局部变量、栈帧、将C源程序与汇编代码链接、程序终止和异常处理(可用于程序检错,这是我一直所欠缺的知识内容)。此外还有如何用makefile管理大型编程项目以及使用GDB调试程序的执行。
这些内容可以说是对于之前C编程学习的总结强化,在学习完程序设计和数据结构后,因为疏于练习,我的编程能力很是不足,在这个学期和下学期的课程中重新跟着娄老师和这本书学习一下编程与系统,相信对于我的帮助将会是巨大的。第二章将详细讲解这些内容。
2.动态数据结构的应用
针对大部分数据结构课程所遗漏的的关于链表、链队列、链栈和链树等动态数据结构的实际应用意义,本书将通过C语言下的C结构、指针、链表和链树的编程练习实践来讲解这些知识。
确实,之前的数据结构只是讲解了数据结构的定义和使用,并没有深入到它们的应用场所,数次实验也是限于实现书上链表、树和图,而很少提到应用场景,希望这本书能讲清楚,让我能把这些知识更好的掌握。这部分在第二章。
3.进程的概念
进程是系统编程中的重点部分,也是这本书的重点,虽然在计算机组成原理这门课中也有进程和线程的相关内容,但是并没有深入的讨论,所以这将会是一个新的知识内容,还有一些编程实践内容等着我做。本书介绍的是Unix/Linux中的进程管理,其内容包括:
①fork() 、exit() 、wait() 和exec()等
②通过sh模拟器执行命令来进行I/O重定向和借由管道链接的复合命令
这部分包含在第三章。
4.并发编程
并发计算是计算的未来,并行计算和并发编程的学习也十分的重要,这部分内容位于第四章。
5.定时器和定时功能
定时器和定时功能对于进程管理和文件系统是必不可少的,第五章将会讲解Unix/Linux中的硬件定时器原理、定时器中断和时钟服务功能。并且会有一个实践题目。
6.信号、信号处理和进程间通信
信号与信号处理是理解程序异常和进程间通信(IPC)的关键。本书将在第六章讲解这些内容,它是学会看懂报错,处理异常的关键。
7.文件系统
除开进程管理以外,文件系统是操作系统的第二大组成部分,在第七章中,本书将会讲解如何操作Unix/Linux系统中不同层次的文件操作和Unix/Linux内核中的文件系统支持、文件操作的系统调用、库I/O函数、用户命令和sh脚本。实践题目会着重于I/O编程、中断处理以及进程与I/O设备间的同步机会。
8.TCP/IP与网络编程
这一部分将就TCP/IP协议族、套接字API、UDP和TCP套接字编程展开讲解。TCP/IP协议族在之前的计算机网络中已经学习过了,它是互联网通信中的关键协议族,在Unix/Linux系统中它们将会如何运行是这一部分的重要内容。还有Linux下的HTTP和Web编程,如何在Linux下配置HTTPD服务器来实现HTTP编程,以及使用HTML创建静态网页以及使用PHP构建动态页面。这些都是在Unix/Linux实现之前在Windows下实现过的东西。在对比中会更好的理解Linux系统和网页编程。
3、介绍了这本书的特点以及目标读者
目标受众肯定是计算机和编程课的学生使用和相关从业者。
特点主要是上述的各章的内容,最大的特点就是本书着重介绍了编程的实践,整本书都是通过完整具体的示例程序来说明系统编程技术的。各章的编程项目题目大多是大学课程中的题目,很有含金量,也有更好的教学意义。
4、介绍了Unix和Linux的产生与发展史
1.Unix诞生于上世纪七十年代,经过近五十的不断发展,已经产生了各种版本,功能也愈发的完善。
2.Linux是一个类Unix系统,1991年由Linus Torvalds开发,基于Intel x86系统开发而来,以其免费和易安装广受欢迎。
5、如何在Windows系统中安装一个虚拟机中的Linux系统
推荐了VirtualBox和VMware两款虚拟机,VirtualBox以免费著称,而VMware需要收费,不过VMware Workstation是免费的,我选择的是BUG较少较稳定的VMware。
安装VMware虚拟机和Ubuntu与书上类似,不过时间久远,版本已经大变了,所以自己百度了安装方法,跟着教程完成了Linux的安装。在安装完gcc和vim后开始了helloworld。