当前位置:文档之家› 实验二 UCOS-II任务管理

实验二 UCOS-II任务管理

实验二 UCOS-II任务管理
实验二 UCOS-II任务管理

班级学号姓名同组人

实验日期室温大气压成绩

实验二 UCOS-II任务管理

一、实验目的

1、掌握UCOS-II中任务管理的函数的应用。

2、掌握UCOS-II在STM32平台下对硬件的控制。

3、掌握开发UCOS-II应用的程序结构。

二、实验步骤

1、UCOSII工作原理

UCOSII提供系统时钟节拍,实现任务切换和任务延时等功能。这个时钟节拍由

OS_TICKS_PER_SEC(在os_cfg.h中定义)设置,一般我们设置UCOSII的系统时钟节拍为1ms~100ms。本次实验利用STM32的SYSTICK定时器来提供UCOSII时钟节拍。

UCOSII的任何任务都是通过一个叫任务控制块(TCB)的东西来控制的,每个任务管理块有3个最重要的参数:(1)任务函数指针;(2)任务堆栈指针;(3)任务优先级。

在UCOSII中,使用CPU的时候,优先级高(数值小)的任务比优先级低的任务具有优先使用权,即任务就绪表中总是优先级最高的任务获得CPU使用权,只有高优先级的任务让出CPU使用权(比如延时)时,低优先级的任务才能获得CPU使用权。UCOSII不支持多个任务优先级相同,也就是每个任务的优先级必须不一样。任务的调度其实就是CPU 运行环境的切换,即:PC指针、SP指针和寄存器组等内容的存取过程

UCOSII的每个任务都是一个死循环。每个任务都处在以下5种状态之一的状态下,这5种状态是:睡眠状态、就绪状态、运行状态、等待状态(等待某一事件发生)和中断服务状态。

睡眠状态,任务在没有被配备任务控制块或被剥夺了任务控制块时的状态。

就绪状态,系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记,任务已经准备好了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行,这时任务的状态叫做就绪状态。

运行状态,该任务获得CPU使用权,并正在运行中,此时的任务状态叫做运行状态等待状态,正在运行的任务,需要等待一段时间或需要等待一个事件发生再运行时,该任务就会把CPU的使用权让给别的任务而使任务进入等待状态。

中断服务状态,一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程序,这时任务的状态叫做中断服务状态。

UCOSII任务的5个状态转换关系如图所示:

与任务相关的几个函数:

1)建立任务函数

UCOSII提供了我们2个建立任务的函数:OSTaskCreat和OSTaskCreatExt,我们一般用OSTaskCreat函数来创建任务,该函数原型为:

OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INTU prio) 该函数包括4个参数:

task:是指向任务代码的指针;

pdata:是任务开始执行时,传递给任务的参数的指针;

ptos:是分配给任务的堆栈的栈顶指针;

prio是分配给任务的优先级。

每个任务都有自己的堆栈,堆栈必须申明为OS_STK类型,并且由连续的内存空间组成。可以静态分配堆栈空间,也可以动态分配堆栈空间。OSTaskCreatExt也可以用来创

2)任务删除函数

任务删除,就是把任务置于睡眠状态,并不是把任务代码给删除了。UCOSII提供的任务删除函数原型为:INT8U OSTaskDel(INT8U prio)

其中参数prio就是我们要删除的任务的优先级。

故该函数是通过任务优先级来实现任务删除的。

3)请求任务删除函数

必须确保被删除任务的资源被释放的前提下才能将其删除,所以我们通过向被删除任务发送删除请求,来实现任务释放自身占用资源后再删除。UCOSII提供的请求删除任务函数原型为:INT8U OSTaskDelReq(INT8U prio)

同样还是通过优先级来确定被请求删除任务。

4)改变任务的优先级函数

UCOSII在建立任务时,会分配给任务一个优先级,但是这个优先级并不是一成不变的,而是可以通过调用UCOSII提供的函数修改。UCOSII提供的任务优先级修改函数原型为:INT8U OSTaskChangePrio(INT8U oldprio,INT8U newprio)。

5)任务挂起函数

任务挂起和任务删除有点类似,但是又有区别,任务挂起只是将被挂起任务的就绪标志删除,并做任务挂起记录,并没有将任务控制块任务控制块链表里面删除,也不需要释放其资源,而任务删除则必须先释放被删除任务的资源,并将被删除任务的任务控制块也给删了。被挂起的任务,在恢复(解挂)后可以继续运行。UCOSII提供的任务挂起函数原型为:INT8U OSTaskSuspend(INT8U prio)

6)任务恢复函数

有任务挂起函数,就有任务恢复函数,通过该函数将被挂起的任务恢复,让调度器能够重新调度该函数。UCOSII提供的任务恢复函数原型为:INT8U OSTaskResume(INT8U prio)

三、实验内容

在UCOSII里面创建3个任务:开始任务、LED0任务和LED1任务,开始任务用于创建其他(LED0和LED1)任务,之后挂起;LED0任务用于控制DS0 的亮灭,DS0每秒钟亮80ms;LED1任务用于控制DS1的亮灭,DS1亮300ms,灭300ms,依次循环。所要用到的硬件资源

1)指示灯DS0 、DS1 的硬件电路图如图

其中PWR是系统电源指示灯,为蓝色。LED0和LED1分别接在PB5和PE5上。为了方便大家判断,我们选择了DS0为红色的LED,DS1为绿色的LED。

2)软件参数设置

在os_cfg.h里面定义

OS_TICKS_PER_SEC=200,也就是设置UCOSII的时钟节拍为5ms。

OS_MAX_TASKS = 10,也就是最多10个任务(包括空闲任务和统计任务在内)。

前面提到,我们需要在sys.h里面设置SYSTEM_SUPPORT_UCOS为1,以支持UCOSII,通过这个设置,不仅可以实现利用delay_init来初始化SYSTICK,产生UCOSII的系统时钟节拍,还可以让delay_us和delay_ms函数在UCOSII下能够正常使用,这使得我们之前的代码可以十分方便的移植到UCOSII下。虽然UCOSII也提供了延时函数:OSTimeDly和OSTimeDLyHMSM,但是这两个函数的最少延时单位只能是1个UCOSII时钟节拍,在本次实验中,即5ms,显然不能实现us级的延时,而us级的延时在很多时候非常有用:比如IIC 模拟时序,DS18B20等单总线器件操作等。而通过delay_us和delay_ms,则可以方便的提供us和ms的延时服务,这比UCOSII本身提供的延时函数更好用。在设置

SYSTEM_SUPPORT_UCOS为1之后,UCOSII的时钟节拍由SYSTICK的中断服务函数提

供,该部分代码如下:

systick中断服务函数,使用ucos时用到

void SysTick_Handler(void)

{

OSIntEnter();//进入中断

OSTimeTick(); //调用ucos的时钟服务程序

OSIntExit(); //触发任务切换软中断

}

以上代码,其中OSIntEnter是进入中断服务函数,用来记录中断嵌套层数(OSIntNesting增加1);OSTimeTick是系统时钟节拍服务函数,在每个时钟节拍了解每个任务的延时状态,使已经到达延时时限的非挂起任务进入就绪状态;OSIntExit是退出中断服务函数,该函数可能触发一次任务切换(当OSIntNesting==0&&调度器未上锁&&就绪表最高优先级任务!=被中断的任务优先级时),否则继续返回原来的任务执行代码(如果OSIntNesting 不为0,则减1)。

事实上,任何中断服务函数,都应该加上OSIntEnter和OSIntExit函数,这是因为UCOSII是一个可剥夺型的内核,中断服务子程序运行之后,系统会根据情况进行一次任务调度去运行优先级别最高的就绪任务,而并不一定接着运行被中断的任务!

最后,打开test.c,输入如下代码:

#include "sys.h"

#include "usart.h"

#include "delay.h"

#include "led.h"

#include "includes.h"

///////////////////////////////////////UCOSII任务设//////////////////////////////////////////////// //START 任务

//设置任务优先级

#define START_TASK_PRIO 10 //开始任务的优先级设置为最低

//设置任务堆栈大小

#define START_STK_SIZE 64

//任务堆栈

OS_STK START_TASK_STK[START_STK_SIZE];

//任务函数

void start_task(void *pdata);

//LED0任务

//设置任务优先级

#define LED0_TASK_PRIO 7

//设置任务堆栈大小

#define LED0_STK_SIZE 64

//任务堆栈

OS_STK LED0_TASK_STK[LED0_STK_SIZE];

//任务函数

void led0_task(void *pdata);

//LED1任务

//设置任务优先级

#define LED1_TASK_PRIO 6

//设置任务堆栈大小

#define LED1_STK_SIZE 64

//任务堆栈

OS_STK LED1_TASK_STK[LED1_STK_SIZE];

//任务函数

void led1_task(void *pdata);

int main(void)

{

Stm32_Clock_Init(9); //系统时钟设置

delay_init(72); //延时初始化

LED_Init();

LED_Init(); //初始化与LED连接的硬件接口

OSInit();

OSTaskCreate(start_task,

(void *)0,

(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],

START_TASK_PRIO );//创建起始任务

OSStart();

}

//开始任务

void start_task(void *pdata)

{

OS_CPU_SR cpu_sr=0;

pdata = pdata;

OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断) OSTaskCreate(led0_task,

(void *)0,

(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],

LED0_TASK_PRIO);

OSTaskCreate(led1_task,

(void *)0,

(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],

LED1_TASK_PRIO);

OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.

OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)

}

//LED0任务

void led0_task(void *pdata)

{

while(1)

{

LED0=0;

delay_ms(80);

LED0=1;

delay_ms(920);

};

}

//LED1任务

void led1_task(void *pdata)

{

while(1)

{

LED1=0;

delay_ms(300);

LED1=1;

delay_ms(300);

};

}

该部分代码我们创建了3个任务:start_task、led0_task和led1_task,优先级分别是10、7和6,堆栈大小都是64(注意OS_STK为32位数据)。我们在main函数只创建了start_task一个任务,然后在start_task再创建另外两个任务,在创建之后将自身(start_task)挂起。这里,我们单独创建start_task,是为了提供一个单一任务,实现应用程序开始运行之前的准备工作。

在应用程序中经常有一些代码段必须不受任何干扰地连续运行,这样的代码段叫做临界段。因此,为了使临界段在运行时不受中断所打断,在临界段代码前必须用关中断指令使CPU屏蔽中断请求,而在临界段代码后必须用开中断指令解除屏蔽使得CPU可以响

应中断请求。UCOSII提供OS_ENTER_CRITICAL和OS_EXIT_CRITICAL两个宏来实现,这两个宏需要在移植UCOSII的时候实现,采用OS_CRITICAL_METHOD为3来实现这两个宏。因为临界段代码不能被中断,将严重影响系统的实时性,所以临界段代码越短越好!

在start_task任务中,我们在创建led0_task和led1_task的时候,不希望中断打断,故使用了临界区。其他两个任务,就十分简单了,我们就不细说了,注意我们这里使用的延时函数还是delay_ms,而不是直接使用的OSTimeDly。另外,一个任务里面一般是必须有延时函数的,以释放CPU使用权,否则可能导致低优先级的任务因高优先级的任务不释放CPU使用权而一直无法得到CPU使用权,从而无法运行。

三、实验结果

在代码编译成功之后,我们通过下载代码到战舰STM32开发板上,可以看到DS0一秒钟闪一次,而DS1则以固定的频率闪烁,说明两个任务(led0_task和led1_task)都已经正常运行了,符合我们预期的设计。

操作系统实验二Windows任务管理器的进程管理

实验二 Windows任务管理器的进程管理 一实验目的 1)在Windows 任务管理器中对程序进程进行响应的管理操作; 2)熟悉操作系统进程管理的概念; 3)学习观察操作系统运行的动态性能。 二实验环境 需要准备一台运行Windows XP操作系统的计算机。 三背景知识 Windows XP的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。使用任务管理器,可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。也可以使用多个参数评估正在运行的进程的活动,以及查看CPU 和内存使用情况的图形和数据。 四实验内容与步骤 启动并进入Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。 当前机器中由你打开,正在运行的应用程序有: 1) 实验二Windows 任务管理器的进程管理 2) 管理工具 3) 可移动磁盘(I:) Windows“任务管理器”的窗口由 5 个选项卡组成,分别是: 1) 应用程序 2) 进程 3) 性能 4)联网 5)用户 当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察) : 1) 映像名称 2) 用户名 3) CPU 4)内存使用 1. 使用任务管理器终止进程 步骤1:单击“进程”选项卡,一共显示了33 个进程。请试着区分一下,其中:系统(SYSTEM) 进程有19 个,填入表2-1中。 表2-1 实验记录

映像名称用户名作用内存使用 Svchost.exe SYSYEM Windows服务主进程 4416K Service.exe SYSYEM 服务和控制应用程序 3272K Sqlserver.exe SYSYEM SQL 基础服务9580K LMS.exe SYSYEM Local Manageability service 2912K MDM.exe SYSYEM 进行应用软件进行排错 3424K Inetinfo.exe SYSYEM 支持微软Windows IIS网络 服务的排错 9780K Spoolsv.exe SYSYEM 管理所有本地和网络打印 队列及控制所有打印工作 5612K ati2evxx.exe SYSYEM 管理ATI Hotkey特性 4024K Svchost.exe SYSYEM Windows 服务主进程 24912K Svchost.exe SYSYEM Windows 服务主进程 5084K Service.exe SYSYEM 服务和控制应用程序 3476K Lsass.exe SYSYEM Local Security Authority Process 1736K Services.exe SYSYEM 服务和控制应用程序 5904K Winlogon.exe SYSYEM Windows 登陆应用程序1820K Csrss.exe SYSYEM Client Server Runtime Process 9492K Lsm.exe SYSYEM 本地会话管理器服务1156K Smss.exe SYSYEM Windows会话管理器408K System SYSYEM NT Kernel&System 2196K System Idle Process SYSYEM 处理空闲时间百分比 16K 服务(SERVICE) 进程有_ 4___个,填入表2-2中。 表2-2 实验记录 映像名称用户名作用内存使用 Svchost.exe LOCAL SERVICE Windows 服务主进程 4212K alg.exe LOCAL SERVICE 处理微软Windows网络连 接共享和网络连接防火墙 3808K Svchost.exe NETWOR KSERVICE Windows 服务主进程 3848K Svchost.exe NETWOR KSERVICE Windows 服务主进程 4660K 用户进程有__9____个,填入表2-3中。

进程管理实验报告

实验2过程管理实验报告学生号姓名班级电气工程系过程、过程控制块等基本原理过程的含义:过程是程序运行过程中对数据集的处理,以及由独立单元对系统资源的分配和调度。在不同的数据集上运行程序,甚至在同一数据集上运行多个程序,是一个不同的过程。(2)程序状态:一般来说,一个程序必须有三种基本状态:就绪、执行和阻塞。然而,在许多系统中,过程的状态变化可以更好地描述,并且增加了两种状态:新状态和终端状态。1)就绪状态,当一个进程被分配了除处理器(CPU)以外的所有必要资源时,只要获得了处理器,进程就可以立即执行。此时,进程状态称为就绪状态。在系统中,多个进程可以同时处于就绪状态。通常,这些就绪进程被安排在一个或多个队列中,这些队列称为就绪队列。2)一旦处于就绪状态的进程得到处理器,它就可以运行了。进程的状态称为执行状态。在单处理器系统中,只有一个进程在执行。在多处理器系统中,可能有多个进程在执行中。3)阻塞状态由于某些事件(如请求输入和输出、额外空间等),执行进程被挂起。这称为阻塞状态,也称为等待状态。通常,处于阻塞状态的进程被调度为-?这个队列称为阻塞队列。4)新状态当一个新进程刚刚建立并且还没有放入就绪队列中时,它被称为新状态。5)终止状态是

什么时候-?进程已正常或异常终止,操作系统已将其从系统队列中删除,但尚未取消。这就是所谓的终结状态。(3)过程控制块是过程实体的重要组成部分,是操作系统中最重要的记录数据。控制块PCB记录操作系统描述过程和控制过程操作所需的所有信息。通过PCB,一个不能独立运行的程序可以成为一个可以独立运行的基本单元,并且可以同时执行一个进程。换句话说,在进程的整个生命周期中,操作系统通过进程PCB管理和控制并发进程。过程控制块是系统用于过程控制的数据结构。系统根据进程的PCB来检测进程是否存在。因此,进程控制块是进程存在的唯一标志。当系统创建一个进程时,它需要为它创建一个PCB;当进程结束时,系统回收其PCB,进程结束。过程控制块的内容过程控制块主要包括以下四个方面的信息。过程标识信息过程标识用于对过程进行标识,通常有外部标识和内部标识。外部标识符由流程的创建者命名。通常是一串字母和数字。当用户访问进程时使用。外部标识符很容易记住。内部标识符是为了方便系统而设置的。操作系统为每个进程分配一个唯一的整数作为内部标识符。通常是进程的序列号。描述性信息(process scheduling message)描述性信息是与流程调度相关的一些有关流程状态的信息,包括以下几个方面。流程状态:表

实验一 进程管理

实验一进程管理 【实验目的】 1)加深对进程概念及进程管理各部分内容的理解。 2)熟悉进程管理中主要数据结构的设计和进程调度算法、进程控制机构、同步机构、通讯机构的实施。 【实验要求】 调试并运行一个允许n 个进程并发运行的进程管理模拟系统。了解该系统的进程控制、同步及通讯机构,每个进程如何用一个PCB 表示、其内容的设置;各进程间的同步关系;系统在运行过程中显示各进程的状态和有关参数变化情况的意义。 【实验环境】 具备Windows或MS-DOS操作系统、带有Turbo C 集成环境的PC机。 【实验重点及难点】 重点:理解进程的概念,进程管理中主要数据结构的设计和进程调度算法、进程控制机构、同步机构、通讯机构的实施。 难点:实验程序的问题描述、实现算法、数据结构。 【实验内容】 一.阅读实验程序 程序代码见【实验例程】。 二.编译实验例程 用Turbo C 编译实验例程。 三.运行程序并对照实验源程序阅读理解实验输出结果的意义。 【实验例程】 #include #define TRUE 1 #define FALSE 0 #define MAXPRI 100 #define NIL -1 struct { int id; char status; int nextwr; int priority; } pcb [3]; struct { int value; int firstwr; } sem[2]; char savearea[3][4],addr; int i,s1,s2,seed, exe=NIL;

init() { int j; for (j=0;j<3;j++) { pcb[j].id=j; pcb[j].status='r'; pcb[j].nextwr=NIL; printf("\n process%d priority?",j+1); scanf("%d",&i); pcb[j].priority=i; } sem[0].value=1; sem[0].firstwr=NIL; sem[1].value=1; sem[1].firstwr=NIL; for(i=1;i<3;i++) for(j=0;j<4;j++) savearea[i] [j]='0'; } float random() { int m; if (seed<0) m=-seed; else m=seed; seed=(25173*seed+13849)%65536; return(m/32767.0); } timeint(ad) char ad; { float x; x=random(); if((x<0.33)&&(exe==0))return(FALSE); if((x<0.66)&&(exe==1))return(FALSE); if((x<1.0)&&(exe==2))return(FALSE); savearea[exe][0]=i; savearea[exe][1]=ad; pcb[exe].status='t'; printf("times silce interrupt'\n process%d enter into ready.\n",exe+1); exe=NIL; return(TRUE); } scheduler()

实验二进程管理

实验二进程管理 (一)实验目的或实验原理 1.加深对进程概念的理解,明确进程和程序的区别。 2.进一步认识并发执行的实质。 3.分析进程竞争资源现象,学习解决进程互斥的方法。 4.了解Linux系统中进程通信的基本原理。 (二)实验内容 1.进程的创建。 2.进程的控制。 3.①编写一段程序,使其现实进程的软中断通信。 要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child Processll is Killed by Parent! Child Processl2 is Killed by Parent! 父进程等待两个子进程终止后,输出如下的信息后终止 Parent Process is Killed! ②在上面的程序中增加语句signal (SIGNAL, SIG-IGN) 和signal (SIGQUIT, SIG-IGN), 观察执行结果,并分析原因。 4.进程的管道通信。 编制一段程序,实现进程的管理通信。 使用系统调用pipe()建立一条管道线;两个子进程P1和P2分别向管道中写一句话: Child 1 is sending a message! Child 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。 要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。 实验2 指导 [实验内容] 1.进程的创建 〈任务〉 编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 〈程序〉 #include<> main() { int p1,p2; if(p1=fork()) /*子进程创建成功*/ p utchar('b'); else { if(p2=fork()) /*子进程创建成功*/

实验二 UCOS-II任务管理

班级学号姓名同组人 实验日期室温大气压成绩 实验二 UCOS-II任务管理 一、实验目的 1、掌握UCOS-II中任务管理的函数的应用。 2、掌握UCOS-II在STM32平台下对硬件的控制。 3、掌握开发UCOS-II应用的程序结构。 二、实验步骤 1、UCOSII工作原理 UCOSII提供系统时钟节拍,实现任务切换和任务延时等功能。这个时钟节拍由 OS_TICKS_PER_SEC(在os_cfg.h中定义)设置,一般我们设置UCOSII的系统时钟节拍为1ms~100ms。本次实验利用STM32的SYSTICK定时器来提供UCOSII时钟节拍。 UCOSII的任何任务都是通过一个叫任务控制块(TCB)的东西来控制的,每个任务管理块有3个最重要的参数:(1)任务函数指针;(2)任务堆栈指针;(3)任务优先级。 在UCOSII中,使用CPU的时候,优先级高(数值小)的任务比优先级低的任务具有优先使用权,即任务就绪表中总是优先级最高的任务获得CPU使用权,只有高优先级的任务让出CPU使用权(比如延时)时,低优先级的任务才能获得CPU使用权。UCOSII不支持多个任务优先级相同,也就是每个任务的优先级必须不一样。任务的调度其实就是CPU 运行环境的切换,即:PC指针、SP指针和寄存器组等内容的存取过程 UCOSII的每个任务都是一个死循环。每个任务都处在以下5种状态之一的状态下,这5种状态是:睡眠状态、就绪状态、运行状态、等待状态(等待某一事件发生)和中断服务状态。 睡眠状态,任务在没有被配备任务控制块或被剥夺了任务控制块时的状态。

就绪状态,系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记,任务已经准备好了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行,这时任务的状态叫做就绪状态。 运行状态,该任务获得CPU使用权,并正在运行中,此时的任务状态叫做运行状态等待状态,正在运行的任务,需要等待一段时间或需要等待一个事件发生再运行时,该任务就会把CPU的使用权让给别的任务而使任务进入等待状态。 中断服务状态,一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程序,这时任务的状态叫做中断服务状态。 UCOSII任务的5个状态转换关系如图所示: 与任务相关的几个函数: 1)建立任务函数 UCOSII提供了我们2个建立任务的函数:OSTaskCreat和OSTaskCreatExt,我们一般用OSTaskCreat函数来创建任务,该函数原型为: OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INTU prio) 该函数包括4个参数: task:是指向任务代码的指针; pdata:是任务开始执行时,传递给任务的参数的指针; ptos:是分配给任务的堆栈的栈顶指针; prio是分配给任务的优先级。 每个任务都有自己的堆栈,堆栈必须申明为OS_STK类型,并且由连续的内存空间组成。可以静态分配堆栈空间,也可以动态分配堆栈空间。OSTaskCreatExt也可以用来创

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

实验一 进程管理

实验一进程管理 1. 实验目的 ⑴加深对进程概念的理解,明确进程和程序的区别; ⑵进一步认识并发执行的实质; ⑶分析进程争用资源的现象,学习解决进程互斥的方法; ⑷了解Linux系统中进程通信的基本原理。 2. 实验准备 ⑴阅读Linux的sched.h源码文件,加深对进程管理的理解。 ⑵阅读Linux的fork.h源码文件,分析进程的创建过程。 3. 实验内容 ⑴进程的创建 编写一段程序,使用系统调用fork ( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 ⑵进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf ( )来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 ⑶软中断通信 编制一段程序实现进程的软中断通信。要求:使用系统调用fork ( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上发来的中断信号(既按Del键);当捕捉到中断信号后,父进程系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 在上面的程序中增加语句signal (SIGINT, SIG_IGN) 和signal (SIGQUIT, SIG_IGN),观察执行结果,并分析原因。 4. 实验指导

操作系统实验(一)

操作系统实验 年级2014 级专业 学号 姓名 指导教师 年月日

实验一 Windows任务管理器的使用 一、实验目的 通过在Windows 任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,学习观察操作系统运行的动态性能. 二、实验内容 启动并进入Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口. 1.分别查看每个选项卡的内容,了解相关参数的含义及其当前内容. 2.在“进程”选项卡上单击“查看”菜单,然后单击“选择列”命令.单击要增加显示为列标题的项目,然后单击“确定”.分别了解“进程”选项卡各列的含义及其当前内容. 3.为更改正在运行的程序的优先级,可在“进程”选项卡上右键单击您要更改的程序,指向“设置优先级”,然后单击所需的选项.更改进程的优先级可以使其运行更快或更慢(取决于是提升还是降低了优先级) ,但也可能对其他进程的性能有相反的影响. (查看进程管理器,说明按照名字序号前5个进程的主要用途和功能.) 4、修改windows服务选项,将windows的远程用户修改注册表的服务设置成禁止. :打开控制面板→管理工具→服务→找到"Remote Registry",双击,启动类型设置为禁用. 5、修改windows的磁盘管理并设定配额选项。设定配额的磁盘格式必须是NTFS,如果你的硬盘是FAT32格式;可通过以下命令:convert 盘符:/fs:ntfs 将某一磁盘分区转为NTFS。

6、修改windows启动选项,将其中的前三个自动启动的选项去掉. :开始→运行→输入msconfig,到启动页. 7、修改windows的虚拟内存交换空间. 8、修改windows使得windows启动时,显示操作系统列表时间为5秒,并写出启动文件的具体内容. :右键我的电脑→属性→高级→启动和故障恢复的设置→显示列表时间设为5,→点击编辑→列出具体内容,一般是: [boot loader] timeout=0 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect 9、查看windows本地安全策略,并修改为定期强制修改密码. 写出本地安全策略的审核的内容. :开始→运行→输入gpedit.msc →计算机设置→Windows设置→安全设置→账户策略→密码策略→密码最长存留期设置为需要的天数即可. 10、获得此计算机网卡的网络配置及mac地址. 开始→运行→输入cmd回车→输入ipconfig /all回车即是. 11、在D盘新建一个文件夹,以自己的拼音缩写命名,并利用命令将其映射为I盘,例如为aaa,命令:subst I: d:\aaa.即将c:\aaa映射为I盘. (注:I盘是虚拟盘,不是实际的硬盘)语法 subst [drive1:[drive2:}Path} subst drive1:/d 参数 drive1: 指定要为其指派路径的虚拟驱动器. drive2: 指定包含指定路径的物理驱动器(如果不是当前的驱动器). Path 指定要指派给虚拟驱动器的路径. /d 删除虚拟驱动器. /? 在命令提示符显示帮助. 注释 以下命令在subst 命令中使用的驱动器上无法工作(或不应使用): chkdsk Diskcomp Diskcopy

实验一进程管理实验

实验一linux进程的创建与控制 【实验目的】 1、加深对进程概念的理解,明确进程和程序的区别; 2、进一步认识并发执行的实质; 3、分析进程争用资源的现象,学习解决进程互斥的方法; 【实验环境】 编程环境:TC或者VC 操作系统软件:linux 【准备知识】 一.基本概念 1、进程的概念;进程与程序的区别。 2、并发执行的概念。 3、进程互斥的概念。 二.系统调用 系统调用是一种进入系统空间的办法。通常,在OS的核心中都设置了一组用于实现各 种系统功能的子程序,并将它们提供给程序员调用。程序员在需要OS提供某种服务的时候,便可以调用一条系统调用命令,去实现希望的功能,这就是系统调用。因此,系统调用就像 一个黑箱子一样,对用户屏蔽了操作系统的具体动作而只是控制程序的执行速度等。各个不同的操作系统有各自的系统调用,女口windows API,便是windows的系统调用,Linux的系 统调用与之不同的是Linux由于内核代码完全公开,所以可以细致的分析出其系统调用的机制。 三.相关函数。 1 fork()函数 fork()函数创建一个新进程。 其调用格式为:int fork(); 其中返回int取值意义如下: 正确返回:等于0 :创建子进程,从子进程返回的ID值; 大于0 :从父进程返回的子进程的进程ID值。

错误返回:等于一1创建失败。 2 wait()函数 wait()函数常用来控制父进程与子进程的同步。在父进程中调用wait()函数,则父进程被阻塞,进入等待队列,等待子进程结束。当子进程结束时,会产生一个终止状态字,系统会向父进程发出SIGCHLD言号。当接到信号后,父进程提取子进程的终 止状态字,从wait()函数返回继续执行原程序。 其调用格式为:#i nclude #i nclude / (pid_t) wait(i nt *statloc) ; 正确返回:大于0:子进程的进程ID值; / 等于0:其它。 错误返回:等于一1调用失败。 3 exit()函数 exit() 函数是进程结束最常调用的函数,在main()函数中调用return,最终也是调用exit()函数。这些都是进程的正常终止。在正常终止时,exit()函数返回进程 结束状态。 其调用格式为:#in elude <> void exit(i nt status) ; 其中status为进程结束状态。 4 kill()函数 \ kill()函数用于删除执行中的程序或者任务。 其调用格式为:kill(i nt PID,i nt IID) ; 其中:PID是要被杀死的进程号,IID为向将被杀死的进程发送的中断号。 关于Linux下的C语言编程 1 )编辑器可使用vi 2 )编译器使用gee 格式:gee optio n file name 例如:gee -o main 主要的option -o指定输出文件名(不指定则生成默认文件) 其它的参数见帮助(man gee)

操作系统实验二(进程管理)

操作系统进程管理实验 实验题目: (1)进程的创建编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。 (3)编制一段程序,使其实现进程的软中断通信。要求:使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按Del键);当捕捉到中断信号后,父进程调用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止:Parent process is killed! 在上面的程序中增加语句signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN),观察执行结果,并分析原因。 (4)进程的管道通信编制一段程序,实现进程的管道通信。使用系统调用pipe( )建立一条管道线;两个进程P1和P2分别向管道各写一句话:Child 1 is sending a message! Child 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。 实验源程序及报告: (1)、进程的创建 #include int main(int argc, char *argv[]) { int pid1,pid2; /*fork first child process*/ if ( ( pid1=fork() ) < 0 ) { printf( "ProcessCreate Failed!"); exit(-1); }

实验四 进程管理

实验四 实验名称:进程管理 实验目的: 熟悉shell的基本操作; 掌握查看系统中的进程; 掌握判断服务器健康状态; 掌握杀死进程; 掌握如何启动前、后台进程。 实验类型:验证 实验学时:2学时 实验仪器设备:PC机、Linux操作系统软件。 实验内容及步骤: 一、查看系统中所有进程 1.ps 是Linux中最基础的浏览系统中的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等。下述选项可以得到更多有用的消息。 如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程(daemon)。守护进程值得是系统长期运行的后台进程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数,当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其中TPGID一栏为-1就是守护进程。语法:ps [选项] 选项: -a:显示所有用户的进程清单。 -f:产生某个进程的一个完整信息清单。 -u:显示进程拥有者、进程启动时间等更详细的信息。

-x:显示不是由终端提供的进程信息。 -e: 显示所有进程,包括没有控制终端的进程 -r:只显示正在运行的进程。 -m:显示线程信息。 -w:宽行显示进程信息。 -l:用长格式显示进程信息。 -t:只显示由终端/dev/tty提交的进程。 最常用的两个: $ps aux #UNIX格式,选项前不用加“-”,a所有前台进程,x所有后台进程,u显示由哪个用户产生的进程 $ps –le #Linux标准格式,l更加详细,e所有进程 $ps –Al 运行该命令后,得到当前系统的进程信息,根据这些信息。 ●F:表示进程的标志; ●UID:表示进程拥有者的ID号; ●PPID:表示进程的父进程ID号,其中初始化程序init父进程ID号为0; ●PRI:时间片的长度; ●NI:进程的优先级; ●WCHAN:进程中处于睡眠状态的内核函数名称。 ps命令虽然简单,但是输出结果复杂,每一行代表一个进程。

实验1 Windows进程管理编程

实验一Windows进程管理和进程编程 实验内容1.1 Windows 任务管理器的进程管理 1、背景知识简介 Windows的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位 使用任务管理器 ?可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序 ?也可以使用多个参数评估正在运行的进程的活动,以及查看CPU 和内存使用情况的图形和数据 任务管理器中 ?“应用程序”选项卡:显示正在运行程序的状态,用户能够结束、切换或者启动程序?“进程”选项卡:显示正在运行的进程信息。例如,可以显示关于CPU 和内存使用情况、页面错误、句柄计数以及许多其他参数的信息 ?“性能”选项卡:显示计算机动态性能,包括CPU 和内存使用情况的图表,正在运行的句柄、线程和进程的总数,物理、核心和认可的内存总数(KB) 等 2、实验目的和要求 通过在Windows 任务管理器中对程序进程进行响应的管理操作 熟悉操作系统进程管理的概念 学习观察操作系统运行的动态性能 3、实验环境 需要准备一台运行Windows XP Professional操作系统的计算机 4、实验内容与步骤 1.启动任务管理器。按Alt+Ctrl+Delete,或右键单击任务栏,选择任务管理器。

在Windows XP的任务管理器中,“进程”选项卡增加了一个“用户名”栏目,其中区分了SYSTEM、NETWORK SERVICE、LOCAL SERVICE和用户的不同进程类别。 2.使用任务管理器终止进程。选择进程名,点击右下角的“结束进程”。终止进程时要小 心,有可能导致不希望发生的结果,包括数据丢失和系统不稳定等。点击进程,右键选择“终止进程树”,会结束该进程以及它直接或间接创建的所有子进程。

实验二 进程管理

实验二进程管理 实验目的 通过进程的创建、撤销和运行加深对进程概念和进程并发执行的理解,明确进程与程序的区别。 实验内容 1、了解系统调用fork()、exec()、exit()和waitpid()的功能和实现过程。 2、编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 3、编写一段程序,使用系统调用fork()来创建一个子进程,子进程通过系统调用exec()更换自己的执行代码,显示新的代码“new program.”后,调用exit()结束。而父进程则调用waitpid()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。

实验指导 一、所涉及的系统调用 1、getpid 在2.4.4版内核中,getpid是第20号系统调用,其在Linux函数库中的原型是: getpid的作用很简单,就是返回当前进程的进程ID,请大家看以下的例子: 这个程序的定义里并没有包含头文件sys/types.h,这是因为我们在程序中没有用到pid_t类型,pid_t类型即为进程ID的类型。事实上,在i386架构上(就是我们一般

PC计算机的架构),pid_t类型是和int类型完全兼容的,我们可以用处理整形数的方法去处理pid_t类型的数据,比如,用"%d"把它打印出来。 编译并运行程序getpid_test.c: 再运行一遍: 正如我们所见,尽管是同一个应用程序,每一次运行的时候,所分配的进程标识符都不相同。 2、fork 在2.4.4版内核中,fork是第2号系统调用,其在Linux函数库中的原型是:

操作系统实验实验1进程描述及控制

信息学院 操作系统实验报告 姓名:杨博敏 学号:1305290206 专业:软件工程 班级:软件1302班 实验名称:进程控制与描述

实验一进程控制与描述 3.1 Windows“任务管理器”的进程管理 3.1.1 Windows XP的任务管理器 Windows XP的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。使用任务管理器,可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。也可以使用多个参数评估正在运行的进程的活动,以及查看CPU 和内存使用情况的图形和数据。其中: 1) “应用程序”选项卡显示正在运行程序的状态,用户能够结束、切换或者启动程序。 2) “进程”选项卡显示正在运行的进程信息。例如,可以显示关于CPU 和内存使用情况、页面错误、句柄计数以及许多其他参数的信息。 3) “性能”选项卡显示计算机动态性能,包括CPU 和内存使用情况的图表,正在运行的句柄、线程和进程的总数,物理、核心和认可的内存总数(KB) 等。 3.1.2 练习与实验 在本节“练习与实验”中,通过在Windows任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,学习观察操作系统运行的动态性能。 1. 工具/准备工作 在开始本实验之前,请回顾教科书的相关内容。 需要准备一台运行Windows XP Professional操作系统的计算机。

2. 实验内容与步骤 启动并进入Windows环境,单击Ctrl+Alt+Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。 在本次实验中,你使用的操作系统版本是: _____windowsXP_______________________________________________ 当前机器中由你打开,正在运行的应用程序有: 1)Microsoft_Word Windows“任务管理器”的窗口由4个选项卡组成,分别是: 1)应用程序 2) 进程 3) 性能 4)用户 当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察) : 1) 映像名称 2) 用户名 3) CPU 4)内存使用 (1) 使用任务管理器终止进程 步骤1:单击“进程”选项卡,一共显示了__48个进程。请试着区分一下,其中: 系统(SYSTEM) 进程有___23___个,填入表3.1中。 表3.1 实验记录 注:在Windows 2000中,“用户名”需要自己判断。这一点,在Windows XP中有了改进。 服务(SERVICE) 进程有_5_个,填入表3.2中。

实验项目二进程管理

实验项目二进程管理 一、实验目的 1.理解进程的概念,掌握父、子进程创建的方法。 2.认识和了解并发执行的实质,掌握进程的并发及同步操作。 二、实验内容 1.编写一C语言程序,实现在程序运行时通过系统调用fork( ) 创建两个子进程,使父、子三进程并发执行,父亲进程执行 时屏幕显示“I am father ,”儿子进程执行时屏幕显示“I am son ”,女儿进程执行时屏幕显示“ I am daughter。” 2.多次连续反复运行这个程序,观察屏幕显示结果的顺序,直 至出现不一样的情况为止。记下这种情况,试简单分析其原 因。 3.修改程序,在父、子进程中分别使用wait() 、exit()等系统调用 “实现”其同步推进,并获取子进程的ID 号及结束状态值。 多次反复运行改进后的程序,观察并记录运行结果。 三、源程序及运行结果 源程序 1: #include #include #include #include int main() { pid_t pid; char *a; int num; printf("starting:\n");

pid = fork(); if (pid == -1) { printf("failed"); exit(1); } else if (pid == 0) { a = "I am son"; } else { a = "I am father"; pid = fork(); if (pid == -1) { printf("failed"); exit(1); } else if (pid == 0) { a = "I am daughter"; } } for (num=3;num>0;num--) { puts(a); sleep(1); } exit(0); } 运行结果:

计算机基础实验任务一

指导老师:xxxx 地点:xxxx 日期:xxxx 题目:计算机基本操作 实验实训目的: 掌握Windows 基本操作。 掌握Windows 文件管理。 掌握Windows 系统设置。 掌握Windows 实用工具。 实验内容和步骤 一、写出对应的快捷键,并练习这些快捷键。 功能快捷键 复制 剪切 粘贴 全选 撤销 显示桌面 切换窗口 保存 关闭窗口 查找 连续区域的选择按什么键 不连续区域的选择按什么键 二、按要求完成操作 1.设置桌面背景图片,将窗口外观设置为绿色,记录下本机的分辨率,并设置屏幕保护为“三维管道”,等待时间为2分钟。 2. 鼠标设置 “开始”-“控制面板”-“鼠标”,学会鼠标主要次要按钮的设置。 3.任务栏操作 1)打开“任务栏和开始菜单属性”,打开方法为任务栏空白的右击,选择属性即可打开, 2)设置任务栏“快速启动”和“分类相似任务”。

3)设置开始为“经典开始菜单”模式。 4)不锁定任务栏,并将任务栏拖拉到屏幕的上方。 4.查看任务管理器 1)右击任务栏空白处,选择“任务管理器”。 2)按Ctrl +Alt +Del组合键。 5.输入法设置 将计算机的默认输入法设置为“搜狗拼音输入法”. 6.显示后缀名 选择任何一个窗口的“工具”-“文件夹选项”-“查看”- 这一项的勾去掉。 7.文件夹操作(在D盘完成) 1)在桌面创建一个文件夹,用“自己的学号后三位+班级+姓名”进行命名,其下新建六个文件夹,分别命名为A、B、C、D、E、F。 2)将C移动到B,B复制到A,在根文件夹建立一个B文件夹的快捷方式;删除D、F两个文件夹到回收站。 3)在本地所有硬盘中搜出4个后缀名为“.tmp”的文件,并且复制到A文件夹;在本地所有硬盘中查找第2个字符为a(不区分大小写)的.TXT文件,复制到B 中。 4)在E下面新建一个文本文档文件,命名为“E事本”,并把它设为隐藏文件;把E设置为隐藏文件夹。 5)打开回收站,还原F。 6)在本机上搜索两张 200K 以下的gif 图片,并把它复制到F。 7)观察资源管理器窗口的构成,并自定义工具栏:在标准按钮组上添加“属性”和“文件夹选项”两个按钮 8)查看D盘的磁盘空间占用情况 9)练习任务管理器的启动及对“结束任务”、“切换至”及“新任务…”三个按钮的操作 10)创建一个以自己名字命名的管理员帐户,并创建一个以AAA命名的受限帐户,练习多个帐户之间的切换 11)设置自己的个性桌面 12)练习磁盘碎片整理、磁盘清理及磁盘检查 13)创建一个写字板文档 14)利用画图工具做一张图片 15)创建一个记事本文档,在其中输入约50个字符的短文,并将其保存到“F” 文件夹中,将字体设置为黑体、倾斜,利用搜狗输入法输入文字:

相关主题
文本预览
相关文档 最新文档