UNIX V6内核源码剖析——进程
进程的概念
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定义。
#define NPROC 50
struct proc {
char p_stat; //状态,等于NULL表示位数为空
char p_flag; //进程标志变量
char p_pri; //优先级
char p_sig; //接收到的信号
char p_uid;
char p_time; //在内存或交换空间的时间
char p_cpu; //cpu占用累积时间
char p_nice; //优先级补正系数
int p_ttyp; //正在操作进程的终端
int p_pid;
int p_ppid;
int p_addr; //数据段物理地址
int p_size; //数据段长度
int p_wchan; //进程休眠原因
int *p_textp; //使用的代码段
} proc[NPROC];
/* stat codes */
#define SSLEEP 1 //高优先级休眠状态,优先级为负数
#define SWAIT 2 //低优先级休眠状态,优先级为0或正数
#define SRUN 3 //可执行状态
#define SIDL 4 //进程生成中
#define SZOMB 5
#define SSTOP 6 //等待被跟踪(trace)
/* flag codes */
#define SLOAD 01 //进程图像处于内存中
#define SSYS 02 //系统进程,不会被swap out
#define SLOCK 04 //进程调度锁
#define SSWAP 010 //进程图像已被换出至交换空间
#define STRC 020 //处于被跟踪状态
#define SWTED 040 //在被跟踪时使用
2. user结构体
user结构体用来管理进程打开的文件或目录等信息。
由于内核只需要当前执行进程的user结构体, 因此当进程被换出到交换空间时,user结构体也被换出。
UNIX V6内核源码剖析——进程的更多相关文章
- UNIX V6内核源码剖析——unix v6 全貌
1. UNIX V6 运行硬件环境——PDP-11/40 PDP-11/40指令和数据都是以16比特为单位.对它而言,一个字的宽度为16比特. PDP-11/40以及周边设备的寄存器被映射到内存最高位 ...
- 《Unix内核源码剖析》
<Unix内核源码剖析> 基本信息 作者: (日)青柳隆宏 译者: 殷中翔 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115345219 上架时间:2014-2 ...
- linux0.11内核源码剖析:第一篇 内存管理、memory.c【转】
转自:http://www.cnblogs.com/v-July-v/archive/2011/01/06/1983695.html linux0.11内核源码剖析第一篇:memory.c July ...
- 鸿蒙内核源码分析(进程镜像篇)|ELF是如何被加载运行的? | 百篇博客分析OpenHarmony源码 | v56.01
百篇博客系列篇.本篇为: v56.xx 鸿蒙内核源码分析(进程映像篇) | ELF是如何被加载运行的? | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应 ...
- 鸿蒙内核源码分析(进程通讯篇) | 九种进程间通讯方式速揽 | 百篇博客分析OpenHarmony源码 | v28.03
百篇博客系列篇.本篇为: v28.xx 鸿蒙内核源码分析(进程通讯篇) | 九种进程间通讯方式速揽 | 51.c.h .o 进程通讯相关篇为: v26.xx 鸿蒙内核源码分析(自旋锁篇) | 自旋锁当 ...
- 鸿蒙内核源码分析(进程概念篇) | 进程在管理哪些资源 | 百篇博客分析OpenHarmony源码 | v24.01
百篇博客系列篇.本篇为: v24.xx 鸿蒙内核源码分析(进程概念篇) | 进程在管理哪些资源 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内 ...
- 鸿蒙内核源码分析(进程回收篇) | 老父亲如何向老祖宗临终托孤 ? | 百篇博客分析OpenHarmony源码 | v47.01
百篇博客系列篇.本篇为: v47.xx 鸿蒙内核源码分析(进程回收篇) | 临终前如何向老祖宗托孤 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管 ...
- 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源 | 百篇博客分析OpenHarmonyOS | v2.07
百篇博客系列篇.本篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核 ...
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
随机推荐
- lightoj 1014
判断到根号n即可,另外使用dfs输出,不需要另开数组再排序. #include<cmath> #include<cstdio> int P, L, len, cnt; void ...
- 关于Excel中的需求或者是用例导入到QC中遇到的问题
Excel 中导入用例到QC时,会提示如图所示的错误信息: 解决方案: 我的电脑-->属性->高级-->性能设置-->添加QC程序
- 山东省2016acm省赛
A 水 #include <iostream> #include <cstdio> #include <algorithm> #include <list&g ...
- Python读取文件内容的三种方式并比较
本次实验的文件是一个60M的文件,共计392660行内容. 程序一: def one(): start = time.clock() fo = open(file,'r') fc = fo.readl ...
- Fragment回调顺序及getActivity()为NullPointerException解决方法
Fragment回调顺序 onAttach->onCreate->onCreateView->onActivityCreated ps:最后发现经常在Fragment里面getAct ...
- A Tour of Go Methods and Interfaces
The next group of slides covers methods and interfaces, the constructs that define objects and their ...
- [OC Foundation框架 - 4] NSString的导出
void exportString() { NSString *str = @"Hello, 坑爹"; NSString *path = @"/Users/hello ...
- 转载 GUID介绍
转载 http://www.cnblogs.com/illele/archive/2008/02/25/1080554.html GUID(Global unique identifier)全局唯一标 ...
- 使用Windows的分析等待链(analyze wait chain)来诊断没用响应的应用
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用Windows的分析等待链(analyze wait chain)来诊断没用响应的应用.
- sass 使用入门教程
我们都知道,css没有变量,也没有条件语句,在开发过程中,难免有些麻烦,因此有了CSS预处理器(css preprocessor),Sass便是其中之一. 一.什么是Sass Sass (Syntac ...