信安系统学习笔记六
第三章 Unix/Linux 进程管理
一.知识点归纳
多任务处理
多任务处理指同时执行几个独立的任务。在单处理器(单CPU)系统中,一次只能执行一个任务。多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的,即将CPU执行操作从一个任务切换到另一个任务,不同任务之间的执行切换机制称为上下文切换,将一个任务的执行环境更改为另一个任务的执行环境。逻辑并行性称为“并发”。如果切换速度足够快,就给人一种同时执行所有任务的错觉,这种逻辑并行性称为“并发”。在有多个CPU或处理器内核的多处理系统中,可在不同的CPU上实时、并行执行多项任务。
进程的概念
进程是对映像的执行。在操作系统内核中,每个进程用一个独特的数据结构表示,叫作进程控制块(PCB)或任务控制块(TCB)等。在本书中,我们直接称它为 PROC 结构体。
多任务处理系统
type.h 文件
type.h 文件定义了系统常数和表示进程的简单 PROC 结构体。
ts.s 文件
ts.s 在32位 GCC 汇编代码中可实现进程上下文切换。
queue.c 文件
queue.c 文件可实现队列和链表操作函数。
tc.c 文件
定义MT系统数据结构、系统初始化代码和进程管理函数。
进程同步
进程同步是指控制和协调进程交互以确保其正确执行所需的各项规则和机制。
睡眠模式:ksleep(int event)
某进程需要某些当前没有的东西,如申请独占一个存储区域、等
待用户输入字符等。
唤醒操作:kwakeup(int event)
多个进程可能会进入休眠状态等待同一个事件,当某个等待时间发生时,另一执行实体(可能是进程或中断处理程序)会调用kwakeup(event)函数来唤醒处于休眠状态等待该事件值的所有程序。
进程终止
正常终止:进程调用 exit(value),发出_exit(value)系统调用来执行在操作系统内核中的 kexit(value)。
异常终止:进程因某个信号而异常终止。
MT系统中的进程管理
用二叉树的形式实现进程家族树。
实现 ksleepO()和kwakeup()进程同步函数。
实现kexit()和kwait()进程管理函数。
添加“w”命令来测试和演示等待操作。
Unix/Linux中的进程
进程管理的系统调用
管道
管道是用于进程交换数据的单向进程间通信的通道。管道有一个输入端、一个输出端。在之前我们使用man -k | grep xx时,就用到管道的功能。管道的使用可以通过程序完成,也可以在命令行中处理完成。
二.实践内容与截图