UNIX V6内核源码剖析——进程
发布日期:2021-08-16 13:28:03 浏览次数:48 分类:技术文章

本文共 1531 字,大约阅读时间需要 5 分钟。

进程的概念

1. 什么是进程

2. 进程的并行执行

3. 进程的运行状态

4. 用户模式和内核模式

cpu具有2种模式——内核模式和用户模式,通过PSW来切换。

切换时, 映射到虚拟地址的物理内存区域也随之切换(内存映射的切换由MMU来完成)。

在执行系统调用等过程,可能出现内核空间和用户空间交换数据的情况,为此,系统提供了以下在用户空间和内核空间读写数据的函数:

fubyte()、fuibyte()、fuword()、fuiword()

subyte()、suibyte()、suword()、suiword()

5. 交换处理

内存和交换空间之间的换入(swap in)换出(swap out)处理。

proc结构体和user结构体

proc结构体常驻内存;user结构体可能被移至交换空间。

1. proc结构体

数组proc[],每一个元素对应一个进程。

proc结构体管理进程状态、优先级等进程信息中需要经常被内核访问的那部分信息。

proc[]的长度有NPROC定义。

1 #define NPROC 50 2  3 struct proc { 4     char p_stat;    //状态,等于NULL表示位数为空 5     char p_flag;    //进程标志变量 6     char p_pri;    //优先级 7     char p_sig;    //接收到的信号 8     char p_uid; 9     char p_time;    //在内存或交换空间的时间10     char p_cpu;    //cpu占用累积时间11     char p_nice;    //优先级补正系数12     int p_ttyp;    //正在操作进程的终端13     int p_pid;14     int p_ppid;15     int p_addr;    //数据段物理地址16     int p_size;    //数据段长度17     int p_wchan;    //进程休眠原因18     int *p_textp;    //使用的代码段19 } proc[NPROC];20 21 /* stat  codes */22 #define SSLEEP 1    //高优先级休眠状态,优先级为负数23 #define SWAIT 2    //低优先级休眠状态,优先级为0或正数24 #define SRUN 3    //可执行状态25 #define SIDL 4    //进程生成中26 #define SZOMB 527 #define SSTOP 6    //等待被跟踪(trace)28 29 /* flag  codes */30 #define SLOAD 01    //进程图像处于内存中31 #define  SSYS 02    //系统进程,不会被swap out32 #define SLOCK 04    //进程调度锁33 #define SSWAP 010    //进程图像已被换出至交换空间34 #define STRC 020    //处于被跟踪状态35 #define SWTED 040    //在被跟踪时使用
View Code

 2. user结构体

user结构体用来管理进程打开的文件或目录等信息。

由于内核只需要当前执行进程的user结构体, 因此当进程被换出到交换空间时,user结构体也被换出。

 

转载于:https://www.cnblogs.com/licongyu/p/4953554.html

转载地址:https://blog.csdn.net/weixin_30807779/article/details/98241223 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux学习第四天 (Linux就该这么学)2018年11月16日
下一篇:selenium元素定位

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月19日 00时58分02秒