Linux 进程(二)操作系统 进程状态(僵尸进程) 环境变量 程序地址空间

1.操作系统

概念:软件–管理计算机上的软硬件资源
定位:让计算机更加好用
讨论:操作系统是如何管理这些软硬件资源的?
在这里插入图片描述
管理:描述+组织
系统调用:操作系统向用户提供的用于访问内核的接口
库函数:大佬们针对典型功能的封装接口
库函数与系统调用的关系:库函数封装了系统调用接口

2.进程状态

概念:描述进程当前处于什么状态应该如何被操作系统调度管理
种类:就绪,运行,阻塞
linux分类:
运行态-R:正在运行的,以及拿到时间片就能运行的
可中断休眠态-S:可以被打断的阻塞状态
不可中断休眠态-D:不可被打断的阻塞状态
停止态-T:停止运行
僵尸态-Z:程序退出后的中间等待处理状态
僵尸进程:僵尸态的进程,退出后资源没有被完全释放的进程
产生:子进程先于父进程退出,为了保存自己的退出返回值,因此没有完全释放资源,等待父进程处理。
避免:进程等待
处理:退出父进程
危害:资源泄露(内存+进程数量)
查看进程指令: ps -ef -aus
创建进程:pid_t fork(void)
给父进程返回子进程的pid(大于0),给子进程返回0;失败返回-1;
在这里插入图片描述

在这里插入图片描述
现在主程序只打印一次 子进程退出
在这里插入图片描述
子进程3278 变成了僵尸进程-Z

孤儿进程:父进程先于子进程退出,子进程成为孤儿进程
特性:运行在后台,父进程成为1号进程
在父进程中写入exit(0);
孤儿进程退出后不会成为僵尸进程
守护进程-精灵进程:是一个特殊的孤儿进程,运行在后台,与终端脱离关系。

3.环境变量

概念:保存程序运行环境的变量
环境变量的相关指令:
env:查看所有的环境变量
set:查看环境中所有的变量
echo:打印某个指定变量的数据
export:用于声明环境变量
unset:删除变量

重要环境变量:PATH-程序的默认运行路径
环境变量的特性:具有进程之间的传递性
在程序中获取环境变量的接口
chargetenv(charname);
name:环境变量名称
返回值:对应name环境变量的数据,如果找不到返回NULL

4.程序地址空间

在这里插入图片描述
程序地址空间,本质上是操作系统为进程通过mm_struct描述的虚拟地址空间,让每个进程都能访问一个独立的完整的虚拟地址,通过映射之后,实现在屋里内存上的离散存储,提高内存利用率,提高了内存访问控制

5.虚拟地址组成

在这里插入图片描述

在虚拟地址空间中将整个空间划分为一个个小的分页
通常大小是4096字节
段页式内存管理:
概念:将虚拟地址空间先进行分段管理,然后再每个段进行分页式管理,集合了分段分页的优点
地址中包含:段号,段内页号,页内偏移
1.通过段号在段表中找到段表项
2.在段表项中找到段内页表地址
3.通过段内页号在段内页表中找到页表项
4.通过页表项中的物理块起始地址加上页内偏移得到物理地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值