进程管理功能模拟模块(进程调度的功能)

本文目录
进程调度的功能
记录系统中所有进程的执行情况
进程调度的具体功能可总结为如下几点:作为进程调度的准备,进程管理模块必须将系统中各进程的执行情况和状态特征记录在各进程的PCB表中。并且,根据各进程的状态特征和资源需求等、进程管理模块还将各进程的PCB表排成相应的队列并进行动态队列转接。进程调度模块通过PCB变化来掌握系统中存在的所有进程的执行情况和状态特征,并在适当的时机从就绪队列中选择出一个进程占据处理机。
选择占有处理机的进程
进程调度的主要功能是按照一定的策略选择—个处于就绪状态的进程,使其获得处理机执行。根据不同的系统设计目的,有各种各样的选择策略,例如系统开销较少的静态优先数调度法,适合于分时系统的轮转法(Round RoLin)和多级互馈轮转法(Round Robin with Multip1e feedback)等。这些选择策略决定了调度算法的性能。
进行进程上下文切换
—个进程的上下文(context)包括进程的状态、有关变量和数据结构的值、机器寄存器的值和PCB以及有关程序、数据等。一个进程的执行是在进程的上下文中执行。当正在执行的进程由于某种原因要让出处理机时,系统要做进程上下文切换,以使另一个进程得以执行。当进行上下文切换时点统要首先检查是否允许做上下文切换(在有些情况下,上下文切换是不允许的,例如系统正在执行某个不允许中断的原语时)。然后,系统要保留有关被切换进程的足够信息,以便以后切换回该进程时,顺利恢复该进程的执行。在系统保留了CPU现场之后,调度程序选择一个新的处于就绪状态的进程、并装配该进程的上下文,使CPU的控制权掌握在被选中进程手中。
一、操作系统概论
1、操作系统的特征是什么?
2、操作系统的功能?
3、操作系统的体系结构?
4、unix系统和Linux系统和Android的系统结构是?
5、操作系统的分类?
6、分时操作系统的特点是?
7、操作系统的设计目标?
1、计算机系统的定义:
一种可以按用户的要求接收和存储信息自动进行数据处理,并输出结果信息的系统。
2、分类:
广义:机械式系统和电子式系统。
电子式系统又分为模拟式和数字式计算机系统。
3、组成:
硬件(子)系统和软件(子)系统
4、 计算机系统资源包括:
硬件资源,软件资源
定义解析:
1、组织和管理计算机系统中的硬件资源和软件资源。
在操作系统中涉及的各种表格或数据结构,将所有的软硬件资源都加以登记。 比如PCB、系统设备表等。
2、有效。
指操作系统在管理计算机资源是要考虑到系统运行的效率和资源的利用率,要尽可能地提高中央处理器的利用率,让它尽可能少的空转、应该在保证访问效能的前提下,尽可能有效地利用其它资源,比如减少内存硬盘空间的浪费等。
3、合理。
操作系统要公平对待不同的用户程序,保证系统不发生死锁和饥饿的现象。
4、方便
操作系统的人机界面要考虑到用户使用界面和程序接口两个方面的应用性易学性和易维护性。
用户使用接口:命令、图形界面。
程序接口:程序员能够使用操作系统提供的服务。
1、并发性
在计算机系统中,同时存在若干个运行的程序从宏观上看,这些程序是同时向前推进。
2、共享性
操作系统需要与多个用户程序共用系统中的各种资源,比如CPU、内存、外部设备等。
3、随机性
操作系统不能对运行的程序其行为以及硬件设备的情况作出任何事先的假定。
(操作系统不能预知程序在什么时候运行,某些时候因为某些原因暂停等等,都是不可预知的。)
1、软件的观点:
操作系统是一种大型系统软件。它是多功能的集合,有外在特性和内在特性。
外在特性指的是接口,内在特性指的是与硬件交互。
2、进程的观点:
把操作系统看作有多个可以同时独立运行的程序和一个对这些程序进行协调的核心。
侧重于分析系统各部分的并行工作,研究处理各项管理任务的分割,以及这些管理任务相互之间的关系,比如竞争资源、进程通信等。
3、 虚机器的观点。
在操作系统的支持下,用户不需要使用硬件机器(裸机),而是通过操作系统提供的各种手段来控制和使用计算机。
例如把所有设备和文件的操作抽象为统一的打开关闭,读写等用户感觉不到底层的操作差异。
把操作系统的全部功能包括系统调用、命令,作业控制语言,称为操作系统虚机器。
1、进程管理
进程管理的实质: 对中央处理器进行管理,或者称为处理机管理。
多道程序技术:多个程序同时放入内存,如果一个程序因为等待某个条件而不能运行,就把处理器专用权转交给另一个可运行的程序。
进程的引入:为了描述多道程序的并发而引入。
进程的简单定义:一个程序的运行过程。
进程管理的内容:进程控制、进程同步、进程间通信、调度。
2、存储管理
内存的分配与回收。
存储保护。
内存扩充。
3、文件管理
(1)任务:
有效地支持文件的存储,检索和修改等操作。解决文件的共享,保密和保护问题,以便用户方便安全的访问文件。
(2)功能
文件存储空间的管理。
目录管理。
文件系统的安全性。
4、设备管理
(1)设备管理的含义:
指计算机系统中,除了处理器和内存以外的所有输入输出设备的管理。
(2)功能:
负责外部设备的分配、启动和故障处理。
(3)采用的技术
中断技术、通道技术、虚拟设备技术、缓冲技术,尽可能地发挥设备和主机的并行能力。
5、用户接口
从用户观点看操作系统是用户与计算机之间的接口。
任务:为用户提供一个使用系统的良好环境,使用户能够有效地组织自己的工作流程,并使整个系统稳定的运行。
1、内核
功能: 线程调度、陷入处理和异常处理、中断处理和调度、多处理器同步供执行体使用的基本内核对象。
2、硬件抽象层HAL
系统可移植性的关键部分,为运行在Windows操作系统的硬件平台低级接口,隐藏了各种与硬件有关的细节,如I/O接口等专用的和依赖于计算机平台的函数。
3、执行体
4、系统进程和系统线程
1、内核层
是操作系统管理和控制中心,常驻内存。有两种接口:内核与硬件的接口和内核与shell的接口。
内核本身分为两部分,进程控制子系统和文件系统。
2、系统调用层
内核层与应用层之间供程序员开发使用,包括进程管理、文件管理、中断状态。
3、应用层
面向用户操作的界面
4个部分:内核、shell、文件系统和应用程序。
4个部分:从低到高:应用程序层、应用框架层、系统运行库层和Linux内核层
发展过程:
1、手工阶段
2、监控程序
3、多道批处理
4、分时与实时操作系统
5、UNIX通用操作系统,
6、个人计算机操作系统
7、Android操作系统。
根据用户界面和功能特性分类
三种基本类型
1、批处理程序。
2、分时系统。
3、实时系统。
新类型
1、个人操作系统
2、网络操作系统
3、分布式操作系统
4、嵌入式操作系统
可靠性
高效性
易维护性
可移植性
安全性
简明性。
重点知识,请回答:
1、操作系统的特征是什么?
2、操作系统的功能?
3、操作系统的体系结构?
4、unix系统和Linux系统和Android的系统结构是?
5、操作系统的分类?
6、分时操作系统的特点是?
7、操作系统的设计目标?
C语言模拟操作系统进程调度和管理
给,已经编译运行通过了,简单写的:
#include《stdio.h》
#include《time.h》
#include《stdlib.h》
/*********************以下是全局数据结构和变量***********************/
/*PCB 结构*/
struct PCB{
int pname;
int pri;
int runtime;
int waittime;
struct PCB *next;
}pcb;
/* 运行指针*/
struct PCB *running;
/*高优先级就绪队列头指针*/
struct PCB *Hready;
/*低优先级队列头指针*/
struct PCB *Lready;
/*等待队列头指针*/
struct PCB *wait;
int sig=0;
/**************************以下是函数说明****************************/
/*利用循环实现延迟*/
void delay();
/*模拟进程3-9*/
void proc(struct PCB *running);
/*将node插入到head所指示的队列的尾部*/
void InsertIntoQueueTail(struct PCB ** head,struct PCB *node);
/*进程调度函数*/
int proc_switch();
/*进程等待函数*/
void proc_wait();
/*进程唤醒函数*/
int proc_wakeup();
/************************以下是函数定义及注释************************/
/*主函数*/
main()
{
int i;
/*初始化,创建进程3-9,置低优先级,等待时间为0,
依次插入低优先级队列*/
for(i = 0;i 《 7;i++){
pcb.pname = i+3;
pcb.pri = 0;
pcb.waittime = 0;
InsertIntoQueueTail(&Lready,&pcb);
}
/*等待队列和高优先级队列为空*/
wait = NULL;
Hready=NULL;
printf("\nThe process_switch begin:\n");
/*模拟进程调度开始*/
for(;;)
{
switch(sig){
case 0:/*无进程等待调度,打印信息并返回*/
if(!proc_switch())
{
printf("No Process to run,press any key to return:\n");
getchar();
}
break;
case 1:proc_wait();
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:proc(running);
break;
default:printf("\nerror!");
exit(-1);
}
}
}
/*功能:延迟一个时间片*/
/*入口参数:无*/
/*出口参数:无*/
void delay()
{
int i,j;
for(i=0;i《20000;i++)
for(j=0;j《10000;j++)
{
}
}
/*功能:进程3-9*/
/*入口参数:运行指针*/
/*出口参数:无*/
void proc(struct PCB * running)
{
int i;
srand( (unsigned)time( NULL ) );
/*显示当前运行的进程的id*/
printf("\nNow Process %d is running\n",running-》pname);
/*当前进程执行running-》runtime个时间片*/
for(i=running-》runtime;i》0;i--){
/*显示剩余的时间片*/
printf("%d time slice(s) left\n",i);
/*延迟*/
delay();
proc_wakeup();
/*产生一个1到1000的随机数,若该随机数小余100,当前进程等待,*/
if((rand()%1000+1)《100){
printf("Process %d begins to wait.\n",running-》pname);
sig=1;
return;
}
}
/*显示时间片耗尽,进程转为低优先级就绪状态*/
printf("Time slices for process %d exhausted.\n",running-》pname);
InsertIntoQueueTail(&Hready,running);
sig=0;
return;
}
/*功能:将一个节点插入队列尾部*/
/*入口参数:队列头指针地址head,待插入结点node*/
/*出口参数:无*/
void InsertIntoQueueTail(struct PCB **head,struct PCB *node)
{
struct PCB *p;
node-》next=NULL;
/*被插入队列为空*/
if(*head==NULL){
*head=node;
return;
}
/*被插入队列不为空*/
else{
p=*head;
/*找到队列的最后一个结点*/
while(p-》next!=NULL) p=p-》next;
p-》next=node;
}
}
/*功能:进程调度*/
/*入口参数:无*/
/*出口参数:若调度成功,返回1,否则返回0*/
int proc_switch()
{
/*若高优先级就绪队列和低优先级就绪队列均为空,则循环执行进程唤醒*/
while(Hready == NULL && Lready == NULL)
if(!proc_wakeup()) return 0;
/*若高优先级就绪队列非空,则执行其第一个进程,分配2个时间片*/
if(Hready != NULL){
running = Hready;
Hready = Hready -》 next;
running-》runtime = 2;
}
/*若高优先级就绪队列为空,则执行低优先级就绪队列的第一个进程,
分配5个时间片*/
else{
running = Lready;
Lready=Lready -》 next;
running -》 runtime = 5;
}
/*别调度进程的id赋给sig*/
sig = running -》 pname;
return 1;
}
/*功能:进程等待。将当前运行进程置高优先级,等待时间为20,
插入等待队列尾部*/
/*入口参数:无*/
/*出口参数:无*/
void proc_wait()
{
struct PCB *p;
running-》pri=1;
running-》waittime=20;
InsertIntoQueueTail(&wait,running);
sig=0;
return;
}
/*功能:进程唤醒*/
/*入口参数:无*/
/*出口参数:若等待队列为空,则返回0,否则返回1*/
int proc_wakeup()
{
struct PCB *p,*last,*MoveToReady;
p = wait;
/*等待队列为空,返回0*/
if(p == NULL) return 0;
/*延迟*/
delay();
/*等待队列中每个进程的等待时间减1*/
while(p != NULL){
p -》 waittime -= 1;
p=p-》next;
}
p=wait;
/*从等待队列中摘除等待时间为0的进程,插入到高优先级就绪队列的尾部*/
while(p!=NULL){
if(p -》 waittime == 0){
MoveToReady = p;
if (p == wait)
wait = p-》next;
else
last -》 next = p-》next;
p = p -》 next;
InsertIntoQueueTail(&Hready,MoveToReady);
}
else{
p = p -》 next;
}
}
sig =0;
return 1;
}
操作系统的五个基本功能是
进程管理,其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占,进程管理的工作十分简单。
操作系统的五大功能分别是处理器管理、存储器管理、设备管理、文件管理和作业管理。处理器管理处理器管理最基本的功能是处理中断事件,配置了操作系统后,就可对各种事件进行处理。
操作系统通常应包括下列五大功能模块:(1)处理器管理。当多个程序同时运行时,解决处理器(CPU)时问的分配问题。(2)作业管理。完成某个独立任务的程序及其所需的数据组成一个作业。

更多文章:
offset函数提取不重复数据(EXCEL怎样提取不重复值到另一个表格中)
2026年6月4日 09:45
javacontinue语句的作用(有关Java语言continue的用法)
2026年3月5日 08:45
android系统采用linux系统内核(安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳)
2025年7月26日 09:45
html导入表格标签(在网页上插入一个表格,表格相关的HTML标记有哪些)
2025年7月7日 20:15
vbs空格键加alt键代码怎么写(VBS模拟按键方法,详细点,每步要讲解,谢了)
2026年9月3日 09:00














