Linux下进程的部分操作

环境变量:保存系统运行环境参数的变量

作用:使系统环境配置更加灵活
特性:全局特性(父进程赋予子进程环境变量)也可以作为进程通信间的一种方式
操作:
env 查看环境变量
set查看所有变量
echo查看指定变量
export设置一个环境变量
unset 删除一个环境变量
程序地址空间:
1.进程的虚拟地址空间
2.这个虚拟地址空间实际上是一个mm_struct 所描述的空间–内存描述符
3.为什么要使用虚拟地址空间?
(1)实现物理内存的离散式存储–提高了内存利用率
(2)通过虚拟地址空间与页表,保证了进程独立性(每个进程都使用自己的虚拟地址)
(3)通过页表提供内存访问控制
4.页表的作用:映射虚拟地址与物理地址的关系/内存访问控制
5.页表如何映射虚拟地址与物理地址–MMU
(1)分段式–对程序中的地址管理比较友好–地址组成:段号+段内偏移
(2)分页式–提高内存利用率–地址组成:页号+页内偏移
(3)段页式–地址组成:段号+页号+页内偏移

进程创建:

pid_t fork():
1.创建pcb,复制父进程中的数据–(写时拷贝技术) (代码共享,数据独有)
2.返回值: <0:出错;==0:这是一个子进程;>0:这是父进程–返回值用于分辨父子进程–进行代码分流
pid_t vfork():
特性:父子进程共用一个虚拟地址空间–为了避免出现调用栈混乱,因此父进程阻塞,直到子进程退出/程序替换

进程终止:

终止场景:异常退出/正常退出,结果不符合预期/正常退出,结果符合预期
终止方式:main函数中的return/库函数exit/系统调用接口_exit()
获取系统调用的错误原因:

进程等待:

1.父进程等待子进程退出,获取子进程返回值,释放子进程资源,避免产生僵尸进程
2.wait(int *status)/waitpid(int pid ,int *status,int option) WNOHANG
阻塞:为了完成一个功能发起调用,如果不能立即完成,则一直等待
非阻塞:为了完成一个功能发起调用,如果不能立即完成,则立即报错返回
阻塞与非阻塞的区别:一个调用是否会立即返回

子进程返回值的获取:
status的组成:低16位有效,其中高8位存放返回值,低8位中,其中低7位存储异常退出信号值,高1位coredump标志

程序替换:

1.替换一个进程正在运行的程序–重新加载一个新的程序到内存中,使用当前pcb重新建立映射关系
2.代码段以及数据段都要进行初始化,并且更新页表信息
操作:exec函数族
execl(char *path,char *arg,…)
execlp(char *file,char *arg,…)
execle(char *path,char *arg,…,char *env[ ])
execv(char *path,char *argv[ ]);
execvp(char *file,char *argv[ ]);
execvpe(char *file,char *argv[ ],char *env[ ])

execve(char *file,char *argv[ ],char *env[ ])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值