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

Posted -A7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 进程操作系统 进程状态(僵尸进程) 环境变量 程序地址空间相关的知识,希望对你有一定的参考价值。

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.通过页表项中的物理块起始地址加上页内偏移得到物理地址

以上是关于Linux 进程操作系统 进程状态(僵尸进程) 环境变量 程序地址空间的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统编程——特殊进程之僵尸进程

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

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

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

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

Linux下进程以及相关概念理解