linux(基础回顾 进程概念 内存管理 程序地址空间)

/进程概念

//冯诺伊曼体系结构;现代计算机的硬件体系结构

//将计算机硬件划分为5大类 输入设备 输出设备 存储器 运算器 控制器

//在计算机中 数据流是围绕内存工作 意味着cpu要处理任意的数据 都需要先把数据放在内存中

//因此如果我们要应用一个程序 先把这个程序的指令加数据 加载到内存中

//操作系统的功能层次划分

//操作系统是什么 是一个软件 负责对计算机上的软硬件资源进行管理

//系统调用接口 操作系统内核提供给上层用于进行计算机操作的接口

//库函数 就是对系统调用接口进行二次封装接口

//库函数和系统调用的关系 库函数内部调用了系统调用接口

//进程概念

//站在用户的角度 运行中的程序

//站在系统的角度 对应运行中的程序的动态运行中的描述

//这个描述在linux下是结构体形式 struct task_struct{}

// 进程到底描述了什么信息

// 1 标识符 进程ID pid

// 2 进程调度信息 描述了如何调度一个程序的运行

// 3 进程状态 对进程不同运行状态进行描述 让进程在合适的时候做合适的事情

// 4 进程的内存管理 进程内部所有的数据都会占据内存 了解进程内部内存管理方式

// 5 进程内打开的文件信息 通过了解这块信息 更加深入的了解系统调用I/O

// 6 进程间通信资源管理 描述进程间通信相关资源信息

// 7 进程信号的软中断相关内容

// 8 . . .

// 1 标识符 进程ID 其实就是一个数字

// 在linux下可以通过ps指令查看进程信息 ps -ef

// 2 进程调度

// 并行 多个进程可以同时进行

// 串行 有多个进程 但是同一时间只能运行一个

// 并行和串行 在计算机上取决于CPU核心数量 每个CPU核心上都有一套独立的寄存器

// 计算机上运行的程序非常多 但CPU核心很少 如何让他们同时运行

// CPU分时机制

// 一个程序运行的时候 只能cpu上运行很短的一段数据(时间片) 时间片运行完毕 则切换下一个进程运行

// 分时机制 实现了多个进程在宏观上的并行 但是我们要理解微观上他们实际上是串行的

// 一旦程序是切换运行的 等切换回来的时候 cpu又怎么知道该从哪里开始继续运行

// 为了解决这个问题 因此在task_struct (PCB-进程控制块) 中就有一系列的程序保存程序的运行上下文

// pc寄存器内容 即将要执行的指令地址

// 一系列上下文数据 正在处理的数据 即将处理的数据

// 因此一旦cpu切换轮转回来了 就可以通过pid找到task_struct 从中取出这些上下文数据

// cpu寄存器中 cpu就可以从原来的位置继续向下执行 处理用来没有处理完的数据

//进程状态

//三态模型 就绪 运行 阻塞

//linux 的进程状态

// 运行态 就绪+运行 拿到时间片就能运行 以及正在运行的都属于运行态

// 可中断休眠态 不但可以被条件唤醒 还可以被打断的阻塞状态

// 阻塞态有一个唤醒条件 只有唤醒条件达成的时候才能转换为就绪态

// 不可中断休眠态 只能被条件唤醒 不可以被打断的阻塞状态

// 停止态 让进程停止运行 只能通过特殊方式唤醒

// 追踪态 调试的时候涉及到的状态

// 死亡态 进程退出后 资源全部释放完处于的一个短暂状态

// 僵尸态 一个进程退出了 但是资源没有被完全释放的状态

// 产生 由于子进程退出 但是父进程没有关注子进程的退出状态所导致的

// 危害 会造成系统资源泄露

// 解决 kill -9 强制杀死

// 避免 进程等待 等待子进程退出 获取他的返回值

//内存管理 程序地址空间

// 程序地址空间 进程的虚拟地址空间

// 进程的地址空间是虚拟的地址空间 ,并不是给每个进程都分配了4G内存

// 程序地址空间 实际上是系统给我们的进程所描述的一个虚拟的地址空间

// 这个描述在pcb中是 mm_struct结构体

// 虚拟地址空间的作用

// 实现数据在物理内存中的离散式存储 提高内存利用率 并进行内存访问控制 提高进程独立性

// 虚拟地址的实现 依赖一个关键性技术 页表 (内存的分页式管理)

// 虚拟地址空间 进行虚拟地址描述

// 页表信息 虚拟地址和物理地址的映射关系 访问权限 缺页中断标志

// 4k页面大小 4G内存有多少页面

// 1024*1024=2^20

// 虚拟地址组成 页号+页内偏移

// 32为系统下 地址大小4字节 32个比特位

// 页号 占据地址中的高20位

// 页内偏移 占据地址中的低12位

相关推荐
大树885 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush46 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5206 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz6 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工7 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智7 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩7 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_7 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化