Linux系统编程——进程
先语:终于进入操作系统的重要一环了。每个操作系统重要的概念应该就是进程了吧。说进程就先从操作系统开始吧。
-
操作系统
操作系统 = 内核 + 应用
功能:操作计算机
操作系统的定位:计算机管理员;对上提供良好的执行环境,对下管理软硬件资源
库函数和系统调用接口的关系:库函数封装了系统调用接口。上下级的调用关系
-
2、进程
- 1>初识
用户: 运行中的程序
操作系统: 操作系统对进程进行先描述后管理 一个结构体PCB,在Linux里是task_struct
描述:标识符(PID) 进程状态
优先级: 对内存的优先分配权
内存指针: 找到代码段,即运行的程序
上下文数据,程序计数器: 保存程序运行时间点
io状态信息: 对文件状态的描述
记账信息: 进程在CPU的运行时间
- 2>查看进程
ps -ef e:f:树状显示
- 3>进程创建
fork() 操作系统创建进程的接口
fork通过对复制父进程创建一个新的的子进程
复制:复制的是父进程的pcb,意味着子进程和父进程代码和数据指向的是同一块内存区域(数据和代码运行的完全一样),并且子进程拷贝了程序计数器,上下文数据所以当前的子进程是从子进程创建成功到的下一步指令开始运行的
父进程代码共享,数据独有
返回值:父进程返回的是子进程的pid,子进程返回的是0,通过返回值的不同,进行代码分流
- 4>进程状态
运行 R
可中断睡眠 S
不可中断睡眠 D
停止 T
僵尸 Z
危害:资源泄露
产生:子进程先于父进程退出。操纵系统通知父进程,父进程未处理,且操作系统未释放资源。
处理:退出父进程
预防:进程等待
孤儿 父进程先于子进程退出。孤儿进程的父进程是pid为1的init进程.孤儿进程退出不会产生僵尸进程
死亡
追踪
- 5>进程优先级
功能:决定CPU资源有限分配权 priority 优先级 PRI nice renice NI
nice:程序运行时设置:nice -n x + 文件 renice -n x -p + 进程号
查看:ps -l
设置:PRI = PRI + NI PRI值越小优先级越高 nice -n x +文件
nice取值范围:-20 ~ 19
- 6>相关概念
竞争性:进程竞争CPU资源,优先级产生
独立性:各个进程相互独立
并发/并行:CPU资源足够,同时运行则并行,不够切换运行,则并发
- 7>环境变量
功能:用于设置系统运行环境参数的变量
查看:env echo $ ($表示后面的字符串是变量,不是字符串)
声明:export export str=1000
删除:unset unset str
作用:让程序运行更加高效
特性:全局特性
获取:getenv() char** environ main的第三个参数
8>进程地址空间
待续……