- 课程的性质与目标
《Linux编程基础》是计算机科学与技术、软件工程等本科专业的必修基础课程,本课程主要介绍了Linux操作系统中的常用命令,与Linux系统下的编程方法,目的在于帮助读者掌握Linux操作系统的使用方法与Linux编程初期所需的基础知识,为后期在Linux环境中搭建服务器做铺垫。
二、课程的主要内容及基本要求
第一章 初识Linux(2学时)
[知 识 点]
|
[重 点]
|
[难 点]
- Linux网络配置
- 远程终端访问
[基本要求]
- 了解Linux的发展历史,熟悉其特点与应用领域
- 成功搭建Linux开发环境
- 掌握Linux网络配置
- 掌握通过远程终端访问Linux系统的方法
- 熟练使用SFTP远程文件管理工具
[实践与练习]
建议跟随教材中展示的方法搭建Linux开发环境,配置网络;使用教材中展示的(或可自行网上下载其他工具)远程终端访问工具和远程文件管理工具访问Linux系统,实现线程文件管理。
第二章 命令与开发工具(5学时)
[知 识 点]
|
[重 点]
|
[难 点]
- GCC编译流程
- GDB调试工具的使用方法
[基本要求]
- 掌握常用的文件处理命令
- 掌握常用的权限管理命令
- 熟悉网络管理与通信命令
- 熟练使用压缩解压命令
- 熟练使用Vi编辑器
- 了解GCC编译流程,熟练使用GCC编译工具编译程序
- 掌握GDB调试工具的使用方法
[实践与练习]
建议亲手完成所有案例,掌握Linux常用的命令及开发工具。
第三章 用户与用户组管理(2学时)
[知 识 点]
|
[重 点]
|
[难 点]
- 用户切换
[基本要求]
- 了解Linux中用户与用户组的相关概念
- 掌握用户与用户组管理命令
- 掌握Linux系统中用户切换的方法
[实践与练习]
建议亲手完成所有案例,掌握用户与用户组管理命令,及Linux系统中切换用户的方式。
第四章 Shell编程(5学时)
[知 识 点]
|
[重 点]
|
[难 点]
- Shell变量的引用
- Shell变量的运算
[基本要求]
- 熟练运用重定向、管道与命令连接符
- 掌握Shell变量的定义和引用方法
- 掌握Shell变量的运算方法
- 熟练运用Shell中的条件判断语句
- 掌握Shell中的语句与循环
- 掌握Shell函数的构造与使用方法
- 了解Shell脚本的调试方法
[实践与练习]
建议亲手完成所有案例,掌握Shell脚本的编写方法与调试方式。
第五章 Linux文件系统与操作(6学时)
[知 识 点]
|
[重 点]
|
[难 点]
- 磁盘分区命令fdisk
- 文件系统创建命令mkfs
- ext2文件系统布局
- 数据块寻址方式
[基本要求]
- 了解磁盘的结构与逻辑分区
- 熟悉Linux系统中的目录结构
- 熟悉Linux文件的inode与dentry属性
- 熟悉fdisk命令与mkfs命令
- 掌握ext2文件系统布局
- 掌握文件系统中数据块寻址的方式
- 了解将分区挂载到文件系统的方法
- 熟悉Linux系统中的文件类型
- 掌握Linux系统中实现I/O操作的方法
[实践与练习]
建议亲手完成所有案例,掌握Linux文件系统的布局结构与相关的I/O操作。
第六章 Linux进程管理(10学时)
[知 识 点]
|
[重 点]
|
[难 点]
- 父子进程执行流程
- 进程同步
[基本要求]
- 掌握进程属性与进程处理机制
- 熟练使用fork()、exec等系统调用创建进程,处理系统请求
- 掌握实现进程同步的方法
- 熟悉终端常用的进程管理命令
[实践与练习]
建议亲手完成所有案例,掌握Linux进程处理机制,以及在Linux系统中创建进程、管理进程的方法。
第七章 信号(8学时)
[知 识 点]
|
[重 点]
|
[难 点]
- 信号捕获
- 进程同步
- 时序竞态
[基本要求]
- 了解信号的分类与产生方式
- 掌握不同情况下信号的产生方法
- 掌握屏蔽、捕捉信号的方法
- 熟练处理程序中产生的信号
- 熟练掌握利用信号机制实现进程同步的方法
[实践与练习]
建议亲手完成所有案例,掌握Linux系统中处理信号的方法,并能熟练运用信号实现进程同步,解决时序竞态问题。
第八章 进程间通信(8学时)
[知 识 点]
|
[重 点]
|
[难 点]
- 信号量模型
[基本要求]
- 了解进程间通信的常用方式
- 掌握使用管道、消息队列、信号量以及共享内存实现进程间通信的方法
[实践与练习]
建议亲手完成所有案例,掌握使用管道、消息队列、信号量以及共享内存实现进程间通信的方法。
第九章 线程(6学时)
[知 识 点]
|
[重 点]
|
[难 点]
- 互斥锁
- 条件变量
- 信号量
[基本要求]
- 了解线程的定义
- 掌握创建线程、退出线程、终止线程、挂起线程的方法
- 熟悉线程的属性,掌握通过线程属性设置线程状态的方法
- 掌握使用互斥锁、条件变量与信号量实现线程同步的方法
[实践与练习]
建议亲手完成所有案例,熟悉线程的定义、属性,掌握创建线程、退出线程、终止线程、挂起线程的方法,以及使用互斥锁、条件变量与信号量实现线程同步的方法。
第十章 socket编程(4学时)
[知 识 点]
|
[重 点]
|
[难 点]
- socket通信流程
[基本要求]
- 熟悉计算机网络体系结构
- 掌握socket编程接口与基于不同软件系统体系结构的socket通信流程
- 了解网络字节序、IP地址转换、sockaddr数据结构等知识
- 熟练使用socket编程接口实现基于C/S结构的TCP、UDP通信
- 熟悉socket本地通信
[实践与练习]
建议亲手完成所有案例,熟悉计算机网络体系结构,掌握socket编程接口与基于不同软件体系结构的socket通信流程,了解网络字节序、IP地址转换、sockaddr数据结构等知识,并能熟练使用socket编程接口实现基于C/S结构的TCP、UDP通信以及基于socket的本地通信。
第十一章 高并发服务器(2学时)
[知 识 点]
|
[重 点]
|
[难 点]
- select模型
[基本要求]
- 了解多种服务器的工作机制
- 掌握使用select、epoll模型搭建并发服务器的方法
[实践与练习]
建议亲手完成所有案例,了解多种服务器的工作机制与特点,熟悉多进程、多线程、poll服务器的搭建方法,掌握使用select、epoll搭建高并发服务器的方法。
四、考核模式与成绩评定办法
本课程为考试课程,期末考试采用百分制的闭卷考试模式。学生的考试成绩由平时成绩(30%)和期末考试(70%)组成,其中,平时成绩包括出勤(5%)、作业(5%)、实验和上机成绩(20%)。
五、选用教材和主要参考书
本大纲专为教材《Linux编程基础》设计。
六、大纲说明
本大纲根据教材《Linux编程基础》进行设计,将教学环节分为42个授课学时和18个上机学时,目的在于使学生在学习理论知识的过程中能及时进行实践,保证学生切实牢固地掌握所学知识。