PALS进程和线程 进程是具有独立功能的程序关于某个 数据集合上的一次运行活动,是系统进 行资源分配和调度的独立单位 线程是CPU调度的最小单位
进程和线程 进程是具有独立功能的程序关于某个 数据集合上的一次运行活动,是系统进 行资源分配和调度的独立单位。 线程是CPU调度的最小单位
运行 就绪 等待 进程的状态及其转换
运行 就绪 等待 进程的状态及其转换
问题: 进程有无如下状态转换,为什么? (1)等待一运行 (2)就绪一等待 解答: (1)不能:等待一就绪一运行 (2)不能:就绪一运行一等待
问题: 进程有无如下状态转换,为什么? (1)等待—运行 (2)就绪—等待 解答: (1)不能:等待-就绪-运行 (2)不能:就绪-运行-等待
PKLICs会FoRK 采用一种你所熟悉的编程语言,编 写一个过程,来模拟 Fork(创建进 程)原语的功能。(可以自己定义 所需的数据结构)
FORK ◼ 采用一种你所熟悉的编程语言,编 写一个过程,来模拟fork(创建进 程)原语的功能。(可以自己定义 所需的数据结构)
系统调用fork的算法 算法:fork 统级机上下文层; 输入:无 /*虚设上下文层中含有使子进程能识 输出:父进程是子进程的PID 别自己的薮据,并使子进程被调度时 对子进程是0 从这里开始运行; 检查可用的内核资源; f(正在执行的进程是父进程) 取一个空闲的进程表象和唯一的PD{ 号 将子进程的状态设置为“就绪”状态 检察用户没有过多的运行进程 将子进程的状态设为“创建”状态:ctum(子进程的PID)弹*从系统到用 将父进程的进程表象的数据拷贝到子户* 进程表象中; 当前目录的索引节点和改变的根目录ls*正在执行的进程是子进程* (如果可以)的引用数加1 在内存中作父进程上下文的拷贝(u区初始化u区的计时域; 正文、数据、栈); eturn(0)/*到用户* 在子进程的系统级上下文中压入虚设 系
算法:fork 输入:无 输出:父进程是子进程的PID 对子进程是0 { 检查可用的内核资源; 取一个空闲的进程表象和唯一的PID 号; 检察用户没有过多的运行进程; 将子进程的状态设为“创建”状态; 将父进程的进程表象的数据拷贝到子 进程表象中; 当前目录的索引节点和改变的根目录 (如果可以)的引用数加1; 在内存中作父进程上下文的拷贝(u区 、正文、数据、栈); 在子进程的系统级上下文中压入虚设 系 统级机上下文层; /*虚设上下文层中含有使子进程能识 别自己的数据,并使子进程被调度时 从这里开始运行; */ if(正在执行的进程是父进程) { 将子进程的状态设置为“就绪”状态 ; return(子进程的PID);/*从系统到用 户*/ } else/*正在执行的进程是子进程*/ { 初始化u区的计时域; return(0);/*到用户*/ } } 系统调用fork的算法