Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Northeastern University

Linux操作系统

Northeastern University via XuetangX

Overview

    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 常用命令介绍

Syllabus

  • 讲义及云实验平台
    • 第一章 Linux操作系统概述
      • 第二章 基本命令和C语言开发环境
        • 第三章 文件描述符
          • 第四章 用户
            • 第五章 文件系统
              • 第六章 信号
                • 第七章 进程
                  • 第八章 I/O重定向和管道
                    • 第九章 网络编程
                      • 第十章 Web服务器
                        • 第十一章 线程
                          • 第十二章 进程间通信
                            • 第十三章 I/O多路复用
                              • 第十四章 调试
                                • 期末考试

                                  Taught by

                                  Shi Kai

                                  Reviews

                                  Start your review of Linux操作系统

                                  Never Stop Learning.

                                  Get personalized course recommendations, track subjects and courses with reminders, and more.

                                  Someone learning on their laptop while sitting on the floor.