Linux 系统编程

第一章 操作系统概述

1.1 计算机的基本组成

1.2 操作系统及其发展

1.3 Linux 操作系统

一、组成

1. 内核
  • 操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统

  • 控制系统和硬件之间的相互通信

  • 决定着系统的性能和稳定性

2. shell
3. 文件系统
4. 应用程序

二、基本概念

1. 文件和文件系统

文件:数据或设备的一种逻辑组织

文件系统:文件间关系管理的一种逻辑组织

2. 程序和进程

程序:计算机执行的指令集合

进程:程序的一个运行实例,操作系统资源分配的最小单位

3. 线程(轻量级进程)

线程是程序运行的基本单位,一个进程内部可以有一或若干线程同时运行

4. 信号

Linux 系统中进程通信的一种技术,异步程序设计的基础

5. 客户端和服务器

三、Linux 启动流程

  • 芯片和部分周围电路初始化
  • 加载内核
  • 加载最小文件系统
  • 加载硬盘上的根文件系统
  • 启动 1 号进程/sbin/init

四、Linux 内存管理

1. 内存模型

2. 内存管理特点
  • 进程隔离

    保护独立的进程,防止相互干涉数据和存储空间

  • 自动分配和管理

    动态分配,对程序员是透明的

  • 支持模块化的程序设计

    能够自定义程序模块,并动态地创建、销毁模块,改变模块大小

  • 保护和访问控制

    允许一部分内存可以由各种用户以各种方式进行访问

  • 长期存储

    关机后长时间保存信息

3. 段页式内存管理
  • 进程在虚拟内存中分为代码段、数据段和堆栈段
  • 进程在段中有许多固定大小的块组成,这些块成为页
  • 虚拟地址由段号、页号和页中偏移量构成
  • 虚拟地址和物理地址由内存管理单元(MMU)动态映射
  • 内存和磁盘中的交换区会进行换页(换出、换入)

五、系统调用

1. 概念

系统调用是指操作系统提供给用户程序的一组特殊接口,用户程序可以通过这组接口来获得系统内核提供的特殊服务。

截屏2022-11-22 20.32.30

2. Linux 进程的运行状态
  • 内核态:进行系统调用,进程运行在内核空间
  • 运行态/用户态:进程运行在用户空间
3. IEEE POSIX 标准

在 Linux 中用户编程接口(API)遵循了在 UNIX 中最流行的应用编程界面标准—— POSIX 标准。这些系统调用编程接口主要通过 C 库(libc)实现。