进程基础

72 篇文章 0 订阅
18 篇文章 0 订阅

进程概念:进程是操作系统调度程序运行的灵魂,在操作系统中这个灵魂就是pcb–linux下是task_struct

进程查看: ps -aux -ef /proc getpid()
进程创建:—fork()—操作系统通过调用进程创建一个新的子进程 复制:复制父进程的pcb(代码共享,数据独有)
创建子进程的意义:分摊压力,让子进程完成其它任务
返回值:对于父进程来说,返回值是子进程的pid>0;对于子进程来说,返回值是0;出错返回-1

进程状态:运行态R,可中断休眠S,不可终端休眠D停止态T,僵尸态Z
僵尸进程:处于僵死态的进程-进程退出了,但是资源没有完全释放
僵尸进程的危害:资源泄露
僵尸进程的产生原因:子进程先于父进程退出.退出后操作系统通知父进程,获取子 进程返回值,并且允许操作系统释放子进程资源(没有完全释放是为了保存退出原因),父进程没有关注子进程退出,这时候子进程将处于僵死状态成为僵尸进程
僵尸进程的处理方式:退出父进程 避免产生僵尸进程:进程等待
孤儿进程:父进程先于子进程退出,子进程成为孤儿进程,运行在后台,父进程成为1号进程

         守护进程精灵进程:使用场景以及实现-----		

环境变量:存储系统运行环境参数的变量—让系统的参数设置更简单
环境变量相关命令:
查看环境变量:env set echo
添加环境变量:export
删除环境变量:unset
常见环境变量: HOME USER PWD SHELL PATH
环境变量特性:全局特性(父子进程之间的继承,父进程设置了子进程的环境变量)
三种方式:main函数中第三个参数 全局参数 函数
参见下图

     环境变量的使用场景:通常是父进程通过给子进程设置环境变量来向子进程传递数据的功能

在这里插入图片描述

在这里插入图片描述

程序地址空间:
在这里插入图片描述

进程之间数据独有
内存地址:就是内存区域的一个编号
虚拟地址:–虚拟地址空间
mm_struct
{
ulong mem_size
ulong code_start
ulong code_end
}
每个程序都需要连续的内存地址

虚拟地址如何存储数据
虚拟地址空间又是什么

我们所看到的程序地址空间实际是一个虚拟地址空间,实际上是操作系统通过mm_struct这个结构体为进程描述的一个空间,因此有时候也称为内存描述符

为什么要使用虚拟地址空间?

进程在通过访问虚拟地址而获取变量数据,最终还是要去访问物理地址,因为数据是存储在物理内存中的
在虚拟地址和物理地址之间通过页表进行地址映射,转换得到物理地址,进而访问物理内存区域
通过映射之后,物理地址不一定连续,通过这种映射转换方式实现数据的离散存储提高内存利用率

页表中不但记录了虚拟地址和物理地址的映射关系,并且记录了这块地址的属性实现内存访问控制

创建子进程都发生了什么?写时拷贝技术:操作系统通过复制父进程创建子进程,子进程创建时与父进程指向同一块物理内存区域,当内存区域发生改变时,会为子进程重新开辟内存并更新页表

在这里插入图片描述
进程的独立性:进程应该具有独立性

虚拟地址空间和页表有什么用:

 提高内存利用率,增加内存访问控制,保持进程独立性

页表是如何将虚拟地址转换为物理地址的:
在这里插入图片描述
分段式:

通过地址中的段号去段表中找到段表项,通过段表项中的物理段起始地址加上地之中的段内偏移获取到物理地址

分页式:

通过地址中的页号去页表中找到页表项,通过页表项中的物理页号加上页内偏移获取到物理地址

段页式内存管理:

内存地址:段号+段内页号+页内偏移 段表项中包含段内页表起始地址 段内页表项中又包含物理页号

段页式:

通过段号在段表中找到段表项,通过段表项中段内页表地址找到段内页表,通过在地址中的段内页号在段内页表中找到页表项,通过页表项中的物理页号与业内偏移量组成物理地址

内存置换算法:
内存只有4G,但是想处理5G数据,怎么办?
swap分区也叫交换内存:内存不够的时候,将内存中的数据置换到交换分区中,腾出内存处理数据

FIFO:先进先出
LFU:最近最少频率未使用
LRU:最近最久未使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值