学习笔记6

第三章.Unix/Linux进程管理

多任务处理:

  指的是同时几项独立活动的能力

  是所有操作系统的基础,是并行编程的基础

进程的概念:

  进程是对映像的执行

  在操作系统中,每个进程用一个独立的数据结构表示,叫进程控制块(PCB)和任务控制块(TCB)。本书中称为PROC

typedef struct proc{
    struct proc *next;  //下一个PROC结构体的指针
    int *kcp;    //保存的堆栈指针
    int pid;        //进程ID编号
    int ppid;    //父进程的ID编号
    int status;    //当前状态
    int priority;       //进程调度优先级
    int kstack[1024];    //进程执行时的堆栈
}PROC;

进程同步

  是指控制和协调进程交互以确保其正确执行所需的各项规则和机制

  睡眠模式/等待:ksleep(int event)

  唤醒操作:kwakeup(event)

进程终止:

  分为正常终止和异常终止

  进程家族树:

PROC *child,*sibling,*parent;

    子进程,兄弟进程,父进程

  等待子进程终止:

    无论何时,进程都能调用内核函数kwait等待僵尸子进程

pid = kwait(int *status)

进程管理中的系统调用:fork()、wait()、exec()、exit()

  fork():

    Usage:int pid = fork();

    fork创建子进程并返回子进程的pid,失败则返回-1。

I/O重定向

  sh进程有三个用于终端I/O的文件流:stdin(标准输入)、stdout(标准输出)、stderr(标准错误)。

  I/O重定向允许我们更改输出地点和输入来源。

  重定向符   “>>” 、“>” 操作符

管道

  | 前一个命令的输出作为后一个命令的输入

  管道是用于进程交换的单项进程间通信通道,有一个读取端和写入端

int pd[2];    //array of 2 integers
int r = pipe(pd);    //成功返回0

 

posted @ 2023-10-21 15:46  周意凯  阅读(3)  评论(0编辑  收藏  举报