进程的概念
操作系统
一款纯正的"高管理”的软件
1.描述,用strcut结构体(PCB)在linux中是task_struct
2.组织,通过双向链表
系统调用
由操作系统提供的接口,就是系统调用
在使用上,功能比较基础,对用户的要求相对较高
进程
概念:正在执行的一个程序
内核 :担当分配系统资源(cpu时间,内存)的实体
查看进程
通过命令top和ps进行查看
ps 一般这样用
ps aux | less 可以结果进行less操作
ps aux | grep 进程名或者PID 查看匹配的进程
获取进程标示符
获得进程id getpid()
获取父进程id getppid()
通过系统调用创建进程fork
父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)
子进程的fork返回值为0
父进程的fork返回值为子进程的PID
僵尸进程
查看进程表现为Z状态
父进程一直不读取,回收不了分配给子进程的资源,子进程一直处于Z状态。Z状态一直退不出,PCB一直都要维护。一个父进程,创建多个子进程,不回收,会造成内存泄漏
孤儿进程
父进程提前退出,子进程就为孤儿进程,孤儿进程会被1号init进程领养,并且回收资源
环境变量
指在操作系统中用来指定操作系统运行环境的一些参数
常见环境变量
PATH:指定命令的搜索路径
HOME: 指定用户的主工作目录(即用户登录到Linux系统中默认的 目录)
SHELL:当前Shell,它的值通常是/bin/bash
查看环境变量方法
echo $环境变量名称
和环境变量相关的命令
1.echo:显示某个环境变量值
2.export:设置一个新的环境变量
export PATH=$PATH:hello hello为可执行
二进制文件
可通过重启终端来恢复PATH
修改~/.bashrc能够让环境变量持久生效
3.env: 显示所有环境变量
程序地址
背景
kernel 2.6.32
同一个变量,地址相同,其实是虚拟地址相同,内容不同是被映射到了不同的物理地址
根据虚拟地址,然后在页表里进行查找通过硬件MMU映射到物理内存