2016西安交通大学操作系统实验报告

2016西安交通大学操作系统实验报告
2016西安交通大学操作系统实验报告

操作系统实验报告

实验一:用户接口实验

一.实验目的

1.理解面向操作命令的接口Shell。

2.学会简单的shell编码。

3.理解操作系统调用的运行机制。

4.掌握创建系统调用的方法。

操作系统给用户提供了命令接口和程序接口(系统调用)两种操作方式。用户接口实验也因此而分为两大部分。首先要熟悉Linux的基本操作命令,并在此基础上学会简单的shell编程方法。然后通过想Linux内核添加一个自己设计的系统调用,来理解系统调用的实现方法和运行机制。在本次实验中,最具有吸引力的地方是:通过内核编译,将一组源代码变成操作系统的内核,并由此重新引导系统,这对我们初步了解操作系统的生成过程极为有利。

二.实验内容

1)控制台命令接口实验

该实验是通过“几种操作系统的控制台命令”、“终端处理程序”、“命令解释程序”和“Linux操作系统的bash”来让实验者理解面向操作命令的接口shell 和进行简单的shell编程。

查看bash版本。

编写bash脚本,统计/my目录下c语言文件的个数

2)系统调用实验

该实验是通过实验者对“Linux操作系统的系统调用机制”的进一步了解来理解操作系统调用的运行机制;同时通过“自己创建一个系统调用mycall()”

和“编程调用自己创建的系统调用”进一步掌握创建和调用系统调用的方法。

编程调用一个系统调用fork(),观察结果。

编程调用创建的系统调用foo(),观察结果。

自己创建一个系统调用mycall(),实现功能:显示字符串到屏幕上。

编程调用自己创建的系统调用。

三.实验步骤

系统调用实验:

1.首先将Linux-3.0.tar.bz2拷贝到/usr/src目录下

——命令:cp linux-3.0.tar.bz2 /usr/src/

2.打开终端,获得root权限

——命令:sudo –s

3.进入/usr/src目录

——命令:cd /usr/src

4.解压linux源码

——命令:tar xvzf linux-3.0.tar.bz2

5.进入目录linux-3.0.5

——命令:cd linux-3.0

6.添加系统调用

——操作:gedit kernel/myservice.c 在文本编辑器中添加

#include

#include

asmlinkage void sys_mycall()

{

printk(KERN_INFO "Hello, world!\n");

return;

}

7.修改kernel/Makefile添加生成myservice.c添加到Makefile的编译规则中:

obj-y += myservice.o

8..修改arch/x86/include/asm/unistd_32.h,添加以下内容:

#define __NR_mycall SYS_ID

//SYS_ID表示新添加系统调用的调用号

并修改文件中的NR_syscalls,将其值增加1

9.修改arxh/x86/include/asm/syscalls.h添加以下内容:

asmlinkage void sys_mycall();

10.修改arch/x86/kernel/syscall_table_32.S,添加以下内容:

.long sys_mycall

11.配置内核(仅仅修改local versions即可)——命令:make menuconfig

12.编译内核——命令:make –j4 bzImage(开4个线程编译)

13.编译内核模块——命令:make –j4 modules

14.安装内核模块——命令:make modules_install

15.安装内核——命令:make install

16.重启系统,在系统选择页面选择进入自己编译的linux-3.0内核

17.在桌面建立测试的C程序test.c程序内容如下:

#include

int main(int argc, char *argv[])

{

syscall(SYS_ID); // SYS_ID表示新添加系统调用的调用号

return 0;

}

18.编译程序——gcc test.c –o a.out

19.运行程序——./a.out

20.查看内核日志(printk的输出信息在内核日志中):dmesg

四.实验结果

1.成功完成内核编译的任务,结果显示图如下:

2.下图为添加系统调用结果

五.实验小结

这次实验的内核编译需要进行一系列比较花时间的操作过程,但同时也锻炼了实际动手能力,在实践中对于操作系统这门课有了进一步的了解。同时,在本次实验中,学习了linux系统的使用方法,掌握了很多的基本命令,也明白了添加系统调用的方法,为以后的学习提供了很大的帮助。

实验四:一个简单文件系统的实现

一.实验目的

1.熟悉Ext文件系统的原理

2.根据Ext文件系统的数据结构和构建方法,自行实现一个简单的内存文

件系统

二.实验内容

1.设计并实现一个一级(单用户)文件系统程序

a.提供以下操作:

a)文件创建/删除接口命令create/delete

b)目录创建/删除接口命令mkdir/rmdir

c)显示目录内容命令ls

b.创建的文件不要求格式和内容

2.设计并实现一个二级文件系统程序

a.提供用户登录;

b.文件、目录要有权限

三.实验原理

1.Ext文件系统结构:

2.引导块BootBlock

每个硬盘分区的开头1024字节,即0 byte至1023 byte是分区的启动扇区。存放由ROM BIOS自动读入的引导程序和数据,但这只对引导设备有效,

而对于非引导设备,该引导块不含代码。这个块与ext2没有任何关系。

3.超级块SuperBlock

每个分区均有一个super block块,定义了文件系统的全局信息,包括块的大小,总块数,空闲块,索引结点数,各种位图和i节点表的地址和大小等信息。

4.数据块位图

这是ext2管理存储空间的方法。即位图法。每个位对应一个数据块,位值为0表示空闲,1表示已经分配。数据块位图定义为一个块大小。于是,一个组中的数据块个数就决定了。假设块大小为b 字节。可以区别的块数为b*8个

5.数据块DataBlocks

每个组的数据最大个数是在块大小定义后就确定了的。所以组容量也就确定了。假设块大小为b 字节。那么组容量就确定为(b*8)*b字节

若1块=4K,则组块大小=4K*8*4K=128M

6.inode位图

与数据块位图相似,用来表示索引结点是否已经被使用。假设块大小为b 字节,每个索引结点数据结构大小为128字节。最多可以有b*8个索引结点,索引结点表需要占用的存储空间大小为(b*8)*128字节。即(b*8)*128/b=8*128个块

7.inode表

索引结点表由若干个索引结点数据结构组成,需要占用若干个块。Ext2中的每个索引结点数据结构大小为128字节。每个索引结点即对应一个文件或是目录。是对其除文件名(目录名)以外的所有属性的描述。例如:文件类型,文件创建时间,访问时间,修改时间,文件所占数据块的个数,指向数据块的指针。其中,数据块指针是由15个元组的数据组成

四.实验步骤运行结果

1.根据要求编写源程序,实验源代码见附录1。

2. 运行程序,运行结果如图:

1.根据提示输入help,结果如图:

2.输入ls 列出根目录下的项目,然后创建文件目录c 再输入ls观察是否创

建成功:

5.进入文件目录c并在c中创建文件a

6.打开a,并读取a

7. 关闭a

8.删除a

9. 删除文件目录c

五.实验小结

本次实验要求建立一个文件系统,由于在专业课上的基本知识学习比较薄弱,所以参考了网上的一些代码,进行了一些修改后最后获得结果。最后,也算完成了一个简单的文件系统,具备了题目中的要求。但在以后的学习中,还要对这一方面的知识进行一些补充。

附录1:

实验源码:

#include

#include

#include

#include

#define DATA_BLOCK 263680 //数据块起始地址

#define BLOCK_SIZE 512 //块大小

#define DISK_START 0 //磁盘开始地址

#define BLOCK_BITMAP 512 //块位图起始地址

#define INODE_BITMAP 1024//inode 位图起始地址

#define INODE_TABLE 1536//索引节点表起始地址

#define INODE_SIZE 64 //struct inode的大小

struct group_desc{

char bg_volume_name[16]; //卷名

unsigned short bg_block_bitmap; //保存块位图的块号

unsigned short bg_inode_bitmap; //保存索引结点位图的块号

unsigned short bg_inode_table; //索引结点表的起始块号

unsigned short bg_free_blocks_count; //本组空闲块的个数

unsigned short bg_free_inodes_count; //本组空闲索引结点的个数

unsigned short bg_used_dirs_count; //本组目录的个数

char bg_pad[4]; //填充(0xff)

};

struct inode{

unsigned short i_mode; //文件类型及访问权限

unsigned short i_blocks; //文件的数据块个数

unsigned long i_size; //大小( 字节)

unsigned long i_atime; //访问时间

unsigned long i_ctime; //创建时间

unsigned long i_mtime; //修改时间

unsigned long i_dtime; //删除时间

unsigned short i_block[8]; //指向数据块的指针

char i_pad[24]; //填充(0xff)

};

struct dir_entry{ //目录项结构

unsigned short inode; //索引节点号

unsigned short rec_len; //目录项长度

unsigned short name_len; //文件名长度

char file_type; //文件类型(1: 普通文件,2: 目录.. )

char name[9]; //文件名

};

char Buffer[512]; //针对数据块的缓冲区

char tempbuf[4097]; //

unsigned char bitbuf[512]; //位图缓冲区

unsigned short index_buf[256];

short fopen_table[16]; // 文件打开表

unsigned short last_alloc_inode; // 最近分配的节点号unsigned short last_alloc_block; // 最近分配的数据块号unsigned short current_dir; // 当前目录的节点号struct group_desc super_block[1]; // 组描述符缓冲区struct inode inode_area[1]; // 节点缓冲区

struct dir_entry dir[32]; // 目录项缓冲区

char current_path[256]; // 当前路径名unsigned short current_dirlen;

FILE *fp;

void update_group_desc()

{

fseek(fp,DISK_START,SEEK_SET);

fwrite(super_block,BLOCK_SIZE,1,fp);

}

void reload_group_desc()//载入组描述符

{

fseek(fp,DISK_START,SEEK_SET);

fread(super_block,BLOCK_SIZE,1,fp);

}

void update_inode_bitmap()//更新inode位图

{

fseek(fp,INODE_BITMAP,SEEK_SET);

fwrite(bitbuf,BLOCK_SIZE,1,fp);

}

void reload_inode_bitmap()//载入inode位图

{

fseek(fp,INODE_BITMAP,SEEK_SET);

fread(bitbuf,BLOCK_SIZE,1,fp);

}

void update_block_bitmap()//更新block位图

{

fseek(fp,BLOCK_BITMAP,SEEK_SET);

fwrite(bitbuf,BLOCK_SIZE,1,fp);

}

void reload_block_bitmap()//载入block位图

{

fseek(fp,BLOCK_BITMAP,SEEK_SET);

fread(bitbuf,BLOCK_SIZE,1,fp);

}

void update_inode_entry(unsigned short i)//更新第i个inode入口{

fseek(fp,INODE_TABLE+(i-1)*INODE_SIZE,SEEK_SET);

fwrite(inode_area,INODE_SIZE,1,fp);

}

void reload_inode_entry(unsigned short i)//载入第i个inode入口{

fseek(fp,INODE_TABLE+(i-1)*INODE_SIZE,SEEK_SET);

fread(inode_area,INODE_SIZE,1,fp);

}

void reload_dir(unsigned short i)//更新第i个目录

{

fseek(fp,DATA_BLOCK+i*BLOCK_SIZE,SEEK_SET);

fread(dir,BLOCK_SIZE,1,fp);

}

void update_dir(unsigned short i)//载入第i个目录

{

fseek(fp,DATA_BLOCK+i*BLOCK_SIZE,SEEK_SET);

fwrite(dir,BLOCK_SIZE,1,fp);

}

void reload_block(unsigned short i)//载入第i个数据块

{

fseek(fp,DATA_BLOCK+i*BLOCK_SIZE,SEEK_SET);

fread(Buffer,BLOCK_SIZE,1,fp);

}

void update_block(unsigned short i)//更新第i个数据块

{

fseek(fp,DATA_BLOCK+i*BLOCK_SIZE,SEEK_SET);

fwrite(Buffer,BLOCK_SIZE,1,fp);

}

int alloc_block()//分配一个数据块,返回数据块号;

{

unsigned short cur=last_alloc_block;

unsigned char con=128;

int flag=0;

if(super_block[0].bg_free_blocks_count==0)

{

printf("There is no block to be alloced!\n");

return(0);

}

reload_block_bitmap();

cur=cur/8;

while(bitbuf[cur]==255)

{

if(cur==511)cur=0;

else cur++;

}

while(bitbuf[cur]&con)

{

con=con/2;

flag++;

}

bitbuf[cur]=bitbuf[cur]+con;

last_alloc_block=cur*8+flag;

update_block_bitmap();

super_block[0].bg_free_blocks_count--;

update_group_desc();

return last_alloc_block;

}

void remove_block(unsigned short del_num)//删除一个block {

unsigned short tmp;

tmp=del_num/8;

reload_block_bitmap();

switch(del_num%8)//更改block位图

{

case 0:bitbuf[tmp]=bitbuf[tmp]&127;break;

case 1:bitbuf[tmp]=bitbuf[tmp]&191;break;

case 2:bitbuf[tmp]=bitbuf[tmp]&223;break;

case 3:bitbuf[tmp]=bitbuf[tmp]&239;break;

case 4:bitbuf[tmp]=bitbuf[tmp]&247;break;

case 5:bitbuf[tmp]=bitbuf[tmp]&251;break;

case 6:bitbuf[tmp]=bitbuf[tmp]&253;break;

case 7:bitbuf[tmp]=bitbuf[tmp]&254;break;

}

update_block_bitmap();

super_block[0].bg_free_blocks_count++;

update_group_desc();

}

//

int get_inode()//分配一个inode,返回序号

{

unsigned short cur=last_alloc_inode;

unsigned char con=128;

int flag=0;

if(super_block[0].bg_free_inodes_count==0)

{

printf("There is no Inode to be alloced!\n");

return 0;

}

reload_inode_bitmap();

cur=(cur-1)/8;

while(bitbuf[cur]==255)

{

if(cur==511)cur=0;

else cur++;

}

while(bitbuf[cur]&con)

{

con=con/2;

flag++;

}

bitbuf[cur]=bitbuf[cur]+con;

last_alloc_inode=cur*8+flag+1;

update_inode_bitmap();

super_block[0].bg_free_inodes_count--;

update_group_desc();

return last_alloc_inode;

}

//

void remove_inode(unsigned short del_num)

{

unsigned short tmp;

tmp=(del_num-1)/8;

reload_inode_bitmap();

switch((del_num-1)%8)//更改block位图

{

case 0:bitbuf[tmp]=bitbuf[tmp]&127;break;

case 1:bitbuf[tmp]=bitbuf[tmp]&191;break;

case 2:bitbuf[tmp]=bitbuf[tmp]&223;break;

case 3:bitbuf[tmp]=bitbuf[tmp]&239;break;

case 4:bitbuf[tmp]=bitbuf[tmp]&247;break;

case 5:bitbuf[tmp]=bitbuf[tmp]&251;break;

case 6:bitbuf[tmp]=bitbuf[tmp]&253;break;

case 7:bitbuf[tmp]=bitbuf[tmp]&254;break;

}

update_inode_bitmap();

super_block[0].bg_free_inodes_count++;

update_group_desc();

}

// dir

void dir_prepare(unsigned short tmp,unsigned short len,int type) //新目录和文件初始化.and ..

{

reload_inode_entry(tmp);//得到新目录的节点入口地址

if(type==2)//目录

{

inode_area[0].i_size=32;

inode_area[0].i_blocks=1;

inode_area[0].i_block[0]=alloc_block();

dir[0].inode=tmp;

dir[1].inode=current_dir;

dir[0].name_len=len;

dir[1].name_len=current_dirlen;

dir[0].file_type=dir[1].file_type=2;

for(type=2;type<32;type++)

dir[type].inode=0;

strcpy(dir[0].name,".");

strcpy(dir[1].name,"..");

update_dir(inode_area[0].i_block[0]);

inode_area[0].i_mode=01006;//drwxrwxrwx:目录

}

else

{

inode_area[0].i_size=0;

inode_area[0].i_blocks=0;

inode_area[0].i_mode=0407;//drwxrwxrwx:文件

}

update_inode_entry(tmp);

}

//

unsigned short reserch_file(char tmp[9],int file_type,unsigned short *inode_num,unsigned short *block_num,unsigned short *dir_num)

{ //查找文件并改写缓冲区里节点号,所在目录节点的数据块号(0~7)、目录项所在号

unsigned short j,k;

reload_inode_entry(current_dir);

j=0;

while(j

{

reload_dir(inode_area[0].i_block[j]);

k=0;

while(k<32)

{

if(!dir[k].inode||dir[k].file_type!=file_type||strcmp(dir[k].name,tmp))k++;

else

{

*inode_num=dir[k].inode;

*block_num=j;

*dir_num=k;

return 1;

}

}

j++;

}

return 0;

}

//

void cd(char tmp[9])

{

unsigned short i,j,k,flag;

flag=reserch_file(tmp,2,&i,&j,&k);

if(flag)

{

current_dir=i;

if(!strcmp(tmp,"..")&&dir[k-1].name_len)

{

current_path[strlen(current_path)-dir[k-1].name_len-1]='\0';

current_dirlen=dir[k].name_len;

}

else if(!strcmp(tmp,"."));

else if(strcmp(tmp,".."))

{

current_dirlen=strlen(tmp);

strcat(current_path,tmp);

strcat(current_path,"/");

}

}

else printf("The directory %s not exists!\n",tmp);

}

//

void del(char tmp[9])

unsigned short i,j,k,m,n,flag;

m=0;

flag=reserch_file(tmp,1,&i,&j,&k);

if(flag)

{

flag=0;

while(fopen_table[flag]!=dir[k].inode&&flag<16)flag++;

if(flag<16)fopen_table[flag]=0;

reload_inode_entry(i);

while(m

inode_area[0].i_blocks=0;

inode_area[0].i_size=0;

remove_inode(i);

reload_inode_entry(current_dir);

dir[k].inode=0;

//if(k!=0)dir[k-1].rec_len+=dir[k].rec_len ;

update_dir(inode_area[0].i_block[j]);

inode_area[0].i_size-=16;

m=1;

while(m

{

flag=n=0;

reload_dir(inode_area[0].i_block[m]);

while(n<32)

{

if(!dir[n].inode)flag++;

n++;

}

if(flag==32)

{

remove_block(inode_area[i].i_block[m]);

inode_area[i].i_blocks--;

while(m

}

}

update_inode_entry(current_dir);

}

else printf("The file %s not exists!\n",tmp);

}

//

void mkdir(char tmp[9],int type)

unsigned short tmpno,i,j,k,flag;

reload_inode_entry(current_dir); //获得当前目录的索引节点给inode_area[0]

if(!reserch_file(tmp,type,&i,&j,&k)) //未找到同名文件

{

if(inode_area[0].i_size==4096) //目录项已满

{

printf("Directory has no room to be alloced!\n");

return;

}

flag=1;

if(inode_area[0].i_size!=inode_area[0].i_blocks*512)//目录中有某些个块中32个项未满

{

i=0;

while(flag&&i

{

reload_dir(inode_area[0].i_block[i]);

j=0;

while(j<32)

{

if(dir[j].inode==0)

{

flag=0;

break;

}

j++;

}

i++;

}

tmpno=dir[j].inode=get_inode();

dir[j].name_len=strlen(tmp);

dir[j].file_type=type;

strcpy(dir[j].name,tmp);

update_dir(inode_area[0].i_block[i-1]);

}

else//全满

{

inode_area[0].i_block[inode_area[0].i_blocks]=alloc_block();

inode_area[0].i_blocks++;

reload_dir(inode_area[0].i_block[inode_area[0].i_blocks-1]);

tmpno=dir[0].inode=get_inode();

dir[0].name_len=strlen(tmp);

dir[0].file_type=type;

strcpy(dir[0].name,tmp);

//初始化新块

for(flag=1;flag<32;flag++)dir[flag].inode=0;

update_dir(inode_area[0].i_block[inode_area[0].i_blocks-1]);

}

inode_area[0].i_size+=16;

update_inode_entry(current_dir);

dir_prepare(tmpno,strlen(tmp),type);

}

else //已经存在同名文件或目录

{

if(type==1)printf("File has already existed!\n");

else printf("Directory has already existed!\n");

}

}

//

void rmdir(char tmp[9])

{

unsigned short i,j,k,flag;

unsigned short m,n;

if(!strcmp(tmp,"..")||!strcmp(tmp,"."))

{

printf("The directory can not be deleted!\n");

return;

}

flag=reserch_file(tmp,2,&i,&j,&k);

if(flag)

{

reload_inode_entry(dir[k].inode); //找到要删除的目录的节点并载入

if(inode_area[0].i_size==32) //只有.and ..

{

inode_area[0].i_size=0;

inode_area[0].i_blocks=0;

//reload_dir(inode_area[0].i_block[0]);

//dir[0].inode=0;

//dir[1].inode=0;

remove_block(inode_area[0].i_block[0]);

reload_inode_entry(current_dir);//得到当前目录的节点并更改当前目录项

remove_inode(dir[k].inode);

dir[k].inode=0;

update_dir(inode_area[0].i_block[j]);

inode_area[0].i_size-=16;

flag=0;

m=1;

while(flag<32&&m

{

flag=n=0;

reload_dir(inode_area[0].i_block[m]);

while(n<32)

{

if(!dir[n].inode)flag++;

n++;

}

if(flag==32)

{

remove_block(inode_area[0].i_block[m]);

inode_area[0].i_blocks--;

while(m

}

}

update_inode_entry(current_dir);

}

else printf("Directory is not null!\n");

}

else printf("Directory to be deleted not exists!\n");

}

//

void ls()

{

int i,j,k,tmpno,no;

i=0;

printf("items type mode size\n");

reload_inode_entry(current_dir);

while(i

{

k=0;

reload_dir(inode_area[0].i_block[i]);

while(k<32)

{

if(dir[k].inode)

{

printf("%s",dir[k].name);

西安交通大学接口技术实验报告

西安交通大学 微型计算机接口技术实验报告 班级:物联网 姓名: 学号:

实验一基本I/O扩展实验 一、实验目的 1、了解 TTL 芯片扩展简单 I/O 口的方法,掌握数据输入输出程序编制的方法; 2、对利用单片机进行 I/O 操作有一个初步体会。 二、实验内容 74LS244 是一种三态输出的8 总线缓冲驱动器,无锁存功能,当G 为低电平时,Ai 信号传送到Yi,当为高电平时,Yi 处于禁止高阻状态。 74LS273 是一种8D 触发器,当CLR 为高电平且CLK 端电平正跳变时,D0——D7 端数据被锁存到8D 触发器中。 实验原理图: 三、实验说明 利用74LS244 作为输入口,读取开关状态,并将此状态通过74LS273 再驱动发光二极管显示出来,连续运行程序,发光二极管显示开关状态。

四、实验流程图 五、实验连线 1、244的cs连接到CPU地址A15,Y7—Y0连接开关K1-K8; 2、273的CS连接到CPU地址A14,Q7-Q0连接到发光二极管L1-L8; 3、该模块的WR,RD连接CPU的WR,RD,数据线AD7-AD0,地址线A7-A0分别与CPU的数据线AD7-AD0,地址线A7-A0相连接。

六、程序源代码(略) 七、实验结果 通过开关K01 到K08 可以对应依次控制LED 灯的L1 到L8 ,即当将开关Ki 上拨时,对应的Li 被点亮,Ki 下拨时,对应的Li熄灭。 此外,如果将开关拨到AAH 时,将会产生LED 灯左移花样显示;如果开关拨到55H 时,将会产生LED 灯右移花样显示。 七、实验心得 通过本次实验,我了解了TTL 芯片扩展简单I/O 口的方法,同时也对数据输入输出程序编制的方法有一定的了解与掌握,对利用单片机进行I/O 操作有一个初步体会,实验使我对自己在课堂上学的理论知识更加理解,同时也锻炼了我的动手操作能力。

操作系统原理知识知识点复习,梁光祥

目录 第一章操作系统概论 (2) 1.1操作系统概念 (2) 1.2操纵系统的主要功能 (2) 1.3操作系统的基本特征 (3) 1.4操作系统的逻辑结构和运行模型 (3) 1.5操作系统的形成与发展 (3) 1.6操作系统主要类型 (3) 第二章进程管理 (4) 2.1.进程概念 (4) (4) 2.2.进程控制 (5) 2.3.进程互斥与同步 (5) 2.4.进程通信 (5) 2.5.线程 (5) 第三章处理器调度与死锁 (6) 3.1.处理器调度 (6) 3.2.死锁 (7) 第四章存储管理 (8) 4.1.程序的链接和装入 (8) 4.2.分区式存储管理 (8) 4.3.分页式存储管理 (8) 4.4.分段式存储管理 (9) 4.5.段页式存储管理 (9) 4.6.虚拟存储管理 (10) 第五章设备管理 (11) 5.1.输入输出系统 (11) 5.2.输入输出控制方式 (11) 5.3.缓冲技术 (14) 5.4.分配策略: (14) 5.5.输入输出软件 (14) 5.6.虚拟设备 (14) 5.7.磁盘存储管理 (14) 第六章文件管理 (15) 6.1.概述 (15) 6.2文件数据的组织和存储 (15) 6.3.文件目录 (15) 6.4.文件储存空间管理 (16)

第一章操作系统概论1.1操作系统概念 1.配备操作系统的目的 1)方便人们使用计算机 2)有效管理计算机 2.操作系统的目标 1)有效地管理计算机的硬件和软件资源 2)提高系统效率 3)具有可扩充性 4)具有开放性 5)具有可靠性 6)具有可移植性 1.2操纵系统的主要功能 1.处理器管理功能 1)进程控制 2)进程同步 3)进程通信 4)调度 2.存储管理功能 1)内存的分配与回收 2)内存保护 3)地址映射 4)内存扩充 5)内存共享 3.设备管理功能 1)缓冲管理 2)设备分配与回收 3)设备驱动 4)实现设备独立性 5)实现虚拟设备 4.文件管理功能 1)文件的存储空间管理 2)目录管理 3)文件的读写管理 4)文件保护 5.网络功能 1)网络资源管理 2)网络通信管理

操作系统概论

操作系统的概念 计算机系统由硬件系统和软件系统两部分组成,软件系统又可以分为系统软件和应用软件,其中,操作系统是最重要的系统软件。 从用户角度来看,操作系统是用户和计算机硬件之间的桥梁,用户通过操作系统提供的命令和有关规范来操作和管理计算机。 普遍认为:操作系统是管理软硬件资源、控制程序执行、改善人机界面、合理组织计算机工作流程和为用户使用计算机提供良好运行环境的一种系统软件。 操作系统主要有四种特性:1)并发性2)共享性3)虚拟性4)异步性 果。 2.1.4 操作系统的基本功能 从资源管理的观点来看,操作系统具有以下几个主要功能:1. 处理机管理 2. 存储管理 3. 设备管理4. 文件管理 5. 网络与通信管理6. 用户接口 处理机管理 处理机管理主要有两项工作: 1)处理中断事件2)是处理器调度 2.1.5 操作系统的分类 早期,根据用户界面的使用环境和功能特征的不同,操作系统一般可分为三种基本类型: 1)批处理系统;2)分时系统;3)实时系统。 个人计算机操作系统 根据在同一时间使用计算机用户的多少,操作系统又可以分为单用户操作系统和多用户操作系统: 单用户操作系统是指一台计算机在同一时间只能有一个用户在使用,一个用户独自享用系统的全部硬件和软件资源,而如果在同一时间允许多个用户同时使用计算机,则称为多用户操作系统。 另外,如果用户在同一时间内可以运行多个应用程序(每个应用程序被称作一个任务),这样的操作系统称为多任务操作系统,如果用户在同一时间内只能运行一个应用程序,对应的操作系统称为单任务操作系统。 个人计算机操作系统 。 早期的DOS 操作系统是单用户单任务操作系统,Windows XP 则是单用户多任务操作系统。 分布式操作系统 大量的计算机通过网络联结在一起,可以获得极高的运算能力及广泛的数据共享,这种系统被称作分布式系统(Distributed System)。 ——DOS操作系统 DOS操作系统:DOS采用汇编语言书写,系统开销小,运行效率高。 Windows操作系统1995年8月,Microsoft公司推出了Windows 95,并放弃开发新的DOS 版本,Windows 95能够独立在硬件上运行,是真正的新型操作系统。以后Microsoft公司又相继推出了Windows 97、Windows 98、Windows 98 SE、Windows Me等后继版本。 ——Unix操作系统 Linux操作系统Linux属于自由软件,自由软件(Free Software or Freeware)是指遵循通用公共许可证GPL(General public License)规则,保证你有使用的自由、获得源程序的自由、自己修改的自由、复制和推广的自由,也可以有收费的自由的一种软件。 Mac OS操作系统Mac OS操作系统是美国Apple公司推出的操作系统,运行在Macintosh 计算机上。Mac OS是全图形化界面和操作方式的鼻祖。

操作系统实验报告_实验五

实验五:管道通信 实验内容: 1.阅读以下程序: #include #include #include main() { int filedes[2]; char buffer[80]; if(pipe(filedes)<0) //建立管道,filedes[0]为管道里的读取端,filedes[1]则为管道的写入端 //成功则返回零,否则返回-1,错误原因存于errno中 err_quit(“pipe error”); if(fork()>0){ char s[ ] = “hello!\n”; close(filedes[0]); //关闭filedes[0]文件 write(filedes[1],s,sizeof(s)); //s所指的内存写入到filedes[1]文件内 close(filedes[1]); //关闭filedes[0]文件 }else{ close(filedes[1]); read(filedes[0],buffer,80); //把filedes[0]文件传送80个字节到buffer缓冲区内 printf(“%s”,buffer); close(filedes[0]); } } 编译并运行程序,分析程序执行过程和结果,注释程序主要语句。

2.阅读以下程序: #include #include #include main() { char buffer[80]; int fd; unlink(FIFO); //删除FIFO文件 mkfifo(FIFO,0666); //FIFO是管道名,0666是权限 if(fork()>0){ char s[ ] = “hello!\n”;

西安交大数字图像处理第二次实验报告

数字图像处理第二次作业

摘要 本次报告主要记录第二次作业中的各项任务完成情况。本次作业以Matlab 2013为平台,结合matlab函数编程实现对lena.bmp,elain1.bmp图像文件的相关处理:1.分别得到了lena.bmp 512*512图像灰度级逐级递减8-1显示,2.计算得到lena.bmp图像的均值和方差,3.通过近邻、双线性和双三次插值法将lena.bmp zoom到2048*2048,4. 把lena和elain 图像分别进行水平shear(参数可设置为1.5,或者自行选择)和旋转30度,并采用用近邻、双线性和双三次插值法zoom到2048*2048。以上任务完成后均得到了预期的结果。 1.把lena 512*512图像灰度级逐级递减8-1显示 (1)实验原理: 给定的lena.bmp是一幅8位灰阶的图像,即有256个灰度色。则K位灰阶图像中某像素的灰度值k(x,y)(以阶色为基准)与原图同像素的灰度值v(x,y)(以256阶色为基准)的对应关系为: 式中floor函数为向下取整操作。取一确定k值,对原图进行上式运算即得降阶后的k位灰阶图像矩阵。 (2)实验方法 首先通过imread()函数读入lena.bmp得到图像的灰度矩阵I,上式对I矩阵进行灰度降阶运算,最后利用imshow()函数输出显示图像。对应源程序为img1.m。 (3)处理结果 8灰度级

7灰度级 6灰度级 5灰度级

4灰度级 3灰度级 2灰度级

1灰度级 (4)结果讨论: 由上图可以看出,在灰度级下降到5之前,肉眼几乎感觉不出降阶后图像发生的变化。但从灰度级4开始,肉眼明显能感觉到图像有稍许的不连续,在灰度缓变区常会出现一些几乎看不出来的非常细的山脊状结构。随着灰度阶数的继续下降,图像开始出现大片的伪轮廓,灰度级数越低,越不能将图像的细节刻画出来,最终的极端情况是退化为只有黑白两色的二值化图像。由此可以得出,图像采样的灰度阶数越高,灰度围越大,细节越丰富,肉眼看去更接近实际情况。 2.计算lena图像的均值方差 (1)实验原理 对分辨率为M*N的灰度图像,其均值和方差分别为: (2)实验方法 首先通过imread()函数读入图像文件到灰度矩阵I中,然后利用 mean2函数和std2函数计算灰度矩阵(即图像)的均值和标准差,再由标准差平方得到方差。对应源程序:img1.m (3)处理结果 均值me =99.0512,标准差st =52.8776,方差sf =2.7960e+03。 (4)结果分析 图像的均值可反应图像整体的明暗程度,而方差可以反应图像整体的对比度情况,方差越大,图像的对比度越大,可以显示的细节就越多。 3.把lena图像用近邻、双线性和双三次插值法zoom到2048*2048; (1)实验原理 图像插值就是利用已知邻近像素点的灰度值来产生未知像素点的灰度值,以便由原始图

操作系统概论复习大纲

操作系统概论自学考试大纲 第一章引论 (一)内容简介 本章介绍了学习操作系统必须先掌握的一些基础知识,包括以下几部分内容: 1.计算机系统 2.操作系统 3.操作系统的形成和操作系统的基本类型 4.操作系统的发展 5.处理器的工作状态 6.操作系统与用户的接口 (二)学习的目的与要求 了解操作系统在计算机系统中的作用;各类操作系统的特点;用户与操作系统的关系;处理器的工作状态和系统功能调用的作用。 重点是:操作系统在计算机系统中的作用;各类操作系统的特点;程序状态字的作用;系统功能调用。 (三)考核知识点与考核要求 根据本章内容的特点,和大纲要求掌握的重点,该章考核可以出以下题型:选择题,名词解释,问答题。 名词解释:操作系统、嵌入式操作系统、特权指令 问答题: 1. 计算机系统由哪些部分组成? 2. 从资源管理的观点看,操作系统有哪些功能? 3. 各类操作系统的特点? 4. 操作系统为什么要提供“系统功能调用”? 第二章处理器管理 (一)课程内容 本章介绍了操作系统中处理器管理部分的实现,包括以下几部分内容: 1.多道程序设计 2.进程的概念 3.进程控制块 4.进程队列 5.中断与中断处理 6.处理器调度 7.线程的概念 (二)学习目的与要求 通过本章学习应该掌握多道程序设计时如何提高计算机系统效率的;进程和程序有什么区别;进程的基本状态以及状态的变化;处理器调度策略;中断的作用。

重点是:多道程序设计,进程,处理器调度。 (三)考核知识点与考核要求 根据本章内容的特点,和大纲要求掌握的重点,该章考核可以出以下题型:选择题,名词解释,问答题,综合题。 名词解释:多道程序设计,进程,中断,线程 问答题: 1.进程有哪些基本状态,画出进程基本状态变化图。 2.进程控制块的作用和基本内容? 3.简述中断响应的过程。 4.设计调度算法的原则有哪些? 5.有哪些作业调度策略,其各自的特点是什么? 6.有哪些进程调度策略,其各自的特点是什么? 7.在分时系统中采用时间片轮转的调度策略有哪些优越性? 8.采用多线程技术有哪些优越性? 综合题(辅导时可以修改下时间) 1.在单道批处理系统中,有四个作业到达输入井和需要的计算时间如表所示,现采用响应比最高者优先算法,忽略作业调度所需的时间。当第一个作业进入系统后就可开始调度。 (1)填充表中空白处 (2)四个作业的执行次序为__________________。 (3)四个作业的平均周转时间为__________________。 2.在某计算中心的一道单道程序设计系统中,有A、B、C三个作业在等待处理,它们到达系统的时间和估计需计算的时间如下表所示: 法调度时各自的等待时间和完成时间。

操作系统概论重点整理2017(2017年张琼声版)

操作系统概论-02323(2017年张琼声版本) 第1章操作系统简介 1.1什么是操作系统 (1)操作系统概念: 操作系统是一种复杂的系统软件,是不同程序代码、数据结构、初始化文件的集合,可执行。 操作系统是提供计算机用户与计算机硬件之间的接口,并管理计算机软件和硬件资源,并且通过这个接口使应用程序的开发变得简单、高效。 接口是两个不同部分的交接面。接口分为硬件接口和软件接口,计算机的所有功能最终都是由硬件的操作来实现的,计算机屏蔽了对硬件操作的细节。 (2)操作系统完成的两个目标: 1)与硬件相互作用,为包含在所有硬件平台上的所有底层可编程部件提供服务; 2)为运行在计算机系统上的应用程序(即用户程序)提供执行环境。 现代计算机特点是支持多任务,一方面保证用户程序的顺利执行,另一方面使计算机系统资源得到高效的利用,保证计算机系统的高性能。 (3)操作系统的功能: 处理机管理、内存管理、设备管理、文件管理。 1.2操作系统的发展 1)无操作系统 2)单道批处理系统 3)多道程序系统(多道批处理系统、分时系统) 4)微机操作系统 5)实时操作系统 6)嵌入式操作系统 7)物联网操作系统 1.2.1无操作系统阶段: 电子管,无存储设备,第一台:1946年宾夕法尼亚大学的「埃尼阿克」 单道批处理系统: 晶体管,磁性存储设备,内存中有一道批处理作业,计算机资源被用户作业独占。 吞吐量是指单位时间内计算机系统处理的作业量

1.2.2单道批处理系统 特点:自动性、顺序性、单道性。 优点:减少了等待人工操作的时间 缺点:CPU资源不能得到有效的利用。 1.2.3多道程序系统 多道程序系统:集成电路芯片,出现了分时操作系统(多个终端)。 特点:多道性、无序性、调度性、复杂性。 优点:能够使CPU和内存IO资源得到充分利用,提高系统的吞吐量。 缺点:系统平均周转时间长,缺乏交互能力。 1.2.4微机操作系统: 第一台Intel公司顾问GaryKildall 编写的CP/M系统,是一台磁盘操作系统,用于Intel8080. 1.2.5操作系统特点 (1)分时系统: 特点:多路性、及时性、交互性、独立性。 优点:提供了人机交互,可以使用户通过不同终端分享主机。 缺点:不能及时接收及时处理用户命令。 (2)实时操作系统(用户实时控制和实时信息处理): 实时操作系统:广泛应用于各种工业现场的自动控制、海底探测、智能机器人和航空航天等。 特点:多路性、独立性、及时性、交互性、可靠性。 在实时系统中,往往采取多级容错措施来保证系统安全和数据安全。 (3)操作系统产品: 1)主机操作系统(批处理、事务处理(银行支票处理或航班预订)、分时处理) 2)微机操作系统 3)服务器操作系统 4)嵌入式操作系统(物联网操作系统) 1.3操作系统的特征 现代操作系统都支持多任务,具有并发、共享、虚拟和异步性特征。 (1)并发: 指两个或多个事件在同一时间间隔内发生; (2)共享:指系统中的资源可供内存中多个并发执行的进程共同使用。 资源共享两种方式:互斥共享,同时共享; (3)虚拟:指通过某种技术把一个物理实体变成若干逻辑上的对应物;

西 安 交 通 大 学 实 验 报 告 生物信息学

课程生物信息学实验名称核酸和蛋白质序列数据的使用系别实验日期: 专业班级组别交报告日期: 姓名学号报告退发:(订正、重做) 同组人无教师审批签字: 实验目的:了解常用的序列数据库,掌握基本的序列数据信息的查询方法。 实验步骤:在序列数据库中查找某条基因序列(insulin人的),通过相关一系列数据库的搜索、比对与结果解释 实验结果: 1.该基因的功能是? DNA结合、RNA结合、雄激素受体结合、酶结合、蛋白结合、转录激活活性、转录调控区的DNA结合、微管蛋白结合、泛素蛋白与连接酶结合、泛素蛋白连接酶的活性、提高泛素蛋白连接酶的活性、锌离子结合 3. 该蛋白质有没有保守的功能结构域 该蛋白质有保守的功能结构域。分别为cd00027(Location:1763 –1842 Blast Score: 107)cd00162(Location:23 –68 Blast Score: 134)pfam04873(Location:655 –978 Blast Score: 1301)pfam12820(Location:344 –507 Blast Score: 809)pfam13923(Location:20 –65 Blast Score: 135) 4. 该蛋白质的功能是怎样的? ①E3泛素蛋白连接酶,专门介导L YS-6'-联泛素链的形成,并通过促胞对DNA损伤的反应,在DNA修复中起着核心的作用;目前还不清楚是否也介导其他类型的泛素链形成。E3泛素蛋白连接酶的活性是其抑癌能必需的。②BARD1- BRCA1异源二聚体协调各种不同的细胞通路,如DNA损伤修复,泛素化和转录调控,以维持基因组稳定性。③调节中心体微核。 ④从G2到有丝分裂的正常细胞周期进程所必需的。⑤参与转录调控在DNA损伤反应中的P21。⑥为FANCD2靶向DNA损伤位点所需。⑦可以用作转录调控因子。⑧绑定到ACACA 和防止其去磷酸化,抑制脂质合成。 5. 该蛋白质的三级结构是什么?如果没有的话, 和它最相似的同源物的结构是什么样子的?给出 示意图。 该蛋白有三级结构,如图所示

操作系统概论

操作系统概论 1.计算机硬件主要由中央处理器、存储器、输入输出控制系统和各种输入输出设备组成;计算机系统包 括硬件子系统和软件子系统。 2.操作系统三种基本类型:批处理操作系统、分时操作系统、实时操作系统。 3.输入输出控制系统管理外围设备与主存储器之间的信息传送。 4.操作系统的功能可以分为处理管理、存储管理、设备管理和文件管理 5.进程:一个进程在一个数据集上的一次执行。程序是一组指令的有序集合,是一个静态实体。进程是 一个动态实体,有自己的生命周期一个进程可以对应很多程序。进程三种基本状态:运行、就绪、等待态。 6.进程控制块包含四类信息:①标识信息:用于标识一个进程包括进程名。②说明信息:用于说明进程 情况,包括进程状态等待原因进程程序和数据存放位置。③现场信息:用于保留进程存放在cup中的信息,包括通用、控制和程序状态字寄存器的内容。④管理信息:用于进程调度包括进程优先数队列指针。 7.中断:由于某些时间的出现,中止现行进程的运行,而转去处理出现的事件内,待适当的时候让被中 止的进程继续运行,这个过程就是中断。 8.中断处理程序:对出现的事件进行处理的程序.是操作系统的组成部分 9.中断响应:通常在cup执行完一条指令后,硬件的中断装置立即检查有无中断事件发生,若有则暂停 运行进程的运行而让操作系统中的中断处理程序占用cpu. 10.单用户连续存储管理和固定分区存储管理都为静态重定位。 11.移动的条件:移动一道作业时,应先判定它是否在与外围设备交换信息。若是则暂不能移动该作业必 须等待信息交换结束后才可移动。 12.快表:把存放的高速缓冲存储器中的部分页表称为快表 13.什么是虚拟存储器:对分页式存储器实现虚拟存储器只需将作业的全部信息作为副本存放在磁盘上, 作业呗调度投入到运行时,至少把作业的第一页信息装入主存中,在作业执行过程中访问到不在主存储器中的页时,再把它们装入 14.逻辑文件类型:流式文件、记录式文件。 15.文件存储结构:顺序文件、链接文件、索引文件。存取方式:顺序存取、随机存取。 16.文件安全性包括:文件保护和保密 17.读一个文件一次调用:打开文件、读文件、关闭文件;写一个文件:建立文件、写文件、关闭文件。用 户可调用删除操作要求删除一个有权删除的文件但删除一个文件前应先关闭 18.传输一次信息传输操作所花的时间有三部分:①寻找时间:把移动臂移到指定的柱面所花的时间,机 械操作,花费时间较长。②延迟时间:等待指定的扇区旋转到磁头位置下所花时间。这个与扇区的位置有关。③传送时间:指定的磁头把磁道上的信息读到主存或把主存的信息写到磁道上所花的时间。 19.缓冲技术:操作系统中利用缓冲区来缓解处理与外围设备之间工作速度不匹配的矛盾而采用的技术, 包括:单缓冲技术、双缓冲技术和缓冲池技术。 20.操作系统中实现联机同时外围设备操作功能部分也称为斯普令系统,它由三个部分组成(1)预输入程序 (2)井管理程序(3)缓输出程序 21.进程的互斥与同步(1)进程的互斥:指当有若干个进程都要使用一个公共资源时,任何时刻最多只允 许一个进程去使用该资源,其他要使用它的进程必须等待,直到该资源的占用者释放了该资源(2)进程的同步:指在并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒 22.通信原语 Send(N,M) 把信件M送到指定的信箱N中. Receive(N,Z) 从指定信箱N取出一封信,存 到指定的地址Z中

操作系统实验报告心得体会

操作系统实验报告心得体会 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。 不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,

慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域

西安交通大学实验报告

西安交通大学实验报告 课程_大学计算机_实验名称_检索绘图音频及图像处理_第页共页 系别_____ 能动学院___________ 实验日期年月日专业班级________________组别_____________ 实验报告日期年月日姓名________________学号_____________ 报告退发 ( 订正、重做 ) 同组人_________________________________ 教师审批签字 ●目标任务: 一. 信息检索 1.使用百度地图网站搜索西安交通大学南门到西安大唐芙蓉园的公交线路。(屏幕截图)2.在本校图书馆网站查找两门课程的教学参考书(屏幕截图)。 3.使用百度图片网站搜索有关“飞机”和“天空”的图片,各下载一张,并分别命名为:天空.jpg,飞机.jpg。 4.使用Ei检索,检索目前中国高速铁路(High-speed railway in China)相关的工程论文(屏幕截图) 二. 矢量图绘制 题目:使用Microsoft Office Visio 2010办公绘图软件,绘制流程图。 要求:参见实验教材p27,“四. 实验任务和要求”。 三.数字音频处理 题目:使用GoldWave音频处理软件,完成手机铃声制作 要求:从网上下载一个音乐文件,选取最喜爱的片段,将其保存成手机要求的音频格式(如MP3、WAV)作为手机铃声(存放为另一个音乐文件)。 结果:在实验报告中,粘贴两个音乐文件的属性对话框屏幕截图。(分析文件的大小与占用空间的不同) GoldWave软件存放地址: D:\计算机应用技术基础、ECAT.Software\ECAT-Software\GoldWave.rar 或从网上下载。 四.数字图像处理 题目:使用Photoshop软件进行“飞行编队”图像设计。 要求:参见实验教材p37,“四. 实验任务和要求”(1)飞行编队设计。 结果:将设计的“三角飞行编队图片”粘贴到实验报告中。 最后上传实验报告。 ●实验环境

操作系统概论自考复习资料.doc

操作系统(operating system , OS)是计算机系统中必不可少的系统软件。它是计算机系统中各种资源的管理者和各种活动的组织者、指挥者。它使整个计算机系统协调一致且有效地工作。通过本课程的学习,我们将知道操作系统要做什么、怎么做和为什么要这样做。 学习操作系统,首先我们应该知道操作系统的概念。本章主 要讲述了以下几个问题。 一、什么是操作系统 二、操作系统的形成 三、操作系统的类型 四、操作系统的功能 一、什么是操作系统 在回答这个问题之前,我们先来了解一下什么是计算机系统。计算机系统是按用户的要求接收和存储信息、自动进行数据处理并输出结果信息的系统。 计算机系统由硬件系统和软件系统组成。软硬件系统的组成部分就是计算机系统的资源,当不同的用户使用计算机时都要占用系统资源并且有不同的控制需求。 操作系统就是计算机系统的一种系统软件,由它统一管理计算机系统的资源和控制程序的执行。 操作系统的设计目标一是使计算机系统使用方便。二是使得计算机系统能高效地工作。 二、操作系统的形成 早期没有操作系统→原始汇编系统→管理程序→操作系统可以看到,操作系统是随着计算机硬件的发展和应用需求的推动而形成的。 三、操作系统的类型

按照操作系统提供的服务,大致可以把操作系统分为以下几类: 批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。其中批处理操作系统、分时操作系统、实时操作系统是基本的操作系统(加亮) 1、批处理操作系统按照用户预先规定好的步骤控制作业的执行,实现计算机操作的自动化。又可分为批处理单道系统和批处理多道系统。单道系统每次只有一个作业装入计算机系统的主存储器运行,多个作业可自动、顺序地被装入运行。批处理多道系统则允许多个作业同时装入主存储器,中央处理器轮流地执行各个作业,各个作业可以同时使用各自所需的外围设备,这样可以充分利用计算机系统的资源,缩短作业时间,提高系统的吞吐率。 2、分时操作系统,这种系统中,一个计算机系统与许多终端设备连接,分时系统支持多个终端用户,同时以交互方式使用计算机系统,为用户在测试、修改和控制程序执行方面提供了灵活性。分时系统的主要特点是同时性、独立性、及时性和交互性。 3、实时操作系统能使计算机系统接收到外部信号后及时进行处理,并在严格的规定时间内完成处理,且给出反馈信号。它是较少有人为干预的监督和控制系统。实时系统对可靠性和安全性要求极高,不强求系统资源的利用率。 4、网络操作系统可以把若干计算机联合起来,实现各台计算机之间的通信及网络中各种资源的共享,像我们现在使用的Windows ,UNIX和Linux等操作系统都是网络操作系统。 5、分布式操作系统的网络中各台计算机没有主次之分,在任意两台计算机间的可进行信息交换和资源共享。这一点上分布式操作系统和网络操作系统差别不大,他们的本质区别在于:分布式操作系统能使系统中若干计算机相互协作完成一个共同的任务。这使得各台计算机组成一个完整的,功能强大的计算机系统。 四、操作系统的功能 从资源管理的观点出发,操作系统功能可分为五大部分:处理器管理、存储管理、文件管理、设备管理和作业管理。 计算机系统是由硬件系统和软件系统两部分组成,操作系统是软件系统的一个组成部分,它是直接在硬件系统的基础上工作的,所以在研究操作系统之前,先必须对计算机系统的结构有一个基本的了解,本章就是讲述计算机系统结构的基本知识。

操作系统实验报告

操作系统实验报告 实验名称: 系统的引导 所在班级: 指导老师: 老师 实验日期: 2014年3 月29 日

一、实验目的 ◆熟悉hit-oslab实验环境; ◆建立对操作系统引导过程的深入认识; ◆掌握操作系统的基本开发过程; ◆能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。 二、实验容 1. 阅读《Linux核完全注释》的第6章引导启动程序,对计算机和Linux 0.11的引导过程进行初步的了解。 2. 按照下面的要求改写0.11的引导程序bootsect.s。 3. 有兴趣同学可以做做进入保护模式前的设置程序setup.s。 4. 修改build.c,以便可以使用make BootImage命令 5. 改写bootsect.s主要完成如下功能: bootsect.s能在屏幕上打印一段提示信息XXX is booting...,其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等。 6. 改写setup.s主要完成如下功能: bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s 向屏幕输出一行"Now we are in SETUP"。setup.s能获取至少一个基本的硬件参数(如存参数、显卡参数、硬盘参数等),将其存放在存的特定地址,并输出到屏幕上。setup.s不再加载Linux核,保持上述信息显示在屏幕上即可。 三、实验环境

本实验使用的系统是windows系统或者是Linux系统,需要的材料是osexp。 四、实验步骤 1. 修改bootsect.s中的提示信息及相关代码; 到osexp\Linux-0.11\boot目录下会看到图1所示的三个文件夹,使用UtraEdit 打开该文件。将文档中的98行的mov cx,#24修改为mov cx,#80。同时修改文档中的第246行为图2所示的情形。 图1图2 图3 2. 在目录linux-0.11\boot下,分别用命令as86 -0 -a -o bootsect.obootsect.s和 ld86 -0 -s -obootsectbootsect.o编译和bootsect.s,生成bootsect文件; 在\osexp目录下点击MinGW32.bat依此输入下面的命令: cd linux-0.11 cd boot as86 -0 -a -o bootsect.obootsect.s ld86 -0 -s -o bootsectbootsect.o

西安交通大学检测技术课内实验报告

西安交通大学 现代检测技术实验报告 实验一金属箔式应变片——电子秤实验 实验二霍尔传感器转速测量实验 实验三光电传感器转速测量实验 实验四E型热电偶测温实验 实验五E型热电偶冷端温度补偿实验

实验一 金属箔式应变片——电子秤实验 一、实验目的: 了解金属箔式应变片的应变效应,直流全桥工作原理和性能,了解电路的定标。 二、实验仪器: 应变传感器实验模块、托盘、砝码、数显电压表、±15V 、±4V 电源、万用表(自备)。 三、实验原理: 电阻丝在外力作用下发生机械变形时,其电阻值发生变化,这就是电阻应变效应,描述电阻应变效应的关系式为 ε?=?k R R (1-1) 式中 R R ?为电阻丝电阻相对变化; k 为应变灵敏系数; l l ?= ε为电阻丝长度相对变化。 金属箔式应变片就是通过光刻、腐蚀等工艺制成的应变敏感组件。如图1-1所示,将四 个金属箔应变片分别贴在双孔悬臂梁式弹性体的上下两侧,弹性体受到压力发生形变,应变片随弹性体形变被拉伸,或被压缩。 图1-1 双孔悬臂梁式称重传感器结构图

图1-2 全桥面板接线图 全桥测量电路中,将受力性质相同的两只应变片接到电桥的对边,不同的接入邻边,如图3-1,当应变片初始值相等,变化量也相等时,其桥路输出 Uo=R R E ?? (3-1) 式中E 为电桥电源电压。 R R ?为电阻丝电阻相对变化; 式3-1表明,全桥输出灵敏度比半桥又提高了一倍,非线性误差得到进一步改善。 电子称实验原理同全桥测量原理,通过调节放大电路对电桥输出的放大倍数使电路输出电压值为重量的对应值,电压量纲(V )改为重量量纲(g )即成一台比较原始的电子称。 四、实验内容与步骤 1.应变传感器上的各应变片已分别接到应变传感器模块左上方的R1、R2、R3、R4上,可用万用表测量判别,R1=R2=R3=R4=350Ω。 2.差动放大器调零。从主控台接入±15V 电源,检查无误后,合上主控台电源开关,将差动放大器的输入端Ui 短接并与地短接,输出端Uo 2接数显电压表(选择2V 档)。将电位器Rw3调到增益最大位置(顺时针转到底),调节电位器Rw4使电压表显示为0V 。关闭主控台电源。(Rw3、

自考操作系统概论试题及答案

全国2013年7月高等教育自学考试 操作系统概论试题 课程代码:02323 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸” 的相应代码涂黑。未涂、错涂或多涂均无分。 1、操作员接口是操作系统为用户提供的使用计算机系统的手段之一,该接口是A A、一组操作控制命令 B、一组系统调用程序 C、一组访管指令 D、一组I/O指令 2、中央处理器有两种工作状态,当它处于目态时不允许 ...执行的指令是B A、转移指令 B、I/O指令 C、访管指令 D、四则运算指令 3、一般而言,程序状态字(PSW)包含的三部分内容是A A、程序基本状态、中断码、中断屏蔽位 B、中断码、中断屏蔽位、等待/计算 C、中断屏蔽位、等待/计算、程序基本状态 D、等待/计算、程序基本状态、中断码 4、操作系统中引入进程后可以B A、保证程序的正确性 B、提高资源的利用率 C、减少调度次数 D、缩短处理器的工作时间 5、一个正在运行的进程要求操作系统为其启动外围设备时,应该执行的指令是A A、访管 B、输入/输出 C、启动外设 D、转移 6、某带有50个终端用户的计算机系统采用时间片轮转调度算法分配处理器。若规定时间片为10毫秒,对用户的每个命令需花费100毫秒完成处理,则终端最长响应时间为B A、2秒 B、5秒 C.10秒D、50秒 7、某一主存储器容量为1M的计算机,分割成4K的等长块。现有一个2.5M的作业在其上运行。试问该作业占用的虚拟页面数是D A.250个B、512个 C、625个 D、1024个 8、采用二级页表的分页式存储器中,如二级页表都已在主存,则每存取一条指令或一个数,需要访问主存B

操作系统实验报告

操作系统实验报告 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

许昌学院 《操作系统》实验报告书学号: 姓名:闫金科 班级:14物联网工程 成绩: 2016年02月

实验一Linux的安装与配置 一、实验目的 1.熟悉Linux系统的基本概念,比如Linux发行版、宏内核、微内核等。 2.掌握Linux系统的安装和配置过程,初步掌握Linux系统的启动和退出方 法。 3.熟悉Linux系统的文件系统结构,了解Linux常用文件夹的作用。 二、实验内容 1.从网络上下载VMware软件和两个不同Linux发行版镜像文件。 2.安装VMware虚拟机软件。 3.在VMware中利用第一个镜像文件完成第一个Linux的安装,期间完成网络 信息、用户信息、文件系统和硬盘分区等配置。 4.在VMware中利用第二个镜像文件完成第二个Linux的安装,并通过LILO或 者GRUB解决两个操作系统选择启动的问题。 5.启动Linux系统,打开文件浏览器查看Linux系统的文件结构,并列举出 Linux常用目录的作用。 三、实验过程及结果 1、启动VMware,点击新建Linux虚拟机,如图所示: 2、点击下一步,选择经典型,点击下一步在选择客户机页面选择 Linux,版本选择RedHatEnterpriseLinux5,如图所示: 3、点击下一步创建虚拟机名称以及所要安装的位置,如图所示: 4、点击下一步,磁盘容量填一个合适大小,此处选择默认值大小 10GB,如图所示: 5、点击完成,点击编辑虚拟机设置,选择硬件选项中的CD-ROM (IDE...)选项,在右侧连接中选择“使用ISO镜像(I)”选项,点 击“浏览”,找到Linux的镜像文件,如图所示:

西安交大自动控制原理实验报告

自动控制原理实验报告 学院: 班级: 姓名: 学号:

西安交通大学实验报告 课程自动控制原理实验日期2014 年12月22 日专业班号交报告日期 2014 年 12月27日姓名学号 实验五直流电机转速控制系统设计 一、实验设备 1.硬件平台——NI ELVIS 2.软件工具——LabVIEW 二、实验任务 1.使用NI ELVIS可变电源提供的电源能力,驱动直流马达旋转,并通过改变电压改变 其运行速度; 2.通过光电开关测量马达转速; 3.通过编程将可变电源所控制的马达和转速计整合在一起,基于计算机实现一个转速自 动控制系统。 三、实验步骤 任务一:通过可变电源控制马达旋转 任务二:通过光电开关测量马达转速 任务三:通过程序自动调整电源电压,从而逼近设定转速

编程思路:PID控制器输入SP为期望转速输出,PV为实际测量得到的电机转速,MV为PID输出控制电压。其中SP由前面板输入;PV通过光电开关测量马达转速得到;将PID 的输出控制电压接到“可变电源控制马达旋转”模块的电压输入控制端,控制可变电源产生所需的直流电机控制电压。通过不断地检测马达转速与期望值对比产生偏差,通过PID控制器产生控制信号,达到直流电机转速的负反馈控制。 PID参数:比例增益:0.0023 积分时间:0.010 微分时间:0.006 采样率和待读取采样:采样率:500kS/s 待读取采样:500 启动死区:电机刚上电时,速度为0,脉冲周期测量为0,脉冲频率测量为无限大。通过设定转速的“虚拟下限”解决。本实验电机转速最大为600r/min。故可将其上限值设为600r/min,超过上限时,转速的虚拟下限设为200r/min。 改进:利用LabVIEW中的移位寄存器对转速测量值取滑动平均。

操作系统复习资料全

一、单项选择题 1.MS-DOS管理常规存储区时,逻辑上将()作为一段。 A)16KB B)64KB C)640KB D)1024KB 2.以下的缩写是MS-DOS下的扩展内存的是()。 A)UMB B)EMS C)MEM D)XMS 3.工业过程控制系统中运行的操作系统最好是()。 A)单用户系统B)实时系统C)分布式操作系统D)网络操作系统 4.用户使用操作系统通常有三种手段,它们是:控制命令、系统功能调用和()。 A)JA V A B)汇编语言C)宏命令D)作业控制语言 5.每一个进程在执行过程中的任一时刻,可以处于()个状态。 A)1B)2C)3D)4 6.采用多道程序设计能()。 A)缩短每道作业的执行时间B)减少单位时间算题量 C)增加单位时间算题量D)增加平均周转时间 7.程序与和他有关进程的对应关系是()。 A)一对一B)一对多C)多对一D)多对多 8.存储器的段页式管理中,每次从主存中取出一条指令或一个操作数,需要()次访问 主存。 A)1B)2C)3D)4 9.如果处理器有32位地址,则它的虚拟地址空间为()字节。 A)2GB B)4GB C)640KB D)16MB 10.有一个长度为6000个字符的流式文件要存在磁盘上,磁盘的每块可以存放512字节,该文件至少占用()块。 A)5B)6C)12D)6000 11.有一个含有4个盘片的双面硬盘,盘片每面有150条磁道,则该硬盘的柱面数为()。 A)150B)300C)8D)1200 1 /9

12.SPOOL系统中,负责将数据从输入井读到正在执行的作业中的是()。 A)预输入程序B)缓输出程序C)输入井写程序D)输入井读程序 13.如果有4个进程共享同一程序段,每次允许3个进程进人该程序段,若用PV操作作为同步机制则信号量S的取值范围是()。 A)4,3,2,1,0B)3,2,1,0,-1 C)2,1,0,-1,-2D)1,0,-1,-2,-3 14.进程之间的同步是指进程间在逻辑上的相互()关系。 A)制约B)排斥C)调用D)转移 15.Windows95的桌面是指()。 A)整个屏幕B)全部窗口C)活动窗口D)非活动窗口 二、双项选择题 1.作业可分成若于个作业步执行,作业步的顺序可由()或()指定。 A)用户B)操作员C)系统自动D)程序中E)BAT文件 2.并发进程之间相互通信时两个基本的等待事件是()和()。 A)等消息B)等信件C)等发送原语D)等接收原语E)等信箱 3.产生死锁的基本原因是()和()。 A)资源分配不当B)系统资源不足 C)进程推进顺序不当D)作业调度不当E)进程调度不当 4.在下面的作业调度算法中,()调度算法最不利于大作业,()调度算法最有利于提高资源的使用率。 A)先来先服务B)计算时间短的作业优先C)响应比最高者优先 D)优先数E)均衡 5.下列各类中断中,可能要用户介入的是()和()。 A)硬件故障中断B)程序中断C)外部中断 D)输入/输出中断。E)访管中断 6.()和()存储管理方式提供二维地址结构。 2 /9

相关文档
最新文档