原平的旅游网站怎么做的,基于asp的网络课程网站开发,网站收录工具,wordpress 采集1. 进程基本概念 书面概念#xff1a;程序的一个执行实例#xff0c;正在执行的程序等 内核概念#xff1a;担当分配系统资源#xff08;CPU时间#xff0c;内存#xff09;的实体。
2. 描述和组织进程-PCB PCB#xff08;process contral block#xff09;#xff0…1. 进程基本概念 书面概念程序的一个执行实例正在执行的程序等 内核概念担当分配系统资源CPU时间内存的实体。
2. 描述和组织进程-PCB PCBprocess contral block进程信息被放在一个叫进程信息控制块的数据结构里面在Linux下PCB是task_strut 每一个进程都会对应生成一个task_struc操作系统通过这个结构体来管理进程。 这些task_struc会以链表的形式存在内核中操作系统通过增删查改这个链表来管理这些进程。
3. task_struc包含内容
标示符: 描述本进程的唯一标示符用来区别其他进程。状态: 任务状态退出代码退出信号等。优先级: 相对于其他进程的优先级。程序计数器: 程序中即将被执行的下一条指令的地址。内存指针: 包括程序代码和进程相关数据的指针还有和其他进程共享的内存块的指针上下文数据: 进程执行时处理器的寄存器中的数据[休学例子要加图CPU寄存器]。IO状态信息: 包括显示的I/O请求,分配给进程的IO设备和被进程使用的文件列表。记账信息: 可能包括处理器时间总和使用的时钟数总和时间限制记账号等。 其他信息
3.1 标识符 进程用PIDprocess id来标识可以通过三种方式来查看
1. /proc 目录
ls /proc 所有进程都会放在这个目录下还可以通过
ls -al /proc/(pid)
获得进程的详细信息 这里cwd就是表示可执行程序的当前工作目录
2. ps
ps axj
显示所有的进程
ps -axj | head -1 ps -axj | grep myproc | grep -v grep 查询单个进程
3. top 3.2 进程状态
进程状态STAT在系统层面可以大致分成以下几种
新建进程刚刚创建出来代码和数据还没有加载到内存中运行进程被放到了CPU的运行队列中阻塞等待非CPU资源就为例如位于磁盘读取等待队列挂起在内存资源不足时OS通过适当的置换进程的代码和数据到磁盘swap来缓解内存不足
在Linux下task_struc的进程状态可以分为下面几种
RruningSsleepingDdisk sleepTstoppedt tarcing stopXdeadZ zombie
R运行状态对应运行态
S睡眠状态对应阻塞态可中断睡眠
D磁盘休眠状态进程不可以被中断需要等待io完成磁盘返回信息结束休眠状态不可中断睡眠
T停止状态通过信号来暂停进程例如kill -19 pid也可以通过信号来结束停止状态例如kill -18 pid
t调试状态和暂停状态一样是由调试暂停引起的进程暂停
X死亡状态这个状态只是一个返回状态你不会在任务列表里看到这个状态
Z僵尸状态当子进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵死(尸)进程
这个状态下子进程的PCB会被保留下来
还有一种叫孤儿进程父进程先退出子进程就称之为“孤儿进程”孤儿进程会被1号init进程领养结束时再被init进程回收 注意 R表示程序运行在前台 ./myproc 就可以让程序在后台运行状态就是R 3.3 优先级
cpu资源分配的先后顺序就是指进程的优先权priority
查看进程优先级
ps -l 这里PRI就是priority的简写NI是nice的简写
PRI值越小优先级越高越早被执行
nice值表示进程可被执行的优先级的修正数值可以通过修改nice来改变PRI
PRInew PRIold NI
PRIold表示进程创建时的默认优先级。
NI值的取值范围【-2019】
修改进程优先级
top - r -输入进程的PID - 输入nice值
3.4 内存指针
struct mm_struct *mm; task_struct里面有一个指针指向mm_struct这样的一个结构体
在mm_struct中包含对应内存中的地址空间的begin和end描述进程所需内存的区域划分。
3.5 上下文数据
为了更好的理解这里先提出进程并发的概念
一个CPU在一个时刻只能执行一个进程但是CPU是一个一个处理进程的吗
其实不是每的进程在CPU上只跑一小会不论进程完成的程度怎么样都要退下来让下一个进程继续执行。一小会假定是10ms那么在一秒钟CPU就可以跑100个进程。在短时间内我们可以认为CPU在同时执行这些进程这些进程也在同步进行。
对于一个进程而言这次CPU执行到这里下次CPU来了要继续从这里执行下去。所以就需要保存程序执行时产生的数据和代码执行到的对应位置。CPU下次通过寄存器直接获取这些数据就可以继续下去。
这些数据就叫上下文数据由task_struct来保存。
这样子做到了CPU在不同进程间的切换
4. 其他概念
竞争性: 系统进程数目众多而CPU资源只有少量甚至1个所以进程之间是具有竞争属性的。为了高 效完成任务更合理竞争相关资源便具有了优先级
独立性: 多进程运行需要独享各种资源多进程运行期间互不干扰
并行: 多个进程在多个CPU下分别同时进行运行这称之为并行
并发: 多个进程在一个CPU下采用进程切换的方式在一段时间之内让多个进程都得以推进称之为 并发
关于进程的更多内容敬请关注Linux-地址空间