客服咨询

意见反馈

Linux操作系统
网络信息工程/网络信息工程/
0.0
2
视频
14.0
课时
28.00
介绍
目录

课程概述

Linux本质上是一种运行于PC或PC服务器上的一种UNIX。UNIX自1969年至今已经有几十年的历史,积累了大量的技术和知识。作为目前最重要的生产环境,Linux在工业界的应用涉及系统管理、部署和运维、服务端开发、嵌入式开发、内核裁剪等。每一种技能都需要大量时间学习,并需要实际操作进行磨砺。这使得初学者面临海量知识无从下手,学习困难,比较茫然。为了解决这一问题,本课程选择讲授以Linux系统调用和系统原理为主,系统使用为辅。系统调用是操作系统的接口,不仅定义了操作系统所需要提供的功能,同时也定义了应用程序的行为。通过学习系统调用,不仅能掌握系统级编程本身,向下可以学习操作系统原理,了解内核的功能;向上可以编写系统命令——既然能够编写,使用系统命令更是易如反掌。当你学习完本课程后,将具备设计、开发和维护大型Linux网络应用程序的能力。往届学生反映,凭借在本课学习的知识,使他们成长为后端开发工程师、运维工程师、以及架构师。通过本课程的学习,可以培养出扎实的操作系统理论基础和系统级软件开发的基本功。

课程目标

考核评价

详细介绍

    Linux本质上是一种运行于PC或PC服务器上的一种UNIX。

    UNIX自1969年至今已经有几十年的历史,积累了大量的技术和知识。作为目前最重要的生产环境,Linux在工业界的应用涉及系统管理、部署和运维、服务端开发、嵌入式开发、内核裁剪等等。每一种技能都需要大量的时间进行学习,并需要实际操作进行磨砺。这使得初学者面临海量知识无从下手,学习困难,比较茫然。

    为了解决这一问题,本课程选择讲授以Linux系统调用和系统原理为主,系统使用为辅。系统调用是操作系统的接口,不仅定义了操作系统所需要提供的功能,同时也定义了应用程序的行为。通过学习系统调用,不仅能掌握系统级编程本身,向下可以学习操作系统原理,了解内核的功能;向上可以编写系统命令——既然能够编写,使用系统命令更是易如反掌。

    通过本课程的学习,学生可以掌握Linux原理以及在Linux下进行系统级开发的相关知识,具体包括:Linux使用,包括GNU Unix命令、man手册、vi编辑器、文件系统管理、shell编程;Linux下使用C语言进行程序开发,我们将学习文件描述符、用户、文件系统、信号、进程、重定向和管道、网络编程、应用服务器、多线程、共享内存、信号量、I/O多路复用等相关的系统调用及开发技术。

    当你学习完本课程后,将具备设计、开发和维护大型Linux网络应用程序的能力。往届学生反映,凭借在本课学习的知识,使他们成长为后端开发工程师、运维工程师、以及架构师。希望你也能通过本课程的学习,培养出扎实的操作系统理论基础和系统级软件开发的基本功。

    这门课的内容很多,希望你能坚持到最后。

    本课程内容目录如下。

    第一章 Linux操作系统概述

    第二章 基本命令和C语言开发环境

        2.1 用语言来操作Linux——会说英语就会用Linux

        2.2 man手册——你不需要买任何参考书了!

        2.3 管道符和重定向符

        2.4 Vi编辑器——初学者的噩梦

        2.5 C程序的编译和运行

    第三章 文件描述符

        3.1 文件描述符——用于表示一个打开文件的非负整数

        3.2 读文件-模仿cat命令

        3.3 一切皆是文件——只要会读写文件,你能做任何事!

        3.4 修改文件描述符的属性

    第四章 用户

        4.1 用户分类

        4.2 如何在系统中表示一个用户?——系统配置文件多在/etc

        4.3 添加/删除用户——系统管理命令?就是帮你修改文件而已

        4.4 如何在系统中表示一个“已登录”的用户?

        4.5 编写who命令

    第五章 文件系统

        5.1 目录也是文件

        5.2 Unix文件系统结构

        5.3 编写ls命令

        5.4 ls -l详解

        5.5 mode详解

        5.6 用stat获取文件属性

        5.7 位运算和掩码——把bit从整数中抠出来

        5.8 编写ls -l

        5.9 chmod和umask

        5.10 文件的创建和复制:编写cp命令

    第六章 信号

        6.1 什么是信号?——信号=死亡?

        6.2 信号处理

        6.3 sleep函数的实现——天天用sleep,你真的懂吗?

        6.4 间隔计时器

    第七章 进程

        7.1 进程概念和进程监视

        7.2 进程从哪里来?

        7.3 让进程运行程序

        7.4 进程是怎么没的?——wait系统调用

        7.5 僵尸进程和孤儿进程

    第八章 I/O重定向和管道

        8.1 标准输入、标准输出与标准错误输出

        8.2 最低可用文件描述符原则

        8.3 I/O重定向

        8.4 管道

    第九章 网络编程

        9.1 TCP/IP和Socket编程接口

        9.2 TCP socket系统调用

        9.3 写一个简单的TCP服务器

        9.4 写一个简单的TCP客户端

    第十章 Web服务器

        10.1 HTTP到底是什么?

        10.2 编写单进程单线程Web服务器

        10.3 编写多进程Web服务器——打电话的客户太多了?多雇一些话务员吧

        10.4 编写prefork的Web服务器——客户来了再雇人?我建议你提前雇一些

    第十一章 线程

        11.1 线程到底是啥?

        11.2 POSIX多线程编程

        11.3 线程同步:生产者消费者

        11.4 消除僵尸线程

        11.5 多线程的Web服务器

    第十二章 进程间通信

        12.1 进程间通信(IPC) 

        12.2 System V共享内存编程

        12.3 使用POSIX信号量进行进程同步

    第十三章 I/O多路复用

        13.1 什么是I/O多路复用(Multiplexing)?

        13.2 select和基于select的Web服务器

        13.3 基于epoll的Web服务器

    第十四章 调试

        14.1 Linux_ELF文件格式

        14.2 gdb基本调试方法

        14.3 gdb高阶用法

        14.4 coredump文件的生成与解析

        14.5 常用命令介绍