进程的概念

操作系统

一款纯正的"高管理”的软件
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映射到物理内存
进程的概念