进程概念

进程的基本概念
系统调用:操作系统对外的一层接口,供上层开发使用,这部分接口就叫做系统调用

库函数:是对系统调用的一层封装

进程:将程序编译一个可执行文件之后,在操作系统中运行,然后由操作系统将它管理起来

PID:进程的一个唯一的标识码

PCB:进程控制块(描述进程)

linux下特有的PCB: task_struct
1.进程标识符
2.知道程序执行的代码和数据在哪(用一个指针来保存代码和数据的地址)
3.进程都打开了哪些文件(即占用了哪些文件)
4.进程之间的切换(上下文,优先级,即进程等待)
5.进程的退出码(告诉操作系统进程是否正常退出)


描述进程
task_struct的内容分类:
标识符:区别其它进程
状态:进程状态
优先级:相对于其他的进程的优先级
程序计数器:程序中即将被执行的一条指令的地址
内存指针:包括代码和数据存放的地址和进程所需的其他文件的指针
上下文数据:进程恢复
I/O状态信息:显示器的I/O请求
记账信息:进程调度
其他信息

组织进程
通过链表

getpid:但返回值为该进程的PID
getppid:返回值为当前进程的父进程的PID
fork:以当前进程为模板,创建一个新进程,调用一次,返回两次,一次给子进程返回0,给父进程(即模板)返回子进程的进程PID

linux的进程状态

运行状态(R)
  1. 要么进程在运行,要么进程在就绪队列中准备运行
睡眠状态(S)
  1. 在等待时间完成,可以中断的睡眠
磁盘休眠状态(D)
  1. 等待IO,不可中断的睡眠
停止状态(T)
  1. 可以发送信号来停止进程
  2. 也可以发送信号来继续进程
死亡状态(X)
  1. 只是返回一个状态不会再进程表中看到这个状态
僵尸进程(Z)
  1. 即当一个进程的子进程执行完成了之后但是他的父进程却没有接受到其此子进程的退出码,即父进程对子进程不理不睬,此时此子进程就成为了僵尸进程
  2. 危害:僵尸进程会保存在进程表中保持终止状态,一直会等待父进程来接受此子进程的退出码,所以如果僵尸进程一直累积累积的话就会造成内存资源的大量浪费
  3. 只要子进程已经退出,父进程还在执行,但是其父进程没有读取子进程的状态,此进程即为僵尸进程
       只要父进程一直不读取子进程的状态,子进程则一直为Z状态


进程状态的修改:kill -l 来查看系统支持的信号列表
kill -n  进程


孤儿进程

父进程先退出,子进程就称为“孤儿进程”
孤儿进程被1号进程领养,领养过程大致如下:
        在一个进程终止的时候内核会逐个检查每个进程的活动状态,已判断它是否是一个马上就要终止的子进程,如果是,那就将此进程父进程的ID改为1(即Init进程的),这种方法保证了每个进程都有一个父进程

进程的优先级(PRI)
  1. 数值越小优先级越高,越早被执行
  2. nice值即进程可被执行的修正数值,即在linux中调整优先级,就是调整nice值
  3. nice范围为(-20,19)
  4. 调整优先级:nice,renice,用top调整


环境变量
概念
  1. 指在操作系统用来指定操作系统运行环境的一些参数
  2. 环境变量具有 全局特性
常见环境变量
  1. PATH:指定命令的搜索路径
  2. HOME:指定用户的主工作目录
  3. HISTSIZE:历史命令,最多1000行
  4. 当前SHELL:一般是/bin/bash
查看环境变量的方法
  1. echo $环境变量的名字
和环境变量相关的命令
  1. echo:显示某个环境变量值
  2. export:设置一个新的环境变量值
  3. env:显示所有的环境变量值
  4. unset:清楚环境变量
  5. set:显示本地定义的shell变量和环境变量
环境变量的组织方式
  1. 每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个‘\0’结尾的环境字符串


程序地址空间



但其实我们在linux中包括我们学的所有语言中的地址都是虚拟地址,不是真是的物理地址,其实我们的地址空间分配是下面这样的




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值