zoukankan      html  css  js  c++  java
  • 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定义。

     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 5
    27 #define SSTOP 6    //等待被跟踪(trace)
    28 
    29 /* flag  codes */
    30 #define SLOAD 01    //进程图像处于内存中
    31 #define  SSYS 02    //系统进程,不会被swap out
    32 #define SLOCK 04    //进程调度锁
    33 #define SSWAP 010    //进程图像已被换出至交换空间
    34 #define STRC 020    //处于被跟踪状态
    35 #define SWTED 040    //在被跟踪时使用
    View Code

     2. user结构体

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

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

  • 相关阅读:
    网线帘幕动画
    图片缩放/旋转/平移/设置分辨率
    贝塞尔样条
    线性梯度画刷
    画七彩五角星
    kafka安装
    在windows远程提交任务给Hadoop集群(Hadoop 2.6)
    把Spark SQL的metadata存储到mysql
    使用IDEA开发SPARK提交remote cluster执行
    Netty的Channel
  • 原文地址:https://www.cnblogs.com/licongyu/p/4953554.html
Copyright © 2011-2022 走看看