cpu调度实验报告
实验一 处理机调度实验报告

实验一处理机调度一、实验内容选择一个调度算法,实现处理机调度。
二、实验目的多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。
本实验模拟实现处理机调度,以加深了解处理机调度的工作。
三、实验题目1、设计一个按优先权调度算法实现处理机调度的程序;2、设计按时间片轮转实现处理机调度的程序。
PCB内容要求:进程名/PID;要求运行时间(单位时间);优先权;状态:PCB指针;1、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权-1要求运行时间-1要求运行时间=0时,撤销该进程3、重新排序,进行下轮调度;源代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>typedef struct pcb{char PID[50];int needTime;//需要运行时间int priority;//优先权char state[20];//进程状态struct pcb *next;}PCB;typedef struct{PCB* front;PCB* rear;}ProcessQueue;void SelectAlgorithm();void CreateQProcess(ProcessQueue &Q,char*,int time,int pri,char*);void ProcessSchedule();void InitQueue(ProcessQueue &Q);void visitQueue(ProcessQueue &Q);bool RunProcess(PCB* rp,ProcessQueue &Q);bool NonPreemptivePriority(ProcessQueue &Q);//非抢占式优先权调度void delProcess(PCB* delp);bool RunProcessPreem(PCB* rp,ProcessQueue &Q);//抢占式优先执行进程bool PreemptivePriority(ProcessQueue &Q);void RR(ProcessQueue &Q);int main(){int iSel;int i = 0;SelectAlgorithm();ProcessQueue readyQ;//就绪进程队列PCB newpcb;InitQueue(readyQ);printf("请选择调度算法:");do{scanf("%d",&iSel);} while (!(iSel == 1 || iSel == 2 || iSel == 3));while(i < 3){printf("请输入要创建的进程:\n");fflush(stdin);gets(newpcb.PID);fflush(stdin);scanf("%d",&newpcb.needTime);fflush(stdin);scanf("%d",&newpcb.priority);fflush(stdin);gets(newpcb.state);fflush(stdin);CreateQProcess(readyQ,newpcb.PID,newpcb.needTime,newpcb.priority,newpcb.state);printf("创建了一个进程\n");++i;}visitQueue(readyQ);//显示的是各个进程的优先权switch(iSel){case 1:while(NonPreemptivePriority(readyQ));//非抢占优先权调度break;case 2:PreemptivePriority(readyQ);//抢占式优先权调度break;case 3:RR(readyQ);break;}return 0;}void SelectAlgorithm(){printf("1.非抢占式优先权调度\n");printf("2.抢占式优先权调度\n");printf("3.时间片轮转调度\n");}void InitQueue(ProcessQueue &Q)//初始化进程队列{Q.front = Q.rear = (PCB*)malloc(sizeof(PCB));if(!Q.front) exit(-1);Q.front->next = NULL;}void CreateQProcess(ProcessQueue &Q,char* pid,int time,int pri,char* st)//指定进程入就绪队列,将优先权高的插在队列前面{PCB* p = (PCB*)malloc(sizeof(PCB));if(!p) exit(-1);strcpy(p->PID,pid); p->needTime = time;p->priority = pri; strcpy(p->state,st);p->next = NULL;PCB* q = Q.front->next, *old = Q.front;if(!q)//如果原队列为空{Q.rear->next = p;Q.rear = p;//q == NULL}else//如果原队列不为空{for(;q != NULL;){if(p->priority > q->priority){old->next = p;p->next = q;return;}q = q->next;old = old->next;if(q == NULL){Q.rear->next = p;Q.rear = q;//q == NULL}}}}void ProcessSchedule(){}void visitQueue(ProcessQueue &Q)//访问进程队列{PCB* p = (PCB*)malloc(sizeof(PCB));if(!p) exit(-1);p = Q.front->next;while(p != NULL){printf("%d,",p->priority);p = p->next;}printf("\n");int i = 0;}bool PreemptivePriority(ProcessQueue &Q){PCB* rprocess;if(!Q.front->next){printf("就绪队列中没有进程可以调度!\n");return false;}else{rprocess = Q.front->next;//选择优先权最高的进程Q.front->next = Q.front->next->next;//将进程移除就绪队列while(rprocess != NULL)//抢占式优先调度{RunProcessPreem(rprocess,Q);if(rprocess->needTime == 0){delProcess(rprocess);if((rprocess = Q.front->next) == NULL){printf("就绪队列中没有进程可以调度!\n");return false;}else{Q.front->next = Q.front->next->next;continue;}}if(Q.front->next != NULL){if(rprocess->priority < Q.front->next->priority)//判断运行了1个时间后还是否具有最高优先权{/*rprocess->next = Q.front->next->next;//正在运行中的进程因为优先权降低,重新进入就绪队列temp = Q.front->next;Q.front->next = rprocess;rprocess = temp;//rprocess保存运行进程*/CreateQProcess(Q,rprocess->PID,rprocess->needTime,rprocess->priority,rprocess->state);//正在运行中的进程因为优先权降低,重新进入就绪队列rprocess = Q.front->next;Q.front->next = Q.front->next->next;}}}}return true;}bool NonPreemptivePriority(ProcessQueue &Q)//非抢占式优先权调度{PCB* rprocess;//存放要调度运行的进程if(!Q.front->next){printf("就绪队列中没有进程可以调度!\n");return false;}else{rprocess = Q.front->next;Q.front->next = Q.front->next->next;//已经调度,从就绪队列中删除进程if(RunProcess(rprocess,Q)){delProcess(rprocess);printf("就绪队列状态:\n");visitQueue(Q);}return true;}}bool RunProcess(PCB* rp,ProcessQueue &Q)//执行进程{while(rp->needTime){printf("进程%s正在运行...\n",rp->PID);printf("PID[50]\tneedTime\tpriority\tstate[20]\n");printf("%s\t%d\t\t%d\t\t%s\n",rp->PID,rp->needTime,rp->priority,rp->state);Sleep(1000);--rp->needTime;}return true;}bool RunProcessPreem(PCB* rp,ProcessQueue &Q)//抢占式优先,RR执行进程{printf("进程%s正在运行...\n",rp->PID);printf("PID[50]\tneedTime\tpriority\tstate[20]\n");printf("%s\t%d\t\t%d\t\t%s\n",rp->PID,rp->needTime,rp->priority,rp->state);Sleep(1000);--rp->needTime;--rp->priority;return true;}void delProcess(PCB* delp)//撤销进程{free(delp);}void RR(ProcessQueue &Q){PCB* running = Q.front->next;PCB* old = Q.front;while(Q.front->next != NULL){if(running){RunProcessPreem(running,Q);if(running->needTime == 0)//撤销进程{old->next = running->next;delProcess(running);running = old->next;continue;}old = old->next;running = running->next;}else{old = Q.front;running = old->next;}}printf("就绪队列中没有进程可以调度!\n");}以下是使用时间片轮转算法的一次执行:选择算法3:进程输入,此处输入1,1,1,1,2,2,2,2,3,3,3,3测试。
实验一处理器调度实验报告

处理器调度一、实验内容选择一个调度算法,实现处理器调度。
二、实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。
当就绪状态进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。
本实验模拟在单处理器情况下处理器调度,帮助学生加深了解处理器调度的工作。
三、实验题目设计一个按优先数调度算法实现处理器调度的程序提示:(1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。
进程控制块的格式为:其中,进程名----作为进程的标识,假设五个进程的进程名分别是R, P2, P3,P4,R。
指针—按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块首地址,最后一个进程中的指针为“ 0”。
要求运行时间-- 假设进程需要运行的单位时间数。
优先数-赋予进程的优先数,调度时总是选取优先数大的进程先执行。
状态-可假设有两种状态,“就绪”状态和“结束“状态,五个进程的初始状态都为“就绪“状态,用“ R”表示,当一个进程运行结束后,它的状态变为“结束”,用“ E”表示。
(2)在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。
(3)为了调度方便,把五个进程按给定的优先数从大到小连成队列,用一单元指出队首进程,用指针指出队列的连接情况。
例:队首标志(4)处理器调度总是选队首进程运行。
采用动态改变优先数的办法,进程每运行一次优先数就减“ 1”。
由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:优先数- 1 要求运行时间-1来模拟进程的一次运行提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,它占有处理器运行,直到出现等待事件或运行结束。
在这里省去了这些工作。
(5)进程运行一次后,若要求运行时间工0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改为“结束”(),且退出队列。
操作系统调度算法实验报告

操作系统调度算法实验报告
本实验旨在研究不同操作系统调度算法在实际应用中的表现和影响。
我们选择了三种常见的调度算法进行对比分析,分别是先来先服务(FCFS)、最短作业优先(SJF)和时间片轮转(RR)。
1. 实验准备
在开始实验之前,我们首先搭建了一个简单的模拟环境,包括一个CPU和多个进程。
每个进程具有不同的执行时间,以便模拟不同情况
下的调度效果。
2. 先来先服务(FCFS)
先来先服务是最简单的调度算法之一,即根据进程到达的顺序依次
执行。
实验结果显示,FCFS算法适用于处理大量长作业,但当出现短
作业时会导致平均等待时间较长。
3. 最短作业优先(SJF)
最短作业优先算法会优先执行执行时间最短的进程,以减少平均等
待时间。
在我们的实验中,SJF算法表现出色,尤其在短作业较多的情
况下,能够显著提高系统的响应速度。
4. 时间片轮转(RR)
时间片轮转算法将CPU时间分配给每个进程,每个进程执行一个
时间片后轮转到下一个进程。
然而,RR算法可能导致上下文切换频繁,
影响系统效率。
在实验中,我们发现RR算法在处理多任务时效果较好,但在处理长时间任务时表现一般。
5. 实验总结
通过对三种调度算法的实验比较,我们可以看出不同算法在不同情
况下有着不同的优势和劣势。
在实际应用中,需要根据具体情况选择
合适的调度算法,以提高系统的性能和效率。
希望本实验能为操作系
统调度算法的研究提供一定的参考价值。
操作系统实验之处理机调度实验报告

操作系统实验之处理机调度实验报告一、实验目的处理机调度是操作系统中的核心功能之一,本次实验的主要目的是通过模拟不同的处理机调度算法,深入理解操作系统对处理机资源的分配和管理策略,比较不同调度算法的性能差异,并观察它们在不同负载情况下的表现。
二、实验环境本次实验使用的操作系统为 Windows 10,编程语言为 Python 38。
实验中使用了 Python 的相关库,如`numpy`、`matplotlib`等,用于数据生成、计算和图形绘制。
三、实验原理1、先来先服务(FCFS)调度算法先来先服务算法按照作业到达的先后顺序进行调度。
先到达的作业先被服务,直到完成或阻塞,然后再处理下一个到达的作业。
2、短作业优先(SJF)调度算法短作业优先算法选择预计运行时间最短的作业先执行。
这种算法可以有效地减少作业的平均等待时间,但可能导致长作业长时间等待。
3、时间片轮转(RR)调度算法时间片轮转算法将处理机的时间分成固定长度的时间片,每个作业轮流获得一个时间片的处理时间。
当时间片用完后,如果作业还未完成,则将其放入就绪队列的末尾等待下一轮调度。
4、优先级调度算法优先级调度算法为每个作业分配一个优先级,优先级高的作业先被执行。
优先级可以根据作业的性质、紧急程度等因素来确定。
四、实验内容与步骤1、数据生成首先,生成一组模拟的作业,包括作业的到达时间、预计运行时间和优先级等信息。
为了使实验结果更具代表性,生成了不同规模和特征的作业集合。
2、算法实现分别实现了先来先服务、短作业优先、时间片轮转和优先级调度这四种算法。
在实现过程中,严格按照算法的定义和规则进行处理机的分配和调度。
3、性能评估指标定义了以下性能评估指标来比较不同调度算法的效果:平均等待时间:作业在就绪队列中的等待时间的平均值。
平均周转时间:作业从到达系统到完成的时间间隔的平均值。
系统吞吐量:单位时间内完成的作业数量。
4、实验结果分析对每种调度算法进行多次实验,使用不同的作业集合,并记录相应的性能指标数据。
实验二--单处理器系统的进程调度

实验二–单处理器系统的进程调度
简介
在操作系统中,进程调度是非常重要的一项工作。
进程调度负责将CPU分配
给各个进程,使得每个进程都能够有机会占用CPU资源。
在单处理器系统中,CPU只有一个,因此进程调度是非常重要的。
本次实验将会探究单处理器系统的进程调度,了解各种进程调度算法的实现和
比较,利用模拟操作系统的实验平台进行实验。
实验目的
1.了解进程调度的基本概念和实现方法;
2.学习多种进程调度算法,并比较其优缺点;
3.熟悉模拟操作系统的实验环境,学习如何将算法实现到具体的系统中。
实验内容
进程调度的基本概念
进程调度是指将CPU资源分配给各个进程的过程。
在单处理器系统中,当有
多个进程需要使用CPU时,操作系统需要进行进程调度,使得每个进程都能够得
到CPU资源。
在进程调度中,需要考虑各个进程的优先级、进程的状态和进程的等待时间等
因素。
根据不同的调度算法,可以根据这些因素来确定哪个进程应该先占用CPU。
进程调度算法比较
常见的进程调度算法包括:
1.先来先服务算法(FCFS)
2.短作业优先算法(SJF)
3.优先级调度算法
4.时间片轮转算法(RR)
下面将对这些算法进行比较和介绍。
先来先服务算法(FCFS)
先来先服务算法是最简单的一种进程调度算法。
该算法将按照进程的到达时间
的先后顺序进行调度,先到达的进程先得到CPU资源。
这种算法的优点是实现简单,适用于短作业和计算密集型进程。
缺点是无法充分利用CPU资源,导致长作业需要等待较长时间才能被调度,容易产生。
处理机调度实验报告

处理机调度实验报告处理机调度实验报告一、引言处理机调度是计算机操作系统中一个重要的概念,它涉及到如何合理地分配处理机资源以提高系统的运行效率。
本文将针对处理机调度进行实验,探讨不同调度算法对系统性能的影响。
二、实验目的本实验的目的是通过模拟不同的处理机调度算法,比较它们在不同负载下的性能表现,进而分析其优缺点,为实际操作系统的调度算法选择提供参考。
三、实验方法1. 实验环境本实验使用了一台配置较高的计算机作为实验环境,操作系统为Linux,处理器为Intel Core i7,内存为8GB。
2. 实验设置为了模拟不同的负载情况,我们使用了三个不同的测试程序:程序A、程序B和程序C。
程序A是一个计算密集型任务,程序B是一个I/O密集型任务,程序C是一个混合型任务。
3. 实验步骤首先,我们分别运行程序A、程序B和程序C,并记录它们的运行时间。
然后,我们使用不同的调度算法来调度这些任务,并记录它们的运行时间和系统资源利用率。
四、实验结果与分析1. 调度算法1:先来先服务(First-Come, First-Served,FCFS)FCFS算法按照任务到达的先后顺序进行调度,即先到先服务。
实验结果显示,在计算密集型任务下,FCFS算法表现较好,但在I/O密集型任务和混合型任务下,其性能明显下降。
这是因为在FCFS算法中,任务的执行顺序是固定的,无法根据任务的特性进行灵活调度。
2. 调度算法2:最短作业优先(Shortest Job First,SJF)SJF算法根据任务的执行时间进行调度,即执行时间最短的任务先执行。
实验结果显示,在计算密集型任务和混合型任务下,SJF算法表现较好,但在I/O密集型任务下,其性能较差。
这是因为在I/O密集型任务中,任务的执行时间不仅与计算量有关,还与I/O操作的耗时有关,因此SJF算法无法有效地进行调度。
3. 调度算法3:时间片轮转(Round Robin,RR)RR算法将处理机的运行时间划分为若干个时间片,每个任务在一个时间片内执行一定的时间,然后切换到下一个任务。
处理器调度算法实验报告

处理器调度算法实验报告1. 背景处理器调度算法是操作系统中的重要组成部分,用于优化多道程序在处理器上的执行顺序,提高系统的整体性能和响应时间。
通过合理的调度算法,可以使多个进程公平竞争处理器资源,并满足不同进程的优先级要求。
本次实验旨在探究不同的处理器调度算法在不同场景下的效果,以及调度算法对系统性能的影响。
2. 分析2.1 实验环境本次实验使用模拟器搭建了一个简化的多道程序系统,包含多个进程和一个处理器。
每个进程具有不同的优先级和执行时间。
调度算法的任务是按照一定的规则将进程调度到处理器上执行。
2.2 调度算法本次实验采用了三种常见的调度算法进行比较:先来先服务调度(FCFS)、最短作业优先调度(SJF)和时间片轮转调度(RR)。
•FCFS算法:按照进程到达的先后顺序进行调度,即先到先服务。
该算法简单直观,但无法考虑进程的执行时间,可能导致长作业优先问题。
•SJF算法:按照进程的执行时间进行调度,先执行执行时间较短的进程。
该算法可以减少平均等待时间,但是对长作业不公平。
•RR算法:将进程按照到达顺序排成一个队列,每个进程执行一小段时间片后,切换到下一个进程。
该算法可以公平地分配处理器资源,但是可能导致上下文切换频繁。
2.3 实验设计本次实验设计了多个场景,每个场景包含一组具有不同优先级和执行时间的进程。
在每个场景中,分别使用FCFS、SJF和RR算法进行调度,并记录每个进程的等待时间和周转时间。
2.4 实验结果经过实验统计和数据分析,得到了每个场景下不同调度算法的各项指标,如下表所示:实验场景算法平均等待时间平均周转时间场景1 FCFS 10 20场景1 SJF 5 15场景1 RR 8 18场景2 FCFS 15 25场景2 SJF 5 15场景2 RR 12 22…………2.5 结果分析从上表可以看出,不同的调度算法在不同场景下表现出了不同的性能。
具体分析如下:•FCFS算法在长作业的场景中表现较差,平均等待时间和平均周转时间较长。
CPU调度报告

处理机调度,也叫CPU调度,进程调度,讨论的是如何将处理机分给各个进程运行的问题。
它涉及到调度类型、调度方式、调度算法、调度时机和调度性能这样一些问题。
而死锁是操作系统中偶尔会出现的现象,它会使某些进程处于一种无法自我解脱的僵持状态,需要系统花费一定的时空开销来解除并恢复它们的运行。
一、三种类型的调度处理机(CPU)在进程之间的动态分配和切换,涉及到三种类型的调度,即高级调度(也叫作业调度、长程调度)、中级调度(也叫进程对换)和低级调度(也叫处理机调度、CPU调度、进程调度)。
低级调度是所有的系统都有的,但高、中级调度不是所有的系统都有。
二、处理机调度准则不同的CPU调度算法有不同的性质并且可能会更适用于某个进程类型。
在一个特定的环境中采用哪个算法必须要考虑到各种算法的特性。
可以用有多个准则来比较CPU调度算法。
在确定最好的算法中所用的特征可以使各种算法产生实质性的不同。
这些准则包括:CPU利用率:我们希望尽可能的保持CPU忙碌。
CPU利用率可能在0到100之间。
在实际的系统中,CPU利用率的范围应该在40%(系统负荷较轻)到90%(系统负荷较重)之间。
吞吐量:如果CPU忙于执行进程,那么工作正在进行(就要完成了)。
对工作量的一种测量是单位时间内完成的进程数,被称为吞吐量。
对较长的进程来说吞吐量可能是每小时一个进程;对于较短的事务来说可能是每秒十个进程。
周转时间:对一个进程来说,一个重要的指标是它执行所需要的时间。
从进程提交到进程完成的时间间隔为周转时间。
周转时间是等待进入内存的时间、在就绪队列中等待的时间、在CPU中执行的时间和I/O操作的时间的总和。
等待时间:CPU调度算法并不能影响进程的执行时间和I/O操作时间;它只能影响进程在就绪队列中等待的时间。
等待时间是进程在就绪队列中耗费时间的总和。
响应时间:在交互式系统中,周转时间可能不是最好的指标。
进程通常会很早的产生一些输出,并且在先前的结果输出给用户时继续计算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/qwlt/q20.htm黄河流域水资源保护局1. 西北地区黄河流域片概况西北地区包括新疆、宁夏的全部,青海、甘肃两省的黄河流域和内陆河流域,陕西省的黄河流域部分,内蒙古的伊克昭盟、阿拉善盟和乌海市,是我国西部大开发的重要组成部分。
1.1社会经济概况西北地区土地面积315万km2 (占全国总面积的33%),其中黄河流域为57万km2占18%;内陆河地区为257万km2占82%。
西北地区总人口为7438万人,与土地面积的分布不同,黄河流域人口比重较大,有5432万人,占71%;内陆河地区有2206万人,占29%。
城市化率28.5%,略低于全国水平,黄河流域仅24%,内陆河地区达39%。
西北地区耕地面积为1.95亿亩,其中黄河流域有1.15亿亩,占59%,内陆河地区有0.80亿亩占41%。
人均耕地2.62亩,其中黄河流域2.12亩,内陆河流域3.63亩。
有效灌溉面积8626万亩,其中黄河流域有3384万亩,占38%;内陆河流域有5542万亩,占62%。
实际灌溉面积达9132万亩,其中黄河流域有2998万亩,内陆河流域有6134万亩。
2.2 水资源概况据现有资料分析,西北地区多年平均地表水资源量约为1463亿m3,其中黄河流域部分544亿m3,内陆河流域919亿m3。
人均地表水资源量1915m3,其中黄河流域人均1001m3,内陆河流域人均4166m3,耕地亩均地表水资源量750m3,其中黄河流域亩均473m3,内陆河流域亩均1149m3。
西北地区地下水资源量998亿m3,其中黄河流域304亿m3,内陆河流域694亿m3。
地下水资源与地表水资源重复计算量789亿m3,其中黄河流域217亿m3,内陆河流域572亿m3。
西北地区水资源总量1672亿m3,其中黄河流域631亿m3,内陆河流域1041亿m3,人均水资源总量2189m3,其中黄河流域人均1162m3,内陆河流域人均4719m3,耕地亩均水资源量857m3,其中黄河流域亩均549m3,内陆河流域亩均1301m3。
西北地区深居内陆,大部分地区气候干燥,雨雪稀少,水资源贫乏,平均径流深只有47mm,其中黄河流域88 mm ,内陆河流域37mm。
从表面上看,内陆河流域的人均、亩均水资源量并不算少,但由于水资源与人口、耕地的地区分布极不均衡,有相当大一部分分布在地势高寒、自然条件较差的人烟稀少地区及无人区,而自然条件较好、人口稠密、经济发达的绿洲地区水资源量十分有限。
黄河流域河川径流具有地区分布不均、年际变化大及连续枯水等特点,内陆河流域的水资源主要以冰雪融水补给为主,年内分配高度集中,汛期径流量可占全年径流量的80%,部分河流汛期陡涨,枯季断流,开发利用的难度较大。
2.水资源与生态环境存在的主要问题2.1存在的主要问题由于自然条件的改变和人类活动的影响,西北地区的自然生态环境发生了重大变化,从而导致水资源与生态环境产生重大问题。
突出表现在以下几方面。
(1)水土流失严重,增加水资源的需求并降低水体质量新中国成立以来,黄土高原地区治理水土流失面积16万km2,由于边治理边破坏,水土流失面积有增无减,水土流失程度在加剧。
据水利部1990年遥感普查,黄土高原水土流失面积由解决初期的43.3万km2扩大到45.4万km2,其中侵蚀模数大于500 t/ km2的强度以上侵蚀面积由解放初期的15.6万km2扩大到19.2万km2,增加了22%。
严重的水土流失降低了土壤肥力,加剧了干旱发展,增加水资源的需求。
同时,大量泥沙进入河道,淤塞河道湖库;其携带的大量氮、磷、钾肥进入水体,加剧了湖库的富营养化;大量泥沙进入水体,还对水质造成不良影响,增加了工业、生活取用时的困难,提高了水处理成本。
(2)河道断流,导致河流下游区水环境条件恶化随着河流上中游水资源开发利用量的增加,西北地区大部分中小河流的中下游已成为季节河,仅在洪水期作为行洪河道,一些内陆河的过水河长逐渐缩短,中下游流量减少。
由此导致这些河流的中下游地区出现了一系列环境问题,例如绿洲消失、沙化增加、湖泊萎缩等,从而使这些地区水资源条件恶化,给这些地区的社会经济发展造成了严重制约。
(3)内陆河流域湖泊严重萎缩、矿化度升高,水资源调蓄能力降低,利用困难西北内陆河地区的湖泊主要分布在新疆和青海两省,据统计,新疆湖泊总面积5505 km2,共计139个,其中面积大于100 km2的湖泊有11个,共计面积4814 km2,占湖泊总面积的87%。
青海省湖泊总面积12335 km2,其中位于西北内陆河区的湖泊面积占80%以上,仅柴达木盆地内部就有大小湖泊93个。
青海湖西北内陆河地区的多数湖泊都是或曾经是河流的尾闾或盆地最低洼的部位,进入这类湖泊的径流,除蒸发以外,再无其他出路。
因此,绝大多数内陆河湖泊,都演化成矿化度较高的咸水或矿化度很高的盐湖。
例如新疆的139个湖泊中只有3个淡水湖。
其中博斯腾湖是西北内陆河地区最大的吞吐型淡水湖。
还有一些湖泊,由于农业灌溉加速了湖泊的干涸与萎缩,例如新疆的罗布泊、台特马湖、艾比湖、乌伦古湖、玛纳斯湖、博斯腾湖,青海的哈拉湖,内蒙古额旗的居延海等。
其中新疆的博斯腾湖通过加强管理,又逐渐恢复了水位,降低了湖水矿化度。
内陆河地区湖泊萎缩和咸化,减少了水资源储量,降低水资源调节能力,增加了水资源开发利用的困难。
(4)湖库淤积严重,减弱水利工程对水资源的调配能力由于西北地区水土流失严重,导致湖库大量淤积。
据统计,1950~1998年,黄河上中游支流水库淤积泥沙143亿t,相当于淤积库容1亿m3的大型水库100多座。
大量泥沙进入湖库,占据一定库容,降低了已建工程对水资源的调蓄能力,甚至导致水库报废,减小了人类对水资源在年内年际间的调配能力,不利于水资源的合理有效利用。
(5)森林、草场消失退化,土地沙化严重,水资源涵养能力降低西北地区有较多的森林和大量草场,是我国主要牧业基地。
由于人类活动的影响,特别是20世纪中叶以来,随着人口的增长,自然资源开发规模失控和利用方式不当等负面效应的加剧,土地沙化,天然草场退化等恶化趋势明显。
其中在青海省,20世纪50年代至80年代,土地沙化以平均每年6.7万km2的速度扩展;长期重采轻造和过量樵采,不仅使青藏高原东部山地森林大幅度消减,出现大面积荒山,也使柴达木、青海湖周等地的植被履盖率剧减。
如柴达木盆地的沙生植被于1954~1982年间平均递减6.4%。
20世纪50年代末,青海湖畔、共和盆地的大规模毁草垦荒及接下来又大量弃耕撩荒等消极、破坏性经济行为也使青海、共和盆地更趋荒漠化。
仅横断山区干旱河谷范围已扩大至1万km2以上,谷地两坡森林下缘在最近60年间升高了200~400m,许多河川固体径流也相应剧增,如黄河龙羊峡至循化段的河水每年输沙量已达2480万t,年侵蚀模数为1600 t ·km-2(1993年)。
除以上种种人为消极因素外,天然草场较为普遍的鼠、虫危害,也是高原近期生态失调、环境退化中较活跃的因素。
森林和草原的存在,对拦蓄大气降水、调节水资源的时空分布具有重要意义,而森林和草原的退化以至消失,可大大降低下垫面对水资源的这种有益作用。
(6)农灌用水大量浪费,农区土壤发生严重的次生盐碱化,西北地区不合理的灌溉制度(如大水漫灌)不仅大量浪费宝贵的水资源,还导致农区土壤发生严重的次生盐碱化。
柴达木盆地的盐碱地以平均每年6667 km2的速度扩大;湟水流域西宁以东中、下游农区的盐碱地区占水浇地总面积的8.3%,青海全省盐碱化面积已达29.5万亩;内蒙古后套灌区由于灌溉面积的扩大和引黄水量的增加,造成土壤盐碱化并有发展趋势,解放初期占灌溉总面积的10%,1964年达31.4%,1973年便发展至57%,1978年中东部调查达73%,70年代后期至80年代中期加强了排水工程的建设,盐碱化加重的趋势才得以缓和。
土壤次生盐碱化的产生和发展,限制了农区经济的发展,降低了水资源的利用效益。
(7)水质污染严重西北地区水资源的缺乏,一方面表现在总量的缺乏,另一方面表现在与人类活动主要区域分布的不完全一致,因而在人类主要活动区域内的水环境容量非常有限。
随着人口的增加和人类活动的加剧,大量废污水排入水体,造成水质严重恶化。
在80年代以前,水质污染主要存在于大城市和工业区附近,例如黄河兰州河段、包头河段、疏勒河金昌河段、大黑河呼和浩特河段、湟水西宁河段等。
80年代后,水污染范围不断扩大,原有污染河段未能得到有效控制,不少清洁水体相继被污染。
目前,黄河主要支流渭河已受到严重污染,尤其是渭河陕西河段污染严重,有些河段甚至满足不了农业灌溉的要求。
湟水西宁以下河段严重污染,部分菜农反映,用河水浇过的地,青苗竞被致死。
黄河支流中流经大中小城市的河段绝大部分受到严重污染或重污染,许多季节河在枯水断流期间河道内积存大量废污水,环境恶劣,而一旦洪水来临,污染物随流而下,是形成洪峰污染的重要原因。
一些尚未断流的中小河流,由于一个或几个厂矿(尤其是造纸厂或化工厂)而被严重污染的现象随处可见。
黄河干流兰州、包头段水质无重大改善,其它河段水质却持续下降。
西北地区地下水质局部也受到污染。
污染区域主要在重大污染源附近和地表水受到严重污染区域,主要在城市近郊。
包头市区的1.29亿m3废污水在通过沟渠进入黄河前,每年有320万m3污水渗入地下,加上污染物堆放的影响,对城郊区地下水水质构成不同程度的污染,潜水优良率仅为428.5 km2,占总潜水分布面积的37.3%;呼和浩特市城区段近郊浅层地下水出现不同程度污染,个别地区有酚、氰、砷、六价铬等毒物检出,酚甚至有超标检出,深层水也出现点源性污染;1997年,新疆14个城市地下水中,有14.3%受到轻污染,35.7%受到中度污染,7.1%受到严重污染;黄河岸边兰州市的主要供水水源地马滩、迎门滩和崔家大滩?quot;三滩"地下水源地均已受到污染,主要污染物有酚、油、氰化物、铅、硝酸盐氮等,其检出率均超过50%;渭河咸阳段潜水中矿化度、硬度、NO-、SO2=、NH4-、NO2-、CL以及六价铬均已超标准检出。
(8)重要城市水源地存在严重问题西北地区大部分城市用水存在问题,水量缺乏和水质污染在各个城市表现不尽一致。
兰州市1964年后先后在黄河滩地建起"三滩"地下水源地,由于补给不足,"三滩"水源地每年超采地下水827万m3,而地下水的连年超采,致使地下水位大面积、大幅度下降。
据统计,在开采最不利的1988年,"三滩"水源地地下水位降落漏斗的总面积达71.45km2,其下降10 m以上的面积为7.8 km2,地下水最大累计下降幅度为15.93m,由于多种因素,水质也受到普遍污染。