linux学习--第五天
-进程
-概念
进程描述是一个程序执行过程,当程序执行后,执行过程开始,则进程产生;执行过程结束,则进程也就结束
-进程的特点
进程是一个独立的可调度的活动,由操作系统进行统一调度,相应的任务会被调度到cpu中进行执行
进程一旦产生,则需要分配相关资源,同时进程是资源分配的最小单位
-进程与程序的区别
1.程序是静态的,它是保存在磁盘上的指令的有序集合,没有任何执行的概念
2.进程是一个动态的概念,它是程序执行的过程,包括了动态创建,调度和销毁的整个过程
-并发与并行
并行执行:表示多个任务可以同时执行,依赖于物理支持
并发执行:在同一时间段由多个任务在同时进行,由操作系统的调度算法实现;如:时间片轮转
时间片轮转
特点:
1.一个时间片的时间非常短,由操作系统调度算法来实现每个时间片所执行的任务,一旦一个任务的时间片消耗完,则操作系统会切换到下个任务到CPU中执行
2.如果没有执行结束,则等待下一次分配
-Linux进程管理
1.在Linux系统中,管理进程使用树型管理方式
2.每一个进程都需要与其他某一个进程建立父子关系,对应的进程叫做父进程
3.Linux系统会为每个进程分配id,这个id作为当前进程的唯一标识,当进程结束时,则会被回收
4.进程的id与父进程的id分别通过getpid()与getppid()来获取
-进程的空间分配
32位Linux系统中,会为每一个进程分配4G的空间,分为俩部分,高位1G为内核空间,低位3G为用户空间(4G空间为虚拟空间)
tips:
1.当用户进程需要通过内核获取资源时,会切换到内核态运行,此时当前进程会使用内核空间资源
2.用户切换的内核态运行时,主要是通过系统调用
虚拟地址与物理地址
虚拟地址:虚拟地址并不代表真实的内存空间,,而是一个用于寻址的编号
物理地址:是指内存设备中真实存在的存储空间的编号
关系:虚拟地址通过映射的方式建立与物理地址的关联,从而达到访问虚拟地址就可以访问到对应的物理地址
使用虚拟地址的原因:
1.直接访问物理地址,会导致地址空间没有隔离,很容易导致数据被修改
2.通过虚拟地址可以实现每个进程空间都是独立的,操作系统会映射到不用的物理地址区间,在访问时互不干扰
tips:1.进程栈的默认大小是8M,可以通过ulimit -s查看
2.进程堆的大小小于3G
3.通过ulimit -u查看系统的最大进程数
-进程的状态管理
三态模型:运行态,就绪态,阻塞态
三态模型图示:
五态模型:新建态,终止态,运行态,就绪态,阻塞态
五态模型图示
经常使用的进程状态:
1.运行态:此时进程正在运行或者准备运行都属于运行态
2.睡眠态:此时进程在等待一个事件的发生或某种系统资源
可中断睡眠:可以被信号唤醒或者等待事件或者资源就绪
不可中断睡眠:只能等待特定的事件或者资源就绪
3.停止态:进程停止接受某种处理,例如:gdb调试断点信息处理
4.僵尸态:进程已经结束但是还没有释放进程资源
-进程的相关命令
ps -ef:列出所有进程
top:实时显示进程的信息
top -i:不显示任何闲置或无用的进程
pstree:将所有的进程以树型结构的方式进行展示
kill -9:终止进程