Linux系统编程------知识体系

一.知识点梳理

1.Linux操作系统基础概念

1.1 Linux是什么?

Linux通俗的讲是一种操作系统,但其实是系统的内核,是上层内容和基础内容相互交流的桥梁

1.2 基于Linux内核发布的版本

  • Redhat系列

CentOS (RHEL的社区克隆版本,免费版本,稳定性非常好,适合服务器使用)
Fedora Core (由原来的Redhat桌面版本发展而来,免费版本,稳定性较差,最好只用于桌面应用)
RHEL (Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本,稳定性非常好,适合服务器使用)

  • Debian 系列

Debian
Ubuntu

  • FreeBSD
  • Android

1.3 最基础的Linux操作系统

  • Linux内核
  • shell
  • 标准库

基础软件包含了:gcc、g++、gdb、glibc

2.Linux内核的子系统

2.1 进程管理子系统

2.1.1 什么是进程?

进程就是当程序被操作系统装载到内存并分配给它一定资源时。
进程是操作系统分配资源的最小单位
程序是代码和数据的集合性的静态概念,而进程是程序一次执行的实体,是一个动态概念。

2.1.2 进程是如何运行的?
  • 读取文件

系统按照文件资源进行分配内存,生成并调用栈,按照调用栈执行

  • 二进制文件

ELF可执行与可链接格式 :.o目标文件、可执行文件、静态库、动态库
目标文件与可重定位文件
可执行文件:文件段构成:

  • 内核识别二进制文件

内核有一个加载二进制文件的结构体:struct linux_binfmt

2.1.2 内核当中如何标记进程?
  • PCB中生成空间存放进程信息:

1.PID:进程号
2.state:进程状态
3.Thread_info:线程信息
4.mm:mm_struct:内存描述符的指针
5.tty:tty_struct:运行终端描述
6.fs:fs_struct:文件系统、当前程序的运行环境
7.signal:signal_struct:信号描述
8…

  • 进程会占用和消耗哪些资源?

内存、CPU、硬件设备

  • 进程都有哪些状态

D:不可中断睡眠(通常是在IO操作)收到信号不唤醒和不可运行,进程必须等待直到有中断发生
R:正在运行或者可运行(在运行队列排队中)
S:可中断睡眠(休眠中、受阻、在等待某个条件形成或者接受到信号)
T:已经停止的进程,收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU信号后停止运行
X:死进程
Z:僵尸进程
<:高优先级
N:低优先级
L:页面锁定在内存
s:一个信息头
l:多线程
+:在前台进程组

2.2 内存管理子系统

2.3 文件管理子系统

2.3.1 Linux下一切皆文件

Linux操作系统下,所有组件都是通过文件形成的

2.3.2 文件的常用系统调用
  • open
  • read
  • write
  • lseek
  • ioctl
  • close
2.3.3文件描述符

内核在进程打开的时候,会用一个不大于1024的整数来记录文件的位置,相当于一个索引
对于标准输出的列子:标准输入0,标准输出1,标准错误2

2.3.4 文件类型
  • ‘-’:表示普通文件
  • d:为目录文件
  • c:字符设备文件
  • b:块设备文件
  • p:管道文件
  • l:链接文件
  • s:socket文件

2.4 设备管理子系统

2.5 网络管理子系统

3.计算机系统

3.1 内核

3.2 上层应用软件

3.3 架构

  1. 应用层

获取数值,进行计算处理并且返回结果

  1. 内核

从内存当中获取值,拿到处理结果

  1. CPU

将进行的 操作者存到对应的内存当中

  1. 硬件接口
  2. 硬件

鼠标、键盘、显示器等等

二. 重难点总结

1.文件节都是由哪些结构组成的?

ELF Header:标记ELF的头部
.text:存放已经编译好的可执行的代码
.data:已经初始化好的全局变量
.rodata:只读数据、const的变量、字符串常量
.bss:未初始化的全局变量,运行时会 置为0
.symtab:符号表、记录函数和变量
.strtab:字符串表,字符串常量和变量名
.rel.text:引用到其他文件的函数
rel.data:引用到其他文件的全局变量
section header table:记录上述节位置的表

三.自我总结

主要熟悉和学习了Linux系统的组成和一些关于文件子系统上细节的知识,尽管有很多并不能看懂,但是先存到自己的脑海里面,也许编程这条路上走着走着就明白了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值