Linux 系统编程|概述
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. 概念
系统调用是指操作系统提供给用户程序的一组特殊接口,用户程序可以通过这组接口来获得系统内核提供的特殊服务。
2. Linux 进程的运行状态
- 内核态:进行系统调用,进程运行在内核空间
- 运行态/用户态:进程运行在用户空间
3. IEEE POSIX 标准
在 Linux 中用户编程接口(API)遵循了在 UNIX 中最流行的应用编程界面标准—— POSIX 标准。这些系统调用编程接口主要通过 C 库(libc)实现。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Riccardo's Blog!