实验二 DOS进程管理

实验二  DOS进程管理

专业 网络工程1班 姓名 李灵锋 学号 201406114324

一、实验目的

利用编程工具实现系统进程管理以及调度的相关过程,理解进程调度的工作原理,熟悉系统的先关运作。

二、实验要求

1.通过模拟进程管理的实现,加深对进程这一概念的理解。

2.输入进程数目,执行程序。

3.显示出运行态,等待态以及就绪态的进程。

三、实验环境

在Windows系统或者是dos系统中,运用vs/vc++等工具实现。

四、实验原理及核心算法

1.原理:进程从创建而产生到撤销致消亡的整个生命周期,有时占有处理器执行,有时虽可运行但分不到处理器,有时虽有空闲处理器但因等待某个事发生而无法执行,这些都说明进程和程序是不同的。因此至少要定义三种进程状态,分别为:运行态、就绪态、等待态。而进程则在这三个状态之间转换。

2.代码过程:

// 201406114324.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#define READY 1//就绪态
#define RUN 2//运行态
#define BLOCK 3//等待态(阻塞)

typedef struct pcbNode
{
int num;
struct pcbNode *next;
int cputime;
int state;
}pcb;

pcb *head;
pcb *run;

pcb *CreatPCB(int n)
{
int i;
pcb *p,*q;
head=(pcb*)malloc(sizeof(pcb));
head->next=NULL;
p=head;
for(i=1;i<=n;i++)
{
q=(pcb*)malloc(sizeof(pcb));
q->num=i;
q->next=NULL;
q->cputime=rand()%100;
q->state=READY;

p->next=q;
p=q;
}
return head;
}

void DelectPCB()
{
pcb *p;
if(head->next != NULL)
{
p=head->next;
head->next=head->next->next;
free(p);
}
}

void Display()
{
pcb *p;
p=head->next;
while(p)
{
printf("%d",p->num);
p=p->next;
}
printf("\n");
}

void control()
{
run=head->next;

run->state=RUN;
{
while(run->cputime)
run->cputime--;
printf("正在执行的进程编号为:%d\n",run->num);
run->state=RUN;
run=run->next;
DelectPCB();
printf("执行进程后就绪队列中的进程是:");
Display();
printf("\n");
}
}

void main()
{
int n;
int flag=1;
printf("请输入要创建的进程数量:");
scanf("%d",&n);

head=CreatPCB(n);
printf("就绪队列中的进程数有:");
Display();
printf("\n");
while(flag)//有flag的值判断是否继续执行control()函数
{
if(head->next)//判断进程是否完成
control();
else flag=0;
}
printf("\n");
system("pause");
}

 五、实验截图

六、心得总结

通过对系统进程管理、进程调度的代码模拟实现,对系统进程管理有了更深一层的理解,还需多加练习,掌握好这一方面的知识。

时间: 2024-10-06 00:44:05

实验二 DOS进程管理的相关文章

(二)进程管理

二.进程的基本概念 在未配置OS的系统中,程序的执行方式是顺序执行,即必须在一个程序执行完成后,才允许另外一个程序执行:在多道程序环境下,则允许多个程序并发执行.也正是程序的并发执行,才导致引入进程. 2.1 程序的顺序执行 通常可以把一个应用程序分成若干个程序段,在各程序段之间,必须按照某种先后次序顺序执行,仅当前一操作(程序段)执行完后,才能执行后继操作.如典型的输入->计算->打印任务就是顺序执行. 程序顺序执行时的特征如下 ① 顺序性,处理机的操作严格按照程序锁规定的顺序执行,即每一操

第十二章 进程管理

一.进程 1.进程概述 一个程序是一个可执行文件,而进程是程序执行的动态过程.进程是为运行着的程序提供执行环境的实体,它包括一个地址空间和一个控制点. 当执行一个程序的时候,系统加载程序会把此程序加载到内存中,它在内存中由5部分组成:正文.初始化数据.未初始化数据.栈.用户区 进程通常由三大部分组成:代码.数据.进程控制块(PCB).代码部分描述了进程所要完成的功能:数据部分包括程序在执行的时候所需要的数据和工作区.进程的代码部分和数据部分是进程存在的物质基础.进程控制块(PCB)包括了进程的描

Linux学习笔记十二:进程管理

1.查看进程 第一种,用w查看进程: [[email protected] ~]# w 05:22:23 up 14 min, 2 users, load average: 0.00, 0.02, 0.06 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT chenyr tty1 :0 05:08 14:38 2.35s 0.23s pam: gdm-passwo chanshuy pts/0 192.168.230.1 05:09 0.00

二、nginx模块优化和进程管理

博客:http://lijinhuan.blog.51cto.com/ 微博:http://weibo.com/lijinhuanexperience 代码:https://github.com/lijinhuan 一.模块管理 1.nginx是模块化结构,但是它和apache不一样,它的模块不能动态加载或者卸载. 它是一种静态模块系统,如果想要卸载或者安装新的模块,必须重新编译指定 2.编译时./configure --help 查看所有模块:--without--xx表示默认安装,--wit

七、Linux脚本进阶和进程管理

一.进程 进程:init(1)-->系统的第一个进程,通过fork调用其他进程,自身由内核发起. 通过pstree可以查看进程之间的父子关系. [[email protected] ~]# pstree init─┬─NetworkManager─┬─dhclient │                └─{NetworkManager} ├─abrtd ├─acpid ├─atd ├─auditd───{auditd} ├─crond ├─cupsd ├─dbus-daemon───{dbus

Linux 内核子系统之内存与进程管理子系统

Linux 内核子系统的组成 由以上7个子系统组成. 一.内存管理子系统 职能: 1.从虚拟地址到物理地址映射的管理. 2.物理内存分配的管理. 地址映射管理 2.1虚拟地址空间分布 在Linux中使用的是虚拟地址,但是在访问硬件的时候使用的是物理地址.比如程序中用malloc函数分配的都是虚拟地址,但是硬件在使用时用的是物理地址,这其中就有一个转化关系. 它所支持的虚拟地址空间是由硬件地址总线宽度决定的,比如32位地址总线支持4GB虚拟内存. 用户空间(0-3G):用户程序. 内核空间(3-4

工作管理、进程管理-(Linux笔记)

一.工作管理 1.&:直接将命令丢到后台中执行 Eg: tar -jcv -f infor/t.tar.bz2 infor/test1 & (将test1压缩) 2.[ctrl] -z :将目前的工作丢到后台中暂停 3.jobs:查看目前后台工作状态 jobs [-lsr] -l:除了列出job number与命令串外,还列出PID的号码 -s:仅列出正在后台暂停的工作 -r:仅列出正在后台运行的工作 4.fg:将后台工作拿到前台来处理 fg %jobnumber 5.bg:让后的状态变成

linux 进程管理工具

进程管理 狭义定义:进程是正在运行的程序的实例. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 进程是操作系统中最基本.重要的概念.是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上. 一.进程的属性: 进程ID(PID):是唯一的数值,用来区分进程: 父进程和父进程的ID(PP

Linux的进程管理和计划任务

系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux的引导过程完了一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备. Linux操作系统的引导流程包括以下阶段:开机自检.MBR引导.GRUB菜单.加载Linux内核.INIT进程初始化 (一) init进程负责完成一系列的初始化过程 读取配置文件"/etc/inittab" 根据配置内容执行脚本文件"/etc/rc.d/rc.sysinit" 通过"/etc/rc.d/r