搜档网
当前位置:搜档网 › Linux0.11-进程控制块数据结构

Linux0.11-进程控制块数据结构

Linux0.11-进程控制块数据结构

Linux0.11-进程控制块数据结构

嵌入式Linux中文站收集整理Linux0.11版本内核学习笔记,本文分析了Linux 进程控制模块的数据结构。

struct task_struct {

long state

//任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)。

long counter

// 任务运行时间计数(递减)(滴答数),运行时间片。

long priority

// 运行优先数。

任务开始运行时 counter=priority,

越大运行越长。

long signal

// 信号。是位图,每个比特位代表一种信号,信号值=位偏移值+1。

struct sigaction sigacTIon[32] // 信号执行属性结构,对应信号将要执行的操作和标志信息。long blocked

// 进程信号屏蔽码(对应信号位图)。

int exit_code

// 任务执行停止的退出码,其父进程会取。

// 代码段地址。

unsigned long start_code

unsigned long end_code

// 代码长度(字节数)。

unsigned long end_data

// 代码长度 + 数据长度(字节数)。

unsigned long brk

// 总长度(字节数)。

unsigned long start_stack

linux进程控制 实验报告

长安大学 操作系统实验报告 实验课程:操作系统 实验名称:linux进程控制 学院:信息学院 专业:软件工程 学号:2406090106 姓名:刘建 日期:2012-5-09

一、实验目的 熟悉进程的创建过程,了解系统调用函数fork() 和execl()。 二、实验内容 1、阅读实例代码fork1,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握系统调用fork( )的用法,返回值的意义。 2、阅读实例代码fork2,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握在程序中运行一个操作系统命令和运行一个程序的方法。 3、修改fork2,使之能把运行的命令和程序作为参数传给fork2。 三、设计思想 1、程序框架

pid = -1 pid = 0pid> 0 2、用到的文件系统调用函数 fork() 和execl() 四、调试过程 1、测试数据设计 (1)fork1 命名程序1: 编写程序1:

编译程序1: 运行程序1: (2)fork2

编写程序2: 运行程序2:

(3)修改fork2 编写修改程序2: 修改后的运行结果: 2、测试结果分析 (1)对于程序1:因为系统调用fork()函数是一次调用两次返回值,而且先生成子进程还是父进程是不确定的,所以第一次执行生成子进程的时候返回的pid = 0,判断pid!=-1,所以输出了I’m the child. I’m the parent. 第二次,执行父进程的时候,返回的是子进程的进程号pid> 0,即pid的值仍然不为-1,所以又输出了一次I’m the child. I’m the parent。 (2)对于程序2:第一次调用fork()函数时,由于执行的是子进程还是父进程是随机的,所以第一次对父进程返回的是子进程的进程号(大于0),即pid> 0,所以输出I’m the parent. Program end.当第二次执行子进程时返回值是0,即pid = 0,所以输出I’m the child. 并调用了execl()函数,查看了指定路径中的文件。

linux实验项目 进程控制操作

重庆电力高等专科学校 实 验 报 告 书 实验名称:Linux文件命令学院:信息工程学院 指导老师:黄泽伟 班级:软件1311 学号:201303100243 姓名:周贵波

实验项目进程控制操作 一、实验目的 1.了解进程的概念。 2.熟悉Linux的前台与后台进程控制操作。 3.掌握利用进程监控工具来维护系统的正常运行。 二、实验环境 安装了Red Hat Linux9.0和windows虚拟机系统的计算机一台。 三、实验内容 1.Linux的前台与后台进程控制操作。 2.系统监视器(system monitor)的使用和系统维护。 四、实验步骤 1.进程的前台工作方式 1)yes ok ←┘ 终端窗口显示___ok___,此时键盘能否输入其它命令____不能___,为什么? 2)按键:Ctrl+Z,暂停一个前台进程的运行,并转为挂起进程。 3)jobs ←┘记录下看到的结果_____yes ok_________________。 4)fg %1 ←┘作用:把挂起进程转为前台进程执行; 5)再按键:Ctrl+Z 作用与2)相同; 6)jobs ←┘记录下看到的结果________yes ok______________。 7)bg %1 ←┘作用:重新运行挂起进程,但以后台方式运行; 8)此时能否再按键:Ctrl+Z暂停一个后台进程的运行?____不能__,

键盘能否输入其它命令__不能_____,为什么? 9)用鼠标点击,关闭终端窗口。 2.进程的后台工作方式 除上面把前台进程转到后台进程的过程外,一般在shell提示符下,输入的命令后加上&,即以后台方式运行命令。再次进入终端方式。 1)xclock & ←┘后台进程1,记录其时钟的时间___16:40____ xcalc & ←┘后台进程2 find / -name ?*.jpg‘–print > templist & ←┘后台进程3 2)jobs ←┘有几个后台进程:__2______,记录显示结果: xclock xcalc & ps ←┘记录下看到的结果: 4036 pts/0 00:00:00 bash 4061 pts/0 00:00:00 xcalc 4063 pts/0 00:00:00 ps 3)fg %1 ←┘将时钟进程转到前台运行。 4)按键:Ctrl+Z, 将时钟进程挂起,记录时钟的时间___16:50______。 jobs ←┘观察显示结果____xcalc &________________。 回顾上述操作,经过二~三分钟后,看图形时钟有走动吗?____否___。 5)bg %1 ←┘ 将挂起的时钟进程转到后运行,现在再观察时钟是否会有变化,为什么? 有后台继续运行 jobs ←┘ kill %2 ←┘杀死计算器进程,看计算器是否消失__否______。 6)ps ←┘ 观察屏幕显示,记录时钟(xclock)进程的进程号pid=__________。 7)kill ←┘ pid为xclock的进程号,作用__newline____________。 试比较与上述步骤5)中的kill命令的区别。 8)ls –l ←┘是否有templist文件? ____否____。 9)rm templist ←┘删除临时文件。

进程控制块

概述 进程控制块(PCB)(系统为了管理进程设置的一个专门的数据结构,用它 来记录进程的外部特征,描述进程的运动变化过程。系统利用PCB来控制 和管理进程,所以PCB是系统感知进程存在的唯一标志。进程与PCB 是一 一对应的) 编辑本段应用 在不同的操作系统中对进程的控制和管理机制不同,PCB中的信息多少也 不一样,通常PCB应包含如下一些信息。 1、进程标识符 name: 每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数 字。 2、进程当前状态 status: 说明进程当前所处的状态。为了管理的方便,系统设计时会将相 同的状态的进程组成一个队列,如就绪进程队列,等待进程则要根据等 待的事件组成多个等待队列,如等待打印机队列、等待磁盘I/O完成队列 等等。 3、进程相应的程序和数据地址,以便把PCB与其程序和数据联系起来。 4、进程资源清单。列出所拥有的除CPU外的资源记录,如拥有的I/O 设备 ,打开的文件列表等。 5、进程优先级 priority: 进程的优先级反映进程的紧迫程度,通常由用户指定和系统设置。 6、CPU现场保护区 cpustatus: 当进程因某种原因不能继续占用CPU时(如等待打印机),释放CPU ,这时就要将CPU的各种状态信息保护起来,为将来再次得到处理机恢复 CPU的各种状态,继续运行。 7、进程同步与通信机制用于实现进程间互斥、同步和通信所需的信号

量等。 8、进程所在队列PCB的链接字根据进程所处的现行状态,进程相应 的PCB参加到不同队列中。PCB链接字指出该进程所在队列中下一个进程 PCB的首地址。 9、与进程有关的其他信息。如进程记账信息,进程占用CPU的时间等。 编辑本段实例 Linux task_struct 在linux 中每一个进程都由task_struct 数据结构来定义. task_struct就是我们通常所说的PCB。 struct task_struct { long state; /*任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)*/ long counter;/*运行时间片计数器(递减)*/ long priority;/*优先级*/ long signal;/*信号*/ struct sigaction sigaction[32];/*信号执行属性结构,对应信号将要执行的操作和标志信息*/ long blocked; /* bitmap of masked signals */ /* various fields */ int exit_code;/*任务执行停止的退出码*/ unsigned long start_code,end_code,end_data,brk,start_stack;/*代码段地址代码长度(字节数) 代码长度 + 数据长度(字节数)总长度堆栈段地址*/ long pid,father,pgrp,session,leader;/*进程标识号(进程号) 父进程号父进程组号会话号会话首领*/ unsigned short uid,euid,suid;/*用户标识号(用户id)有效用户id 保存的用户id*/ unsigned short gid,egid,sgid; /*组标识号(组id)有效组id 保存的组id*/ long alarm;/*报警定时值*/ long utime,stime,cutime,cstime,start_time;/*用户态运行时间内核态运行时间子进程用户态运行时间 子进程内核态运行时间进程开始运行时刻*/ unsigned short used_math;/*标志:是否使用协处理器*/

Linux 进程管理实验

Linux 进程管理实验 一、实验内容: 1. 利用bochs观测linux0.11下的PCB进程控制结构。 2. 利用bochs观测linux0.11下的fork.c源代码文件,简单分析其中的重要函数。 3. 在fork.c适当位置添加代码,以验证fork函数的工作原理。 二、Linux进程管理机制分析 Linux有两类进程:一类是普通用户进程,一类是系统进程,它既可以在用户空间运行,又可以通过系统调用进入内核空间,并在内核空间运行;另一类叫做内核进程,这种进程只能在内核空间运行。在以i386为平台的Linux系统中,进程由进程控制块,系统堆栈,用户堆栈,程序代码及数据段组成。Linux系统中的每一个用户进程有两个堆栈:一个叫做用户堆栈,它是进程运行在用户空间时使用的堆栈;另一个叫做系统堆栈,它是用户进程运行在系统空间时使用的堆栈。 1.Linux进程的状态: Linux进程用进程控制块的state域记录了进程的当前状态,一个Linux 进程在它的生存期中,可以有下面6种状态。 1.就绪状态(TASK_RUNNING):在此状态下,进程已挂入就绪队列,进入准备运行状态。 2.运行状态(TASK_RUNNING):当进程正在运行时,它的state域中的值不改变。但是Linux会用一个专门指针(current)指向当前运行的

任务。 3.可中断等待状态(TASK_INTERRUPTIBLE):进程由于未获得它所申请的资源而处在等待状态。不管是资源有效或者中断唤醒信号都能使等待的进程脱离等待而进入就绪状态。即”浅睡眠状态”。 4.不可中断等待状态(TASK_UNINTERRUPTIBLE):这个等待状态与上面等待状态的区别在于只有当它申请的资源有效时才能被唤醒,而其它信号不能。即“深睡眠状态”。 5.停止状态(TASK_STOPPED):当进程收到一个SIGSTOP信号后就由运行状态进入停止状态,当收到一个SINCONT信号时,又会恢复运行状态。挂起状态。 6.终止状态(TASK_ZOMBIE):进程因某种原因终止运行,但进程控制块尚未注销。即“僵死状态”。 状态图如下所示: 2.Linux进程控制块:

Linux程序设计上机指导书3:Linux进程控制

上机三:Linux进程控制 1.目的 (1)掌握系统调用fork(),exex(),exit()等实现进程创建; (2)掌握进程的终止方式(return、exit、_exit、abort); (3)掌握僵尸进程的产生和避免,以及wait,waitpid的使用; (4)了解守护进程的创建。 2.内容 主要上机分析代码文件。 systemtest.c 6-3.c 6-4.c 6-8.c 6-9.c 其他略。 3.步骤 1)Linux进程的创建 创建进程可以采用几种方式。可以执行一个程序(这会导致新进程的创建),也可以在程序内调用一个fork 或exec来创建新进程。fork 调用会导致创建一个子进程,而exec 调用则会用新程序代替当前进程上下文。exec系列函数并不创建新进程,调用exec前后的进程ID是相同的。

exec函数的主要工作是清除父进程的可执行代码映像,用新程序的代码覆盖调用exec 的进程代码。如果exec执行成功,进程将从新程序的main函数入口开始执行。调用exec 后,除进程ID保持不变外,还有下列进程属性也保持不变。 (1)进程的父进程ID。 (2)实际用户ID和实际用户组ID。 (3)进程组ID、会话ID和控制终端。 (4)定时器的剩余时间。 (5)当前工作目录及根目录。 (6)文件创建掩码UMASK。 (7)进程的信号掩码。 与exec系统调用不同,system将外部可执行程序加载执行完毕后继续返回调用进程。 【例6.3】设计一个程序,用fork函数创建一个子进程,在子进程中,要求显示子进程号与父进程号,然后显示当前目录下的文件信息,在父进程中同样显示子进程号与父进程号。

进程控制模块分析文档初稿

进程控制模块分析

一、模块名称: 进程控制模块,在linux体系结构中属于用户接口层。 二、模块功能描述: 进程控制模块,主要负责: 1 进程的运行控制包括创建,注销,停止。 2 进程的信息管理,包括命名空间管理,PID管理。 3 进程的资源管理。 三、模块结构图:

四、模块接口说明: 1接口名: 获得进程的数字ID 接口的功能描述:得到进程在给定命名空间,指定类型的数字ID号。 接口包含的函数: 1)pid_t task_pid_nr_ns(structtask_struct *tsk structpid_namespace *ns) ●入口参数: a)structtask_struct*tsk:需要查询的进程的描述 符。 b)structpid_namespace *ns:需要查询的进程所 在的命名空间。 ●返回值: a)pid_t:需要查询的进程的数字pid号。 ●重要的结构体说明: a)task_struct:存储的了进程的各种控制信息, 详细定义参见重要数据结构。详细介绍见模 块主要结构体说明。 b)pid_t:进程的数字ID号定义为int类型。 ●函数说明 根据进程描述符,获得在制定命名空间的进程数字 pid。

2)pid_t task_tgpid_nr_ns(structtask_struct*tsk structpid_namespace *ns) ●入口参数: a)structtask_struct*tsk b)structpid_namespace*ns ●返回值:pid_t: 进程的数字ID号定义为int类型。 ●重要的结构体说明: a)task_struct:存储的了进程的各种控制信息, 详细定义参见重要数据结构。详细介绍见模 块主要结构体说明。 b)pid_t:进程的数字ID号定义为int类型。 ●函数说明 根据进程描述符,获得在制定命名空间的进程组 的数字pid。 3)pid_t task_pgrp_nr_ns(structtask_struct *tsk structpid_namespace*ns ●入口参数: a)structtask_struct *tsk b)structpid_namespace *ns ●返回值:pid_t ●重要的结构体说明: a)task_struct:存储的了进程的各种控制信息,

linux进程管理篇

目录:(内容较多,加个目录) |-进程管理 进程常用命令 |- w查看当前系统信息 |- ps进程查看命令 |- kill终止进程 |- 一个存放内存中的特殊目录/proc |- 进程的优先级 |- 进程的挂起与恢复 |- 通过top命令查看进程 计划任务 |- 计划任务的重要性 |- 一次性计划at和batch |- 周期性计划crontab 进程管理的概念 进程和程序区别 1.程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。 2.程序和进程无一一对应关系。一个程序可以由多个时程公用;另一一方面,一个进程在活动中有可顺序地执行若干个程序 父子进程的关系 1.子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程 2.在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。 3.父进程终止子进程自然终止。 前台进程和后台进程 前台进程 在shell提示处理打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行别一个命令

很简单,我们在执行这个查找命令时,无法进行其它操作,这个查找就属于前台进程 后台进程 在Shell提示处打入命令,若后随一个&,Shell创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,即在后台运行。“后台进程必须是非交互式的” 再来看这个命令就变成了后台进程,我们用同样的条件进行查找,把查找记过放到hzh/test/init.find这个文件中。不影响我们前台其它的操作。 进程的状态

2011180021-Linux操作系统-课程设计报告-基于Linux的进程调度模拟程序

河南中医学院 《linux操作系统》课程设计报告 题目:基于Linux的进程调度模拟程序 所在院系:信息技术学院 专业年级:2011级计算机科学与技术完成学生:2011180021 郭姗 指导教师:阮晓龙 完成日期:201X 年06 月22 日 目录 1. 课程设计题目概述3 2. 研究内容与目的4 3. 研究方法5 4. 研究报告6 5. 测试报告/实验报告7 6. 课题研究结论8 7. 总结9

1、课程设计题目概述 随着Linux系统的逐渐推广,它被越来越多的计算机用户所了解和应用. Linux是一个多任务的操作系统,也就是说,在同一个时间内,可以有多个进程同时执行。如果读者对计算机硬件体系有一定了解的话,会知道我们大家常用的单CPU计算机实际上在一个时间片断内只能执行一条指令,那么Linux是如何实现多进程同时执行的呢?原来Linux使用了一种称为"进程调度(process scheduling)"的手段,首先,为每个进程指派一定的运行时间,这个时间通常很短,短到以毫秒为单位,然后依照某种规则,从众多进程中挑选一个投入运行,其他的进程暂时等待,当正在运行的那个进程时间耗尽,或执行完毕退出,或因某种原因暂停,Linux就会重新进行调度,挑选下一个进程投入运行。因为每个进程占用的时间片都很短,在我们使用者的角度来看,就好像多个进程同时运行一样了。本文就是对进程调度进行研究、实验的。 本文首先对Linux系统进行了简要的介绍, 然后介绍了进程管理的相关理论知识。其次,又介绍最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)、先来先服务算法的相关知识,并对进程调度进行最高优先数优先的调度算法和先来先服务算法模拟实验,并对比分析两种算法的优缺点,从而加深对进程概念和进程调度过程/算法的理解 设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择某一进程占用处理机。使得系统中的进程能够有条不紊的运行,同时提高处理机的利用率以及系统的性能。所以设计模拟进程调度算法(最高优先数优先的调度算法、先来先服务算法),以巩固和加深处理进程的概念,并且分析这两种算法的优缺点。关键词:linux 进程调度调度算法

linux进程管理(一)

进程介绍 程序和进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。 一个运行着的程序,可能有多个进程。比如自学it网所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务。 进程分类 进程一般分为交互进程、批处理进程和守护进程三类。 值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在 Redhat中,我们可以定义httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd,/etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。 [root@localhost ~]# chkconfig --level 35 httpd on 进程的属性: 进程ID(PID):是唯一的数值,用来区分进程; 父进程和父进程的ID(PPID); 启动进程的用户ID(UID)和所归属的组(GID); 进程状态:状态分为运行R、休眠S、僵尸Z; 进程执行的优先级; 进程所连接的终端名; 进程资源占用:比如占用资源大小(内存、CPU占用量); 父进程和子进程: 他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。 在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行; 进程管理

【IT专家】Linux中进程的几种状态

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Linux中进程的几种状态 2015/03/29 4411 1R (task_running) :可执行状态 ?只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。 ?很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态,这两种状态在linux下统一为TASK_RUNNING状态。 ? 2S (task_interruptible):可中断的睡眠状态 ?处于这个状态的进程因为等待某某事件的发生(比如等待socket连接、等待信号量),而被挂起。这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时(由外部中断触发、或由其他进程触发),对应的等待队列中的一个或多个进程将被唤醒。 ?通过ps命令我们会看到,一般情况下,进程列表中的绝大多数进程都处于task_interruptible状态(除非机器的负载很高)。毕竟CPU就这么一两个,进程动辄几十上百个,如果不是绝大多数进程都在睡眠,CPU又怎么响应得过来。 ? 3D (task_uninterrupible)不可中断的睡眠状态 ?与task_interruptible状态类似,进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指的并不是CPU不响应外部硬件的中断,而是指进程不响应异步信号。绝大多数情况下,进程处在睡眠状态时,总是应该能够响应异步信号的。但是uninterruptible sleep状态的进程不接受外来的任何信号,因此无法用kill杀掉这些处于D状态的进程,无论是”kill”, “kill -9″还是”kill -15″,这种情况下,一个可选的方法就是reboot。

进程控制结构

进程控制结构 操作系统管理和控制一个进程需要什么信息呢?操作系统必须建立一个表格描述该进程的存在及状态。这个表格被称为进程控制块。它描述了进程标识空间、状态、控制等信息。 1.进程映像 首先论述除了操作系统管理的进程标识空间、状态、控制等信息外,进程还包含些什么内容。一个进程至少执行一个或一系列可执行程序,这些程序往往以文件形式存放于外存中,程序文件中还包含局部变量、全局变量数据以及常数定义。因此,一个进程将包含足够的存储空间来存放进程的程序和数据以便执行。为了执行程序,操作系统还必须为进程分配一个栈区,用来保存过程调用时的现场。如果进程要执行多个程序文件中的程序,操作系统则提供相应的系统调用来支持新程序及数据对老程序数据在座空间的覆盖。 同一个程序可以由多个进程分别执行,当然,不同的进程虽然执行的是相同的程序,但是处理不同的数据,这个程序称为共享程序。编制共享的技术是研制软件(包括操作系统)的重要技术。可共享的程序必须是纯代码(Pure Code),或者称为可再入(Re-entry)的代码。所谓纯代码是指在其执行过程中不改变自身的代码,通常它只能由指令和常数组成。任何一个程序逻辑上都可以将其分为两部分:执行过程中不改变自身的不变部分和可变的工作区、变量部分。程序内的指令、常量本身不会因程序的执行发生不同的变化。显然,纯代码中若仅包含指令和常量,则不会因为被多个进程以交替方式执行而发生执行错误。 为了使程序能成为纯代码,有效的方法是高潮将其中的可变部分从程序体内移出作为进程相关的环境信息。类似于C语言的存储分配方法,程序内的变量被定义在“运行栈”上存储。由于“运行栈”作为各进程自身内部的环境信息,每个进程均单独有一个“运行栈”,因此不会发生执行时的中间结果相互覆盖。 由操作系统管理控制进程用的标识和特性信息集合称为进程控制块。(Process Control Block),程序、数据,栈的集合称为进程映像(Process Image)。 没有进程映像,进程就不知道运行什么程序。进程映像的定位取决于存储管理机制,在以前的实存系统中,进程运行时进程映像都存在于主存中,现在操作系统几乎都采用了页式虚存管理机制,操作系统为进程独立的虚空间,在进程创建时会分配并初始化进程的虚空间,进程执行新的程序时也会用新的进程映像初始化进程虚空间。 初始化进程虚空间是指建立外在中的可执行程序文件与虚空间程序区的映射关系,并依照外在挂靠程序文件中局部变量,全局变量数据说明分配虚空间的并对其初始化,不要分配好栈区。对数据区的栈区还需要在外在分配相应的页交换空间,以便将数据和栈页交换出内在时保存页面内容。操作系统为了定位这些虚空间区域,为了管理这些虚空间区域内外存的交换,设计了页表数据结构,该数据结构说明了进程虚空间的占用情况。页面在外在中的位置、内在中有无副本、内外存的一致性状态等。 2.进程控制块 操作系统管理着大量的进程,进程管理信息可以被认为存放于进程控制块中。各操作系统的实现方式不同,信息的组织方法也不一样。下面先介绍操作系统管理进程用到的数据。 进程控制块包含有下述三大类信息。 1)进程标识信息 在进程控制块中存放的标识信息主要有本进程的产生者标识(父进程标识)、进程所属的用户标识。

Linux进程管理-实验报告

(1) 加深对进程概念的理解,明确进程和程序的区别。 (2) 进一步认识并发执行的实质。 (3) 学习通过进程执行新的U 标程序的方法。 (4) 了解Linux 系统中进程信号处理的基本原理。 Red Hat Linux (1)进程的创建 编写一段程序,使用系统调用fork ()创建两个子进程,当此进程运 行时,在系统中有一个父进程和两个子进程活动,让每一个进程在 屏幕上显示一个字符,父进程显示字符“a” ;子进程分别显示字符 “b”和字符“c” ,试观察记录屏幕上的显示结果,并分析原因。 程序代码: # include int main() { int pl ,p2 ; while((p 1 =fork())==-1); if(pl==0) putchar(b); else { while((p2=fork())==-1); if(p2==0) putchar( c 1); else putchar( a r ); } return 0; ) 运行结果:bca 分析:第一个while 里调用fork()函数一次,返回两次。子进程P1 得到的返回值是0,父进程得到的返回值是新子进程的进程ID (正 整数);接下来父进程和子进程P1两个分支运行,判断P1二二0,子 进程P1符合条件,输出%";接下来else 里面的while 里再调用 fork()函数一次,子进程P2得到的返回值是0,父进程得到的返回值 是新子进程的进程ID (正整数);接下来判断P2=:0,子进程P2符 合条件,输出,接下来父进程输出“a” ,程序结束。 (2)进程的控制 ① 修改已编写的程序,将每个进程输出一个字符改为每个进程输出 一 《Linux 实验目的: 实验环境: 实验内容: 操作系统设计实践》实验一:进程管理

计算机操作系统习题及答案(2)

第2章 1)选择题 (1)分配到必要的资源并获得处理机时的进程状态是_B__。 A. 就绪状态 B. 执行状态 C. 阻塞状态 D. 撤消状态 (2)对进程的管理和控制使用_D__。 A. 指令 B. 信号量 C. 信箱 D. 原语 (3)程序的顺序执行通常在 A 的工作环境中,具有以下特征 C ;程序的并发执行在 B 的工作环境中,具有如下特征 D 。 A. 单道程序 B. 多道程序 C. 程序的可再现性 D. 资源共享 (4)下列进程状态变化中,__C__变化是不可能发生的。 A. 运行→就绪 B. 运行→等待 C. 等待→运行 D. 等待→就绪 (5)当__D__时,进程从执行状态转变为就绪状态。 A. 进程被调度程序选中 B. 等待的事件发生 C. 等待某一事件 D. 时间片到 (6)下面对进程的描述中,错误的是__D___。 A. 进程是动态的概念 B. 进程执行需要处理机 C. 进程是有生命期的 D. 进程是指令的集合 (7)操作系统通过__C__对进程进行管理。 A. JCB B. DCT C. PCB D. CHCT (8)下面所述步骤中,__A__不是创建进程所必需的。 A. 由调度程序为进程分配CPU B. 建立一个进程控制块 C. 将进程控制块链入就绪队列 D. 为进程分配内存 (9)多道程序环境下,操作系统分配资源以__C__为基本单位。 A. 程序 B. 指令 C. 进程 D. 作业 (10)如果系统中有n个进程,则就绪队列中进程的个数最多为__B__。 A. n+1 B. n-1 C. 1 D. n (11)原语的主要特点是_D__。 A. 并发性 B. 异步性 C. 共享性 D. 不可分割性 (12)下面对父进程和子进程的叙述不正确的是__A__。

Linux课程设计进程控制

课程设计报告 课程名称Linux操作系统课程设计 指导教师张玲 起止日期2014-03-01 至2014-06-13 实验项目实验二进程控制 学院信息与通信工程学院 专业电子信息工程 学生姓名 班级/学号 成绩 指导老师签字

1. 课程设计概述 本次课设意在利用进程控制相关的系统调用编程进行进程控制实验,观察进程从创建、运行到终止的控制过程,加深对进程概念的理解。 1.1 课程设计的目的 本实验的目的是掌握进程的概念,理解进程的创建、执行、等待、终止的过程。熟悉有关进程控制的命令和系统调用,理解Shell 的工作原理。 1.2 课程设计的内容 1) 进程控制命令 ● 使用进程控制命令ps ,kill 监视和控制进程的活动 2) 编程部分 ● 用fork ,wait ,exec 系统调用编程实现进程控制; ● 编写一个简单的shell 。 1.3 设计原理 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。 构建的文件构架如图: 图1 实验目录树的结构 2012010948 exp2 exp1 exp3 vis vis2

2.实验步骤 2.1操作 2.1.1进程控制命令(在此终端窗口的操作截图见图1) 1.执行ps命令,查看bash进程的PID: PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收。 2.在后台运行一个yes进程: yes > /dev/null & 3.用ps -f命令观察yes进程的pid和ppid,用ps u命令观察yes进程的状态。 yes进程的父进程是哪个进程?通过查看yes程序的PPID可知其父进程为bash 4.根据命令名搜索特定的进程: ps-ef|grep yes: 5.用kill命令杀掉yes进程: kill 【PID】: 图1 进程控制命令

实验一——Linux环境下的进程管理之欧阳光明创编

软件学院 欧阳光明(2021.03.07) 上机实验报告 课程名称:操作系统 实验项目:实验一:Linux环境下进程管理 实验室:耘慧402 姓名:学号: 专业班级:实验时间:

一、实验目的及要求 1.加深对进程概念的理解,明确进程和程序的区别; 2.进一步认识并发执行的实质; 3.分析进程争用资源的现象,学习解决进程互斥的方法; 4.了解Linux系统中进程通信的基本原理; 二、实验性质 1.进程的创建:编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 2.进程的控制:修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。如果在程序中使用系统调用lockf ()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 3.用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用wait( )来控制进程执行顺序。 三、实验学时 实验性质:验证性 实验学时: 4学时 实验要求:必做 四、实验环境 1.实验环境: Linux系统开发环境 2.知识准备: (1) Linux系统开发环境搭建; (2) Linux环境下GCC编译器的使用; (3)语言中函数定义与调用、指针和类型的定义与使用、结构的定义、动态

内存的申请等预备知识。 五、实验内容及步骤 ①实验内容: (1)进程的创建 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 (3)用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用wait( )来控制进程执行顺序。 ②实验步骤: 1.进程的创建 1.1 进程 UNIX中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。 PCB的数据结构如下: (1)进程表项(Process Table Entry)。包括一些最常用的核心数据: 进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice、指向就绪队列中下一个PCB的指针P_Link、指向U区进程正文、数据及栈在内存区域的指针。 (2)U区(U Area)。用于存放进程表项的一些扩充信息。 每一个进程都有一个私用的U区,其中含有:进程表项指针、真正用户标识符

进程控制实验

实验一、进程控制实验 一、实验目的 1、熟悉C语言的编程环境TurboC 2、培养学生把抽象的概念、原理转化成具体的、可以运行的程序 的能力 3、通过实验使学生深入认识进程的含义及各种控制原语的实现过 程,也为下面的实验做好准备工作 二、实验内容 进程控制块: 进程控制块(PCB)是系统感知进程存在的唯一标志。所谓创建进程,实质上是创建进程实体中的PCB,撤销进程实质上是撤销进程的PCB。本实验规定进程控制块包含以下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 其中进程名这里指它的外部标识符,在创建进程时由用户指定。 进程的优先数及需要的运行时间可以事先人为地指定。进程运行时间以时间片为单位进行计算。 进程的到达时间为进程创建的时间。 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 本实验要求用C语言编程实现创建n个进程的创建函数 creat;根据进程的优先数把就绪进程插入就绪队列的排序函数sort;打印就绪进程PCB信息的函数check;以及进 程的撤销函数destroy。 实验二、进程调度实验 一、目的要求 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解.

二、例题:设计一个有 N个进程共行的进程调度程 序。 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。 进程调度源程序如下: jingchendiaodu.cpp #include "stdio.h" #include #include #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 struct pcb { /* 定义进程控制块PCB */ char name[10]; char state; int super; int ntime; int rtime; struct pcb* link; }*ready=NULL,*p; typedef struct pcb PCB; sort() /* 建立对进程进行优先级排列函数*/ { PCB *first, *second; int insert=0;

最新整理Linux操作系统的进程管理详解

L i n u x操作系统的进程管理详解 L i n u x操作系统中进程的管理是很重要的一部分,下面由学习啦小编为大家整理了L i n u x操作系统的进程管理详解的相关知识,希望对大家有帮助! L i n u x操作系统的进程管理详解 对于L i n u x的进程的管理,是通过进程管理工具实现的,比如p s、k i l l、p g r e p等工具; L i n u x操作系统的进程管理/1、 p s监视进程工具; p s为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用t o p工具; 1.p s的参数说明; p s提供了很多的选项参数,常用的有以下几个; l长格式输出; u按用户名和启动时间的顺序来显示进程; j用任务格式来显示进程; f用树形格式来显示进程; a显示所有用户的所有进程(包括其它用户); x显示无控制终端的进程; r显示运行中的进程;

w w避免详细参数被截断; 我们常用的选项是组合是a u x或l a x,还有参数f 的应用; p s a u x或l a x输出的解释; U S E R进程的属主; P I D进程的I D; P P I D父进程; %C P U进程占用的C P U百分比; %M E M占用内存的百分比; N I进程的N I C E值,数值大,表示较少占用C P U时间; V S Z进程虚拟大小; R S S驻留中页的数量; W C H A N T T Y终端I D S T A T进程状态 D U n i n t e r r u p t i b l e s l e e p(u s u a l l y I O) R正在运行可中在队列中可过行的; S处于休眠状态; T停止或被追踪;

计算机操作系统1-7章复习概念

第一章操作系统引论 1.1操作系统的目标与作用 操作系统的目标:①方便性②有效性:有效性包含的第一层含义是提高系统资源的利用率,第二层含义是,提高系统吞吐量③可扩充性④开放性用户实现与操作系统通信的三种方式:①命令方式②系统调用③图标——窗口 操作系统会管理处理机、存储器、I/O设备以及文件,处理机管理是应用于分配和控制处理机;存储器管理主要负责内存的分配与回收;I/O设备管理是负责I/O设备的分配与操纵;文件管理是用于实现对文件的存取、共享和保护。 1.2几种操作系统 ①单道批处理系统,内存中只允许存放一个作业,当前正在运行的作业驻留内存,执行顺序是先进先出。在单道批处理系统中,一个作业单独进入内存并独占系统资源,直到运行结束后下一个作业才能进入内存,当进行输入操作时,cpu 处于等待状态。单道批处理系统的缺点是系统中的资源得不到充分的利用。 ②多道批处理系统,用户所提交的作业先存放在外存上,并排成一个队列成为“后备队列”。然后由作业调度程序按一定的算法,从后备队列中选择若干个作业调入内存,使它们共享cpu和系统中各种资源。多道批处理系统的优点有: 1.资源利用率高 2.系统吞吐量大缺点有:1.平均周转时间长2.无交互能力 ③分时系统,是指一台主机上连接多个带有显示器和键盘的终端,同事允许多个用户通过主机的终端,以交互方式使用计算机,共享主机中的资源。分时系统的特性为:1.多路性2.独立性3.及时性4.交互性 ④实时系统,是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间。实时系统的特征有:1.多路性2.独立性3.及时性4.交互性5.可靠性 1.3操作系统的基本特征 ①并发,是指一个时间段中有几个进程都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,担任一个时刻点上只有一个进程在处理机上运行。这里要和并行加以区分,并行是两个或多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。 进程,是指在做系统中能独立运行并作为资源分配的基本单位 ②共享,是指系统中的资源可供内存这中多个并发执行的进程共同使用。由于资源的属性不同,所以多个进程对资源的共享方式也不同,可以分为互斥共享和同时访问。 ③虚拟,是指通过技术(spooling技术)把一个物理实体变成若干个逻辑上的对应物。 ④异步,是指进程以人们不可预知的速度向前推进(和线程的异步性类似) 1.4操作系统的主要功能 处理机管理功能:1.进程控制2.进程同步3.进程通信4.调度(作业调度,进程调度) 存储器管理功能:1.内存分配2.内存保护3.地址映射4.内存扩充 设备管理功能:1.缓冲管理2.设备分配3.设备处理 文件管理功能:1.文件存储空间管理2.目录管理3.文件读写管理与保护

相关主题