文档库 最新最全的文档下载
当前位置:文档库 › C语言和操作系统学习笔记

C语言和操作系统学习笔记

C语言和操作系统学习笔记
C语言和操作系统学习笔记

深入理解计算机系统

存储器层次

CPU主频: 3.2 GHz

高速缓存(1~10ns, 一个周期)

主存(10~100ns)

辅助(磁盘) (1byte/10ms, 一次可以传送大量字节, 几十到几百个周期)

三级存储(分钟为单位)

虚拟存储

虚拟页(VP), 物理页(PA), 页表(Page Table), 页表条目(PTE, Page Table Entry), DRAM(虚拟存储器缓存), SRAM(CPU和主存的缓存), MMU(存储器管理单元),

路旁转换缓冲(TLB, Translation Lookaside Buffer)

东芝satalite L700笔记本进入BIOS(ctrl + alt + del 之后F12)

Ubuntu 15.10可能不适配NVDIA显卡(如: NVDIA GeFore GTX 745)

Day01

C语言程序的绝大部分必须记录在以.c作为扩展名的文件里,这种文件叫源文件

C语言程序里可以直接使用加减乘除四则运算

符号(+、-、*、/)

每个独立的计算步骤最后必须使用分毫结束,用分号结束的一个计算步骤叫一条语句

任何C语言程序一个由大量的语句构成

C语言程序中,采用分组的方式管理所有的语句

一组里的所有语句必须写在一对大括号里

可以吧一组里面的语句再次进行分组

绝大多数语句必须属于某个分组

任何语句不可以跨越分组

不被其他大括号包含的大括号可以叫做顶级大括号

顶级大括号可以用来表示函数(可以吧函数看成一组语句)

每个函数必须有自己的名字,不用的函数的名字必须不同

任何C语言程序一对由一个活多个函数构成

C语言程序中必须有一个叫做main的函数,这个函数叫做主函数

C语言程序必须从主函数的第一条语句开始执行

当主函数的最后一条语句结束的时候整个程序结束

C语言程序允许一个函数的结束的时候遗留一个数字,这个数字叫做这个函数是返回值

主函数需要有一个返回值,这个返回值表示主函数的工作结果。如果这个返回值是0,则表示一切正常,否则就表示出现非正常情况。

C语言程序里预留了几十个英文单词,这些英文单词叫做关键字。每一个关键字有特定的用途,不能随便使用。

Return就是一个关键字,它有两个用途。主要用途是结束函数的执行(任何时候一定会起到这个作用),辅助作用是用来指定返回值数值(当关键字后面有数字时起这个作用)

根据数字在某个方面的区别把数字分成几组,每组叫做一个数据类型

每个数据类型有自己的名字

整数类型是一种数据类型,它的名字是int,它里面包含几乎所有不带小数点的数字程序中所有数字必须有类型

C语言程序中所有不带小数点的数字默认是整数类型

每个函数必须明确表示它返回值的类型(把返回值类型名称写在函数名称前面)

C语言程序基本开发步骤:

1、使用vi编写以.c作为扩展名的源文件

2、使用gcc工具对源文件进行翻译得到名为a.out的文件(编译)

3、用命令./a.out执行得到的文件

能够完成编译工作的软件叫编译器

不同编程语言有自己的编译器

Gcc是c语言的一种编译器

MinGW软件是windows里的gcc

所有C语言程序中都会包含预处理指令

预处理指令全都是以# 作开头,而且不是以;作结尾

标准C阶段遇到的预处理指令都可以把源文件内容改变成其他内容

#include 是一个预处理指令,它可以把其他文件内容合并到当前源文件中

使用这个预处理指令的适合需要指定文件路径,这个路径对应的文件会被包含到当前源文件中

这个路径通常采用相对路径:

如果把路径写在< > 中间表示相对路径的起点是系统预先设定好的一下目录

如果把路径写在“”中间表示相对路径的起点还包括当前源文件所在的目录gcc 工作步骤:

1、先处理所有预处理指令

2、把修改后源文件内容翻译成计算机认识的格式(也叫编译)

3、把编译得到的不同部分合并在一起(链接)

gcc 的选项:

-E 只完成预处理指令的处理工作

-c 只完成预处理和编译工作

-o 用来指定新文件名称

-std=c89/-std=c99 用来指定编译过程中遵循的版本(缺省情况下采用c89版本)

程序中的文字信息必须加入到注释的区域里,编译器会忽略所有注释

以// 做开头一直到行尾的区域叫单行注释

以/* 做开头,以*/ 做结尾的区域叫多行注释

C语言程序中大量使用名称区分不同内容,这些名称叫做标识符

标识符最好采用有意义的英文单词编写

标识符命名规则:

1、第一个字母只能是英文字母或者下划线

2、后面的字母可以是英文字母、下划线或者阿拉伯数字字符

3、标识符中大小写不同的字符被看作是不同的字符(大小写敏感)

4、关键字不可以当做标识符使用

5、标识符长度没有限制,但计算机只会截取前一段使用(c89规范中截取前31个

字符,c99规范里截取前63个字符)

C语言书写规范:

1、一行中最多包含一条语句

2、不同层次的语句要使用缩进区分开

3、在合适的地方使用空格和空行提高程序的可读性

4、标识符采用驼峰方式(区分大小写XiAn)或者下划线(xi-an)方式编写

C语言中提供了一组标准函数,每个函数负责解决一个常见问题

每个标准函数都有自己是名字

在程序中编写函数调用语句就可以使用某个函数了

printf 是一个标准函数的名字,这个标准函数可以把程序中的数字打印在终端窗口里;为了使用这个标准函数需要包含stdio.h 文件。

在printf函数调用语句中使用占用符可以把双引号里面的某个位置保留下来,在打印的适合先用某个数字填充这个位置然后再打印

使用占位符可以打印编写程序时还不知道的数字

不同类型的数字应该和不同的占位符配合使用

和整数类型配合使用的占位符是%d

可以在一条函数调用语句中使用多个占位符,有多少个占位符就应该在双引号后面提供多少个数字,数字之间使用逗号分开

计算机内存分成很多字节,任意两个的大小一样

每个字节可以用来存放一个数字。

可以临时把几个相邻的字节合并用来记录一个数字

我们可以把内存中用来记录一个数字的区域叫做一个存储区(一个存储区一定是由一个或多个相邻字节构成的)

每个字节有一个编号,这个编号叫做这个字节的地址

所有字节的地址从0开始逐渐递增

只有通过地址才能找到字节

一个存储区也有地址,它的地址是它所包含的字节中最前边的字节的地址

C语言中可以使用变量代表一个存储区,这一可以简化对存储区的使用

一个存储区只能用来存储一种类型的数字,因此存储区是分类型的(变量也是)计算机可以根据变量计算出对应存储区的地址(变量可以代表存储区的原因)

变量和存储区的对应关系完全由计算机决定

为了在程序中使用一个变量必须首先声明它,变量声明语句用来声明变量

变量声明语句会让计算机为变量分配一个存储区

变量声明语句中不用包含变量的类型和名称

变量的使用方法:

1、变量可以用来存储一个数字

2、从变量中获得数字并进行计算

变量赋值语句可以向变量中存放一个数字

赋值语句需要采用赋值操作符(=)编写

赋值操作符要求左边必须是一个能代表存储区的内容(左值)

赋值操作符要求右边必须是一个能代表数字的内容

赋值语句执行完成后可以把右边的数字记录在左边的存储区里

只要在程序中把代表存储区的内容当作数字使用,计算机就会先从存储区里获得数字,然后再使用

变量名称在程序中既可以带便存储区,也可以代表存储区的数字(num = num)

变量名称在程序中代表什么是由环境决定的

预习:

1变量2、scanf标准函数 3 数据类型

作业:

1、假设有1克到127克之间的127个不同的整数重量,要求设计一套砝码表示其中任何一个整数重量。(同样重量的砝码不能重复,砝码数量越少越好)

1 2 4 8 16 …

Day01—day02 总结:

whoami 查看当前使用的账号

clear 清除终端窗口里的文字信息

pwd 查看当前目录

cd cd~

ls ls -l ls -a ls -la

touch 创建新文件

mkdir 创建新目录

mkdir -p qwe/asd 两个目录一起创建出来

rm rm -rf

Tab键补齐

tar zcvf 压缩文件名.tar.gz 路径1 路径2 打包压缩

tar zxvf 压缩文件名.tar.gz 解包解压nyy (n为整数,如果是1可省略) 拷贝n行(必须在正常模式下)np 粘贴n次(必须在正常模式下)ndd 剪切n行(必须在正常模式下)set nu set nonu

vi ~/.vimrc 查看set命令(每次vi启动时,都会从~/.vimrc文件中获得大量set命令并按顺序执行它们)

chmod u+x(g+w / o-r) user/group/other

chmod 664(二进制后转的十进制数) 文件路径修改操作属性

mv 路径1 路径2 移动(覆盖)(也可以用来改名)

cp 路径1 路径2 拷贝(复制)

ln -s 路径1 路径2(可以不存在,新建) 链接(等同操作) echo abc > a.txt (重定义输出) (abc 覆盖 a.txt)

echo abc >> a.txt (追加) (abc 加在 a.txt 后) ps (-aux 系统所有进程) 查看当前窗口进程

kill (-9强制结束) 234(id号) 结束进程

ctrl + c 结束进程(相当于kill -2 自动寻找死循环) echo abc>a.txt 重定义输出

echo abc>>a.txt 追加

通配符:? (a?) 代表a_

* (a*) 代表以a开头的

gcc -E 只完成预处理指令的处理工作(编译)

gcc -c 只完成预处理和编译

gcc -o 用来指定新文件名称

-std=c89/-std=c99 用来指定编译过程中遵循的版本(缺省时采用

c89版本)

Day03:

可以在一条语句中声明多个同类型变量,这个时候类型名称写一次就行了

可以在声明变量的语句中立刻对变量进行赋值,这叫做变量的初始化

C语言里所有变量都应该初始化

变量可以用来在程序中代表一个未知的固定数字

变量可以用来代表一组相关数字(任何时候只使用其中某一个数字,使用过后就不再使用了)

在printf() “”中用%%,才会打印出% ;

Scanf()

如果scanf函数调用语句的双引号里有不是占位符的内容,则用户必须在输入的时候把它们按照顺序依次输入,否则计算机就无法得到数字

如果多次从键盘得到数字时某一次用户输入的格式错误则后面的所有输入都可能会错误

清理缓存区(有时前面输入错误,后面会都出错,清理缓存后就好了)Scanf(“%*[^\n]”);

Scanf(“%*c”);

scanf(“%*[^\n]”); scanf(“%*c”);

字符类型是一种数据类型,名称是char

这个类型中一个包含256个不同的数据,每个数据可以代表一个字符(‘%’‘#’)ASCII码表中记录所有256个数据两种表示方式之间的对应关系

‘a’97

‘A’65

‘0’48

所有字符数据分成两组,每组128个字符

其中一组里所有字符数据两种表示方式之间的对应关系在所有计算机上都一样(这组字符的整数表示方式范围从0到127)

另外一组中所有字符数据两种表示方式之间的对应关系在计算机上有可能不同(这组字符的整数表示方式范围从-128到-1,也有可能从128到255)

无符号字符类型也是一种数据类型

无符号字符类型用unsigned char 表示

这个数据类型里同样包含那256个不同的字符,所有的字符数据的整数表示方式范围固定从0到255)

ASCII码表中所有小型英文字符的整数表示方式是连续排列的,‘a’的整数表示方式最小

所有大写英文字母和阿拉伯数字字符也都符合这个规律

‘t’-‘a’=‘T’-‘A’

‘3’-‘0’= 3 - 0 =‘d’-‘a’

Short %hd

Unsigned short %hu

Long %ld

Unsigned long %lu

Int %d

Unsigned int %u

Float %f或者%g

Double %lf或者%lg

%lf和%f 会保留小数后面无效的零

%nd 和%-nd

%0nd也可以做站位符,(n同样代表一个整数)打印n个位子,无效位置用‘0’%n,mf作浮点占位符,共n个位置,小数点占m位

不同数据类型之间的区别是有它们是存储区所包含的字节个数不同造成的

Sizeof关键字可以用来计算一个变量或数据的存储区所占的字节个数

各种数据类型所包含的字节个数:

char(unsigned char) 1个字节

short(unsigned short) 2个字节

long(unsifned long) 4 个字节

int(unsigned int) 4个字节

float 4个字节

double 8个字节

Sizeof 关键字的小括号里可以写任何能当作数字使用的内容(赋值语句也可以当作数字)

Sizeof关键字的小括号里如果修改了任何存储区的内容则这种修改不会真正生效(如:sizeof(num = 10) 不会真正赋值)

计算机采用二进制表示数字,二进制里每个数位上只有0或1者两种可能

计算机里每个字节分成八段,每段可以用来记录一个0或者1

数字的二进制表示方式中每个数位有一行编号,最右边数位的编号是0,向左依次递增

二进制中每个数位上的1单独代表一个数字,它的数值就是2的编号次方

一个二进制所代表的数值就是他里边所有数位上的1所代表的数值之和

二进制加一是计算规则是吧最右边的0变成1,把它右边的所有1都变成0

二进制转十进制方式:把所有1单独转换最后把转换结果求和

0111 0011 = 1 + 2 + 16 +32 +64 =115

预习:1二进制(八进制十六进制,负数的二进制)

2操作符

作业:1编写程序计算给定长和宽的长方形的面积

2编写程序计算给定半径的元的周长

扩展:

crontab ( 任务调度)

crontab –l 查看任务调度

crontab –e 修改任务调度

可执行的shell 脚本

vi abc.sh

mkdir shell

cd shell

touch a.txt

ls –l abc.sh (查看脚本问价操作属性)

chmod 777 abc.sh (修改脚本操作属性,使其能被运行)

./abc.sh 执行脚本,从而运行里面步骤

远程操作别id的电脑(有对方ip和密码)(ftp 也可以)

telnet + ip(远程连接)

/sbin/ifconfig 查看本地ip

Ipconfig 在windows下查看ip

退出:exit(正常进入)

Quit(不正常进入)

服务器下:ftp 192.168.0.243

xly

xly

下载:gat 文件

上传:put 文件

退出:bye

Day04

十进制转二进制两种方法:

第一种,首先把十进制表示方法拆分成多个2的整数次方值和,然后把所有拆分结果单独转换成二进制,最后把所有转换结果合并就得到证个数字的二进制

57 = 32 + 16 + 8 + 1 = 0010 0000 + 0001 0000 +0000 1000 + 0000 0001

= 0011 1001

第二种是不断除以2取余,把所有余数按照从后向前的顺序书写得到转换结果

83 **** ***1

41 0*** ***1

20 00** ***0

10 000* ***0

5 0000 ***1

2 0000 0**0

1 0000 00*1

0 0000 0000

113/2 = 56/2 = 28/2 = 14/2 = 7/2 = 3/2 = 1/2 = 0

1000 1110 0111 0001

通过上述方法计算得到的二进制叫做源码

计算机里采用补码计算数字

非负数的源码和补码是一样的

八进制也是一种表示数字的方式(可以看成是二进制的简写方式)

把二进制的补码从有向左每三个数位分成一组,把每一组用0到7之间的数字替换得到结果就是八进制表示方法

0101 0111 01 010 111 127

4分3分八进制

可以直接在程序中使用八进制方式表示数字,但是必须在数字前写一个0

采用%o 做占位符可以把一个数字的八进制表示方式打印在屏幕上

十六进制也是一种表示数字的方法(也可以看成是二进制的简写方式)

把二进制补码中所有数位从右向左每四个数位分成一组,每组用一字字符替代得到的结果就是十六进制表示方式

如果某一组的转换结果在0到9之间则使用对应的阿拉伯数字字符替换,如果在10到15之间则使用‘a’到‘f’替换。

0010 1101 2d(十六进制)

可以在程序中使用十六进制的方式表示数字,但是必须在前面写上0x

采用%x 或者%X 可以把一个数字的十六进制表示方式打印在屏幕上

-5

0 – 5 0000 0000 – 0000 0101

1 0000 0000 – 0000 0101

=1111 1111 + 1 – 0000 0101

=1111 1111 -0000 0101 + 1

=1111 1010 + 1

=1111 1011

负数二进制补码计算方法:

1计算出负数相反数的补码

2把第一步的结果中每个数位变成相反数值,然后在加一

这种方法得到的结果直接是二进制补码

无符号类型的二进制补码一定是非负数

有符号类型的二进制最左边的数位可以用来盘点正负,如果是0则是非负数,如果是1则是负数

这个数位叫做符号位

不能直接把符号位替换成正负号

所有有符号类型中有一个特殊的二进制补码,它最左边的数位是1右边全是0,这个补码用来表示这个数据类型中最小的负数

当吧一个占地大的整数类型数据赋值给以个占地小的整数类型存储区的时候,计算机会保持二进制内容不变(会丢失一些数据)

当把一个占地小的整数类型数据赋值给一个占地大的整数类型存储区时会扩充二进制数位。原有的数字是有符号的,则扩充出来的二进制数位全是符号位。如果原有数字是无符号的,则扩充出来的二进制数位都是0

C语言程序中使用加减乘除

C语言中使用%表示区余操作、

,在C语言中可以做为操作符使用,它的左右和写一个能当数字使用的内容使用这个操作符编写的表达式可以当数字使用,这个数字就是逗号操作符后面的那个数字

逗号操作符的优先级非常低,甚至比赋值操作符优先级都低

赋值操作符(=)可以把一个数字放在一个存储区里

赋值操作符左边必须是一个能代表存储区的内容(左值)

赋值操作符右边必须是可以当数字使用的内容

赋值操作符的优先级非常低,但是比逗号操作符高

使用赋值操作符编写的赋值语句可以当作数字使用,这个数字就是赋值完成后的右边的存储区里的数字

一条语句中可以包含多个赋操作符,它们的计算顺序是先右后左

只需要一个数字就可以配合使用的操作符叫单目操作符

需要两个数字配合使用的操作符叫双目操作符

需要三个数字配合使用的操作符叫三目操作符

绝大多数双目操作符可以和赋值操作符合并形成赋值操作符(+= -= %=)

符合赋值操作符要求左边是能代表存储区的内容,有边是能当数字使用的内容

复合赋值操作符也是爽目操作符

所有复合赋值操作符的优先级都和赋值操作符的优先级一样低

自增++/自减--

它们是单目操作符,它们必须和一个存储区配合使用

这两个操作符都可以采用前操作方式或后操作方式使用(i++ ++i)

不用在一条语句中队同一个变量多次进行自增自减计算,因为结果不确定

布尔类型数据只包含两个数值,分别是真(true)和假(false)

在C89规范中真用整数1表示,假用整数0表示

整数也可以作为布尔值使用,0作为布尔值使用时是假,其他整数作为布尔值使用时是真

逻辑操作符用来编写逻辑表达式,逻辑表达式的计算结果只能是布尔值

!是单目逻辑操作符,表示求反

双目逻辑操作符: <><=>===

双目逻辑操作符的优先级比算术操作符的优先级低

C语言中所有逻辑表达式必须由一个或多个简单逻辑表达式构成(最多包含以个双目逻辑操作符的表达式叫简单逻辑表达式)

&& 与|| 或

(!Gender && weight > (height - 110))

|| ( Gender && weight > (height - 105))

与(&&)和或(||)都具有短路特性(前面的逻辑表达式如果能决定整个表达式的结果则不会去考虑后面的内容)

作业:

1、编写程序从键盘上得到一个1到127之间的整数,把它转换成二进制并把转换结果打印在屏幕上(两种方法)

Day05

位操作符可以直接对字节中的二进制数位进行操作

~是以个单目位操作符,它可以把字节中所有二进制数位求反,叫求反操作符

求反操作符不会修改原有数字内容

双目为操作符包括按位与(&),按位或(|)以及按位异或(^)

以上双目操作符首先把两个数字转化二进制补码,然后把对应数位上的数字进行操作(不对应的数位之间不会互相影响)

按位与会把对应数位上的数字进行与计算

按位与可以用来把租借中某些二进制数位清0;

任何数位和0按位与后是0

任何数位和1按位与后还是他本身

‘a’65 0100 0001

‘A’97 0110 0001

Char ch;

Ch &= ~32 // ~0010 0000; //1101 1111

按位或把对应数位上的数字进行或计算(或0得本身,或1得1)

3 0000 0011

| 5 0000 0101

= 7 0000 0111

按位或可以把字节中某些二进制数位设置成1

按位异或把对应上的数字进行异或计算(异或0不变,异或1结果改变)

0 ^ 0 = 0 3 ^ 5 = 0000 0110

0 ^ 1 = 1 = 6

1 ^ 1 = 0

按位异或可以把某二进制数位求反

移位操作符也是双目操作符;可以把所有二进制数位上的数字统一向左或向有移动n个位置

左移操作使用<<表示右移操作使用>>表示

移位操作符左边的数字是要进行移位操作的数字,右边的数字是移动的位数

移位操作不会修改原有的数字

移位操作后一定会有些数字丢失,另外一些位置空出来

左移时右边空出的位置上一定补充0;

右移时有符号类型数据左边空出来的位置上一定补充符号位,无符号类型数据左边空出来的位置上一定补充0

在移动过程中如果没有丢失有效数据位,则左移n位相当于乘以2的n次方,右移除以。

取地址操作符(&)可以根据一个存储区计算出它的地址

这是一个单目操作符,它必须和一个存储区配合使用

使用%p做占位符把地址打印在屏幕上

地址方式都是以十六进制来写的

可以在地址数据前使用* 操作符获得地址对应的存储区

三目表达式可以根据一个布尔值从两个计算规则中选择一个作为最终结果

三目表达式格式:

布尔值?表达式1 :表达式2

如果布尔值是真则采用表达式1计算最终结果,如果是假则采用表达式2计算最终结果

不要把赋值操作符写在三目操作符的问号后面

如果一个表达式中多个数据的类型不同,则计算机会首先把它们转换成同一类型,然后在进行计算

这个转换过程完全由计算机完成,这个过程叫隐式类型转换

隐式类型转换过程中会把char ,short 都转换成double当不同类型占地大小不同时会把有符号类型转换成武符号类型,整数类型转换成浮点类型

在C语言程序中可以随时给一个数据指定新类型,者叫做强制类型转换

强制类型转换的实现方法是在数据前写一对小括号,小括号里写数据类型名称

强制类型转换不受规则约束,所以转换过程中有可能造成数据丢失

实现强制类型转换的时候计算机会分配一个新的存储区,这个存储区的类型是我们在小括号里指定的类型。计算机用原来的数据对这个存储区进行赋值,然后使用这个存储区里的内容进行计算

如果对一个存储区的内容做强制类型转换则转换过程不会修改原有存储区里的数字流程控制语句可以让程序中的语句不再从上到下执行

分支是一种流程控制语句,它可以从几组语句中选择一组执行而忽略其他组

使用if 关键字可以编写分支,在if 分支中可以使用一个逻辑表达式的结果控制一组语句是否要执行(括号为真执行,位假不执行)

如果有多个分支,在任何时候最多只会执行其中一个分支,则可以使用else关键字把它们合并

如果合并好的多个分支任何时候必然会执行其中一组,则可以把最后一组的逻辑表达式省略

合并好的分支中多个逻辑表达式之间有先后顺序,只有当前面的逻辑表达式为假才会考虑后面的逻辑表达式

可以利用者一点在合并多个分支的时候简化它们的逻辑表达式

已经合并好的分支不一定能当作多个无关分支理解

作业:1编写程序从用户提供的三个数中找出最大数并打印

2编写程序从键盘得到小时、分钟、秒,计算出下一秒的时间,并按照如下格式打印

Hh:mm:ss

Day06

Switch … case 语句也可以用来实现分支

如果一个分支中包含有限个整数,每个整数对应一组专门的语句,这种一般使用Switch … case语句

Switch …case语句中在大括号内部把所有整数都列举出来,每个整数对应的处理语句就可以卸载这个整数下面。每段必须用break;语句结束

在大括号里可以编写一组语句用来处理没有处理没有例句出来的数字,可以用default:来包括所有这些没有列举过的数字

循环也是一直流程控制语句,它可以让一组语句反复多次执行

For 关键字可以用来编写循环

在for关键字编写的循环中,可以采用一个变量代表一组相关数字,这个变量叫循环变量

在循环的大括号里可以使用break;语句随时终止循环的执行

Break;语句不会执行后循环变量也不会再改变

Continue;语句会直接跳转到循环大括号的末尾,中间的语句这次都不会执行(只结束这次循环,而不会像break那样结束掉整个循环)

Break;和continue;语句通常写在分支里

假设有如下的for循环语句

For(1;2;3){4}

它的执行顺序:【1、2】【4、3、2】【4、3、2】…【4、3、2】

第一组和其他所有组都不同

循环嵌套可以解决复杂的循环问题

首先把所有问题分组,为每组找一个代表数字使用一个循环描述所有组代表数字的变化过程在这个循环内部再写一个循环负责处理这一组内部的所有任务

内循环的开始数字和结束数字可能是不固定的,需要根据外循环的循环变量计算得到

作业:1编写程序打印99惩罚表

2假设一个面包店卖三种面包,重量分别是20克,25克,30克,编写程序吧所有能凑成200克的情况打印

Day07

For循环的多种写法:

1、当大括号里只有一条语句时,大括号可以省略

2、小括号里可以使用逗号操作符

3、在小括号里临时定义循环变量(c99规范中才可以使用)。当循环结束后临时定

义的循环变量不再能使用

4、如果大括号里没有语句则可以直接在小括号后用;结束,这种写法叫空语句

5、只保留小括号里之间的逻辑表达式

6、可以省略小括号中间的逻辑表达式(这个时候计算机认为这个逻辑表达式的结果

永远是真,这种循环无法正常结束,所有叫死循环)

While 循环也是一种实现循环的方式

如何编写循环的时候不知道循环要执行多少次就可以考虑采用while格式编写While循环和for循环可以互相替代,仅仅是两种不同的编写思路

While循环格式:

While(逻辑表达式1){

反复执行的语句 2

}

反复执行大括号里由直到逻辑表达式为假时结束

执行顺序:【1】【2 1】【2 1】…【2 1】

如果某一组最后编号为1的逻辑表达式结合为假则循环结束,否则启动下一组While循环也可以编写空语句和死循环(把1作为逻辑表达式就可以实现死循环)While循环中也可以使用break;和continue;语句

Do … while也是编写循环的方式,格式如下:

Do{

2

}while (1 );

它按照如下顺序分组执行:【2 1】【2 1】【2 1】【2 1】…【2 1】

相当于把while循环中第一组排除掉

它的结束方式和while循环一样

这种格式可以保证大括号里的语句至少执行一次

编写程序是无法预知的数字叫随机数

计算机生成的随机数叫伪随机数

Rand 标准寒素可以用来获得随机数

把函数调用语句当数字使用就得到随机数

为了使用这个函数需要包含stdlib.h函数

Srand标准函数可以用来设置随机数种子

这个函数把一个整数作为种子使用

为了使用这个标准函数需要包含stdlib.h文件

Srand函数调用语句只应该在主函数的开始执行一次

Time标准函数可以用来获得当前时间

把函数调用语句当数字使用结束得到的时间(1970---00:00:00到现在的秒数)

为了使用这个标准函数需要包含time.h文件

Goto也是流程控制语句,它可以指定任何一条语句作为下一条语句

不要使用goto语句

数组可以代表内存中一组连续的同类型存储区数组。需要先声明再使用

声明数组时需要指定存储区类型,数组名称以及存储区域个数

数组创建后内部所包含的存储区个数不可以改变

数组不可以当作整体使用,一次只能使用其中某一个存储区

数组中每个存储区有一个专门的编号,这个编号叫下标

第一个存储区的下表是0,向后依次递增

最大下标是存储区个数减一

超过范围的下标不可以使用

数组名称不代表存储区,而只代表第一个存储区的地址(数组名称不可以被赋值)数组名称加N可以计算出下标位N的存储区地址

数组中下标为N的存储区还可以使用如下方式表示:*(数组名称+ N)

可以使用一个for循环依次处理数组中每个存储区,循环中循环变量依次代表所有存储区的下标

数组也应该初始化

初始化数组的时候需要提供多个初始化数据,每个数据用来初始化一个存储区

所有初始化数据写在一对大括号里,不同数据之间使用逗号分开

初始化数据的使用顺序是从前向后

如果初始化的时候提供过多的初始化数据则多余的会被丢掉

如果初始化数据过少则没有对应初始化数据的存储区自动被初始化成0

如果初始化数据个数和存储区个数一样则可以省略数组声明中存储区个数

可以采用sizeof关键字对数组名称进行计算,计算结果是数组中包含的字节个数

Int arr[5] = {}; Sizeof(arr) = 4*5 = 20

声明变长数组的时候可以使用变量表示数组中存储区的个数,这种数组只能在C99规范中使用(变长数组只表示声明是不确定长度,可一旦确定就不可以再改变了)int arr[num]; / /变长数组

变长数组不可以初始化!

Day08

二位数组采用循环嵌套的处理方式对它每一个

二位数组的初始化:

二维数组既可以作为一个一维数组进行初始化,也可以作为多个一维数组进行初始化

二维数组名称加N跨越了N组存储区的大小,结果是下标为N那组第

一个存储区的地址

对二维数组组名称进行sizeof计算结果是整个二维数组中所有存储区的大小

可以把二维数组名称转换成一维数组使用

转换方式是二维数组名称后面加一个组下标

这个一维数组中包含组下标

对一维数组名称进行取地址操作结果可以看成是一个二维数组

这个二位数组中只有一个分组,这个分组里包含原来一维数组中所有存储区Day09

函数

C语言中可以采用分组的方式管路所有的语句

最简单的分组方式可以把所有语句分成多个函数,每个函数中包含多个语句

所有C语言程序一定由一个或多个函数构成

每个函数有自己的名字,名字用来区分不同的函数

C语言规定每个程序中必须包含一个叫做main的函数,这个函数叫主函数

多函数程序执行的时候遵守如下规则:

1、任何时候只能有一个函数工作

2、任何时候也必然有一个函数在工作

3、如果函数A在工作过程中停下来让函数B开始工作,则函数B结束所有工作后

必须要让函数A继续后面的工作

如果函数A在工作过程中停下来让函数B开始工作,则它们之间存在调用关系

函数调用关系一定发生在两个函数之间

调用关系中先开始工作的函数叫调用函数,后开始工作的函数叫被调用函数

函数A和函数B之间的调用只在函数B工作期间有效

存储区是有主人的

存储区的主人可以任意使用它所拥有的存储区

同一个主人的存储区不可以重名,不同主人的存储区可以重名

声明在函数内部的存储区它的主人是这个函数的某一次运行过程

绝大多数函数调用过程中存在双方之间数据的传递

数据传递有两个完全相反的方向,它们分别使用不同的方法实现

任何一个方向的数据传递都需要一组专门的存储区来记录要传递的数字

所有这些存储区的主人都是被调用函数

从被调用函数向调用函数只能传递一个数据,这个数据叫做被调用函数的返回值

为此只需要准备一个存储区

只能由被调用函数向这个存储区里放数字

被调用函数只能在最后一条语句使用return关键组向这个存储区放数字

只有调用函数才能从这个存储区里获得数字

把函数调用语句当作数字使用就可以获得这个数字

这个存储区的类型名称要写在函数名称前面

调用函数在得到返回值以后必须立刻使用或者转存到其他存储区

一个函数可以选择不使用返回值存储区,这时需要在函数名称前写void

如果函数名称前没有写数据类型名称则计算机认为函数使用一个整数类型的返回值存储区

如果没有使用return关键字返回值存储区赋值,则调用函数从这个存储区里获得的数字是随机的

在对返回值存储区进行赋值的时候最好保证数据和存储区的类型一致

Exit标准函数可以随时结束一个程序的执行;为了使用这个函数需要包含stdlib.h文件

为了把数据从调用函数传递给被调用函数需要被调用函数提供一组存储区(这些存储区的个数和类型都是任意的)

为了使用这些存储区需要被调用函数声明一组变量

这些变量必须声明在函数名称后面的小括号里面

这些变量叫做形式参数

函数名称后面小括号里的内容叫形式参数列表

形式参数列表中每个形式参数都需要专门写类型名称,用逗号分隔不同的形式参数声明

函数调用语句中需要在小括号路位每个形式参数提供一个对应的数字。被调用函数在工作的时候就可以通过形式参数获得这些数字。这些数字叫实际参数

如果存在多个实际参数,一个实验逗号把它们分隔开

所有可以当作数字使用的内容都可以作为实际参数使用

形式参数和实际参数的存储区完全不同,对形式参数的修改不会影响实际参数

如果函数名称后面的小括号里什么都没有则表示函数可以接受任意个数任意类型的实际参数

在小括号里写void表示函数没有形式参数

利用数组作为形式参数可以传递大量数据,声明在小括号里的数组就是形式参数

地址数据可以作为实际参数和数组形式参数配合使用(大多数情况下使用数组名称)数组作为形式参数使用时可以省略中括号里的数字,但是必须要另外提供一个形式参数表示数组中存储区个数

数组形式参数并不是数组,而是一个可以当作数组使用的存储区

预习:

1、函数(数组形参,函数隐式声明和显示声明)

2、递归函数

3、变量的生命周期和作用域

4、程序的分段

5、声明变量时可以使用的关键字

作业:

1、编写函数解决鸡兔同笼问题,调用函数提供头和脚的个数,函数负责计算出兔

子的个数

2、编写程序在屏幕上打印如下内容

1x9=9

2x8=17

3x7=21

4x6=24

5x5=25

每行使用一个函数调用语句打印

Day10

Rabbit 兔子chicken 鸡

数组作为形式参数的时候,真正的形式参数并不是数组,而是一个可以作为数组使用的单个存储区

函数调用的时候,这个真正的形式参数只记录了一个地址数据

数组形式参数的名称代表了这个存储区

数组作为形式参数的时候,数组名称所代表的存储区主人是被调用函数,数组里所包含的所有存储区主人一定不是被调用函数

使用数组形式参数可以让被调用函数使用其他主人的存储区

使用数组作为形式参数可以让调用函数和被调用函数共用同样的存储区

使用数组形式参数可以实现双向数据传递,这个参数叫输入输出参数

普通变量作为形式参数只能吧数组从调用函数传递给被调用函数,这个参数叫输入参数

被调用函数可以通过数组形参改变调用函数里的数组的数据

函数可以分成函数声明和函数体(大括号里的叫函数体,大括号前的叫函数声明)函数声明可以独立作为一条语句,这个时候可以省略所有形式参数的名称

当编译器首先遇到函数调用语句时会猜测函数的格式,这个猜测的结果叫函数的隐式声明

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

目录 第一章操作系统概论 (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)网络通信管理

计算机操作系统教学大纲

《计算机操作系统》课程教学大纲 一. 课程名称 操作系统原理 二. 学时与学分 学时共64学时(52+12+8) 其中,52为理论课学时,12为实验学时,8为课外实验学时 学分 4 三. 先修课程 《计算机组成原理》、《C语言程序设计》、 《IBM—PC宏汇编程序设计语言》、《数据结构》 四. 课程教学目标 通过本课程的学习,要达到如下目标: 1.掌握操作系统的基本原理与实现技术,包括现代操作系统对计算机系统资源的管理策略与方法、操作系统进程管理机制、现代操作系统的用户界面。 2.了解操作系统的结构与设计。 3.具备系统软件开发技能,为以后从事各种研究、开发工作(如:设计、分析或改进各种系统软件和应用软件) 提供必要的软件基础和基本技能。 4.为进一步学习数据库系统、计算机网络、分布式系统等课程打下基础。 五. 适用学科专业 信息大类各专业

六. 基本教学内容与学时安排 主要内容: 本课程全面系统地阐述计算机操作系统的基本原理、主要功能及实现技术,重点论述多用户、多任务操作系统的运行机制;系统资源管理的策略和方法;操作系统提供的用户界面。讨论现代操作系统采用的并行处理技术和虚拟技术。本书以Linux系统为实例,剖析了其特点和具体的实现技术。 理论课学时:52学时 (48学时,课堂讨论2学时,考试2学时) ?绪论4学时 ?操作系统的结构和硬件支持4学时 ?操作系统的用户界面4学时 ?进程及进程管理8学时 ?资源分配与调度4学时 ?存储管理6学时 ?设备管理4学时 ?文件系统6学时 ?Linux系统8学时 七、教材 《计算机操作系统》(第2版),庞丽萍阳富民人民邮电出版社,2014年2月 八、考核方式 闭卷考试

广工_操作系统_课程设计_源代码

课程设计 课程名称________操作系统___ ____ 题目名称_多用户多级目录文件系统的实现_ 学生学院________计算机学院____________ 专业班级______ _________ 学号________ ___________ 学生姓名_________ _____________ 指导教师__________林穗______________ 2011年1月18日

广东工业大学课程设计任务书 题目名称多用户多级目录文件系统的实现 学生学院计算机学院 专业班级08软件工程一班 姓名 学号 一、课程设计的内容 本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 二、课程设计的要求与数据 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。 2.文件物理结构可采用显式链接或其他方法。 3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。 5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login (用户登录)

(2)系统初始化(建文件卷、提供登录模块) (3)文件的创建:create (4)文件的打开:open (5)文件的读:read (6)文件的写:write (7)文件关闭:close (8)删除文件:delete (9)创建目录(建立子目录):mkdir (10)改变当前目录:cd (11)列出文件目录:dir (12)退出:logout 6.系统必须可实际演示,选用程序设计语言:C++、C等。 三、课程设计应完成的工作 1.充分理解设计的任务,完成设计的基本要求。然后根据自己的基础和能力选择不同难度的算法和实现方式,以取得更高的分数。 2. 独立独立完成系统的分析、设计、编码、测试工作。 3.完成设计报告的撰写。 4.以光盘(以班为单位刻录)方式提交已调试通过的完整的相关源程序和能够运行的执行文件;提交“课程设计报告”的书面和电子两种版本。 四、课程设计进程安排

操作系统概论复习大纲

操作系统概论自学考试大纲 第一章引论 (一)内容简介 本章介绍了学习操作系统必须先掌握的一些基础知识,包括以下几部分内容: 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三个作业在等待处理,它们到达系统的时间和估计需计算的时间如下表所示: 法调度时各自的等待时间和完成时间。

操作系统课程教学大纲

GDOU-B-11-213 《操作系统》课程教学大纲 课程简介 课程简介: 本课程主要讲述操作系统的原理,使学生不仅能够从系统内部了解操作系统的工作原理,而且可以学到软件设计的思想方法和技术方法。主要内容 包括:操作系统的概论;操作系统的作业管理;操作系统的文件管理原理; 操作系统的进程概念、进程调度和控制、进程互斥和同步等;操作系统的各 种存储管理方式以及存储保护和共享;操作系统的设备管理一般原理。其次 在实验环节介绍实例操作系统的若干实现技术,如:Windows操作系统、Linux 操作系统等。 课程大纲 一、课程的性质与任务: 本课程计算机学科的软件工程专业中是一门专业方向课,也可以面向计算机类的其它专业。其任务是讲授操作系统的原理,从系统内部了解操作系统的工作原理以级软件设计的思想方法和技术方法;同时介绍实例操作系统的若干实现技术。 二、课程的目的与基本要求: 通过本课程的教学使学生能够从操作系统内部获知操作系统的工作原理,理解操作系统几大管理模块的分工和管理思想,学习设计系统软件的思想方法,通过实验环节掌握操作系统实例的若干实现技术,如:Windows操作系统、Linux操作系统等。 三、面向专业: 软件工程、计算机类 四、先修课程: 计算系统基础,C/C++语言程序设计,计算机组成结构,数据结构。 五、本课程与其它课程的联系:

本课程以计算系统基础,C/C++语言程序设计,计算机组成结构,数据结构等为先修课程,在学习本课程之前要求学生掌握先修课程的知识,在学习本课程的过程中能将数据结构、计算机组成结构等课程的知识融入到本课程之中。 六、教学内容安排、要求、学时分配及作业: 第一章:操作系统概论(2学时) 第一节:操作系统的地位及作用 操作系统的地位(A);操作系统的作用(A)。 第二节:操作系统的功能 单道系统与多道系统(B);操作系统的功能(A)。 第三节:操作系统的分类 批处理操作系统(B);分时操作系统(B);实时操作系统(B)。 第二章:作业管理(2学时) 第一节:作业的组织 作业与作业步(B);作业的分类(B);作业的状态(B);作业控制块(B)。 第二节:操作系统的用户接口 程序级接口(A);作业控制级接口(A)。 第三节:作业调度 作业调度程序的功能(B);作业调度策略(B);作业调度算法(B)。 第四节:作业控制 脱机控制方式(A);联机控制方式(A)。 第三章:文件管理(8学时) 第一节:文件与文件系统(1学时) 文件(B);文件的种类(B);文件系统及其功能(A)。 第二节:文件的组织结构(1学时) 文件的逻辑结构(A);文件的物理结构(A)。 第三节:文件目录结构(1学时) 文件说明(B);文件目录的结构(A);当前目录和目录文件(B)。 第四节:文件存取与操作(1学时) 文件的存取方法(A);文件存储设备(C);活动文件(B);文件操作(A)。 第五节:文件存储空间的管理(2学时) 空闲块表(A);空闲区表(A);空闲块链(A);位示图(A)。 第六节:文件的共享和保护(2学时)

02323操作系统概论2012年4月自考试题及答案

全国2012年4月高等教育自学考试 操作系统概论试题 课程代码:02323 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个选项是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.操作员接口是操作系统为用户提供的使用计算机系统的手段之一,该接口是指()A.一组操作控制命令B.一组系统调用程序 C.一条访管指令D.一条I/O指令 2.在一个能提供多个用户同时直接输入、调试和运行自己程序的计算机系统中应配置() A.批处理操作系统B.分时操作系统 C.实时操作系统D.嵌入式操作系统 3.多道程序系统指的是() A.在实时系统中同时运行多个程序 B.同一时刻在一个处理器上运行多个程序 C.在网络系统中同时运行多个程序 D.在一个处理器上并发运行多个程序 4.进程有若干属性,它们是() A.进程是静态的、有多种状态;多个进程可以对应于相同的程序 B.进程是动态的、只有一种状态;多个进程可以对应于相同的程序 C.进程是动态的、有多种状态;多个进程不可以对应于相同的程序 D.进程是动态的、有多种状态;多个进程可以对应于相同的程序 5.控制进程的原语中,创建原语的功能是() A.分配工作区、建立进程控制块、置进程为运行态 B.分配工作区、建立进程控制块、置进程为就绪态 C.分配工作区、建立进程控制块、置进程为等待态 D.分配工作区、建立进程控制块、置进程为挂起态 6.操作系统会按若干原因选择进程运行,不是 ..立即进入操作系统进行进程选择的情况是() A.运行进程的时间片用完B.运行进程出错 C.运行进程要等待某一事件发生D.有新进程进入就绪状态 7.基址寄存器和界限寄存器是属于() A.指令寄存器B.通用寄存器 C.控制寄存器D.时钟寄存器

操作系统概论重点整理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)虚拟:指通过某种技术把一个物理实体变成若干逻辑上的对应物;

操作系统课程设计2014教学大纲

《操作系统课程设计》大纲 一、设计目的和要求 目的:本课程设计是为配合计算机相关专业的重要专业课《操作系统》而开设的,其主要内容是让学生实际进行操作系统功能模块的设计和编程实现。通过本课程设计的实施,使学生能将操作系统的概念具体化,并从整体和动态的角度去理解和把握操作系统,以巩固和补充操作系统的原理教学,提高学生解决操作系统设计及实现过程中的具体问题的能力。 要求:通过本课程设计的实施,要求培养学生以下能力: (1)培养学生在模拟条件下与实际环境中实现功能模块和系统的能力:课程设计要求学生实际进行操作系统功能模块的设计和编程实现,具体包括:基于线程的多任务调度系统的设计与实现;一个简单文件系统的设计与实现。 (2)培养学生设计和实施工程实验的能力,合理分析试验结果的能力:学生在完成项目的过程中,需要进行实验设计、程序调试、错误分析,从而熟悉实验设计方法及实验结果的分析方法。 (3)培养学生综合运用理论和技术手段设计系统和过程的能力:学生需根据设计项目的功能要求及操作系统原理的相关理论提出自己的解决方案,需考虑项目实现的软硬件环境,设计相关数据结构及算法,在实现过程中发现解决方案的问题并进行分析改进。 (4)培养学生分析并清楚阐述设计合理性的能力:要求学生在项目上机验收和实验报告中分析阐述设计思路的合理性和正确性。 (5)培养学生的组织管理能力、人际交往能力、团队协作能力:课程设计分小组进行,每个小组有一个组长,负责组织本组成员的分工及合作。 二、设计学时和学分 学时:32 ;学分:1 三、设计的主要内容 以下三个题目中:1、2中选做一题,第3题必做。 1、基于线程的多任务调度系统的设计与实现 (1)线程的创建、撤消和CPU切换。 掌握线程的定义和特征,线程的基本状态,线程的私有堆栈,线程控制块TCB,理解线程与进程的区别,实现线程的创建、撤消和CPU切换。 (2)时间片轮转调度 理解各种调度算法、调度的原因,完成时钟中断的截取,具体实现调度程序。 (3)最高优先权优先调度 理解优先权的概念,并实现最高优先权优先调度策略。 (4)利用记录型信号量实现线程的同步

广东工业大学 操作系统 真题 附答案

学院: 专业: 学号: 姓名: 装 订 线 广东工业大学考试试卷 ( A ) 课程名称: 操 作 系 统 考试时间: 第 周星期 ( 年 月 日) 题 号 一 二 三 四 五 总分 评卷得分 评卷签名 复核得分 复核签名 一、 填空题:(每空1分,共20分) 1. 操作系统有多种类型:(1)允许多个用户以交互方式使用计算机的操作系统,称 为 ;(2)允许多个用户将若干个作业提交给计算机系统集中处理的操作系统称为 ;(3)使计算机系统能及时处理由过程控制反馈的数据并作出响应的操作系统称为 。 2. 进程是对正在运行程序的一次抽象。有时进程必须相互作用,这种相互作用会导致 竞争条件,为了避免竞争条件,OS 引进了 的概念,它是满足如下条件的一段代码: 在这段代码中某一时刻只有一个进程访问共享区域。 3. 产生死锁的原因是: ; 。 4. 固定式分区产生 零头,可变式分区产生 零头。 5. 四种I/O 控制方式是 、 、 、 和 。 6. 在设计I/O 软件时,一个关键的概念是 ,它的基本含义是应用程序 独立于具体使用的物理设备. 7. 文件的物理结构有三种: 、 、 。 8. 完成一个磁盘服务请求的总时间由 、 、 组成。 9. 在UNIX 系统中,可通过系统调用 来创建进程。

二、单项选择题:(每题1分,共10分)Array 1. 操作系统是对 ( ) 进行管理的软件。 A.软件 B.硬件 C.计算机资源 D.应用程序 1.分配到必要的资源但未获得处理机时的进程状态是 ( ) 。 A.就绪状态 B.执行状态 C.阻塞状态 D.撤销状态 2.( )是操作系统中最重要、最基本的概念之一,它是系统分配资源的基本单位, 是一个具有独立功能的程序段对某个数据集的一次执行活动。 A. 程序 B. 作业 C. 进程 D. 线程 3.下面 ( ) 算法不是进程调度算法。 A.LRU B.FCFS C.SJF D.HPF 4.关于存储器管理,以下说法错误的是()。 A.虚拟存储器是由指令的寻址方式所决定的进程寻址空间,由内外存共同组成。 B.覆盖、交换、请求式调入和预调入都是操作系统控制内存和外存数据流动的方式。 C.内存信息保护方法有:上下界保护法、保护键法、软件法等。 D.内存分配算法中,最佳适应算法比首次适应算法具有更好的内存利用率。 5.位示图法可用于()。 A.文件目录的查找 B.分页式存储管理中主存空闲块的分配和回收 C. 页式虚拟存储管理中的页面置换 D. 可变式存储管理中空闲区的分配和回收 6.现有三个作业同时到达,每个作业的计算时间均为2小时,它们在一台处理机上按单 道方式运行,则平均周转时间为() A.2小时 B.3小时 C.4小时 D.6小时 7.进程控制块是描述进程状态和特性的数据结构,一个进程()。 A.可以有多个进程控制块 B.可以和其他进程共用一个进程控制块 C.可以没有进程控制块 D.只能有惟一的进程控制块 8.在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区 合并,为此需修改空闲区表,造成空闲区数加1的情况是( ) A.无上邻空闲区,也无下邻空闲区 B.有上邻空闲区,但无下邻空闲区 C.有下邻空闲区,但无上邻空闲区 D.有上邻空闲区,也有下邻空闲区 9.用户程序通过系统调用creat来创建一新文件时,在执行creat()的过程中,用户进 程运行在下。 A.系统态 B.用户态 C.系统态或用户态 D.目态 三、判断题(每题 1 分,共 10 分) 1.实时系统在响应时间、可靠性及交互作用能力等方面一般都比分时系统要求高。() 2.多个进程可以对应于同一个程序,且一个进程也可以执行多个程序。() 3.系统处于不安全状态也可能不会产生死锁。( ) 4.虚拟存储器是一个假想的地址空间,因而这个地址的大小是没有限制的。() 5.设备独立性是指系统具有使用不同设备的能力。() 6.隐式链接结构可以提高文件存储空间的利用率,但不适合文件的随机存取。() 7.为了提高磁盘对换空间的利用率,一般对其使用离散的分配方式。( ) 8.线程是调度的基本单位,但不是资源分配的基本单位。( ) 9.访问控制矩阵比访问控制表更节约空间。( ) 10.在UNIX文件系统中,文件的路径名和磁盘索引结点之间是一一对应的。( )

操作系统概论历年真题

浙江省2003年7月高等教育自学考试 操作系统概论试题 课程代码:02323 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在 题干的括号内。每小题2分,共20分) 1. 允许多个用户以交互方式使用计算机的操作系统,称为( )。 A. 批处理操作系统 B. 分时操作系统 C. 实时操作系统 D. 多处理机操作系统 2. 正在执行的进程由于其时间片用完而被暂停运行,此时其进程应从运行态变为( )态。 A. 就绪 B. 等待 C. 运行 D. 后备 3. 在请求页式存储管理中,当查找的页不在( )中时,要产生缺页中断。 A. 外存 B. 虚存 C. 内存 D. 地址空间 4. 在段页式系统中(无快表),为获得一条指令或数据,必须( )访问内存。 A. 1次 B. 2次 C. 3次 D. 4次 5. 文件系统最基本的目标是( )。 A. 按名存取 B. 文件共享 C. 文件保护 D. 提高对文件的存取速度 6. 从使用的角度来分析设备的特性,可以把设备分成_____和_____两类。( ) A. 物理设备和逻辑设备 B. 独占设备和共享设备 C. 低速设备和高速设备 D. 绝对设备和相对设备 7. 设备控制器是_____与_____之间的接口。( ) A. 处理器与通道 B. 处理器与内存 C. 处理器与设备 D. 通道与内存 8. 最有利于提高系统吞吐量的作业调度算法是( )。 A. 先进先出算法 B. 优先级调度算法 C. 时间片轮转算法 D. 短作业优先调度算法 9. 在非抢占调度方式下,运行进程执行V原语后,其状态( )。 A. 不变 B. 要变 C. 可能要变 D. 可能不变 10. 多个进程间可通过P、V操作交换信息实现同步和互斥,因此信号量机制是进程间的一 种( )。 A. 高级通信方式 B. 低级通信方式 C. 消息缓冲通信方式 D. 管道通信方式 二、判断题(判断下列各题,对的打“√”,错的打“╳”。每小题2分,共20分) 11.允许用户把若干个作业提交计算机系统集中处理的OS称为批处理OS。( ) 02323# 操作系统概论试题第1 页共3页

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

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

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

操作系统课程教学网站论文

摘要 通过操作系统教学网站的建设,完成了对于操作系统课程的远程化授课。可以使学生不受时间空间的限制,通过网络对于这门课程进行学习。建立起了基于B/C的网络化教学系统。本网站采用当前最流行的JSP网络编程技术,可以实现数据的高效、动态、交互访问,具有强大的Server/Client交互能力。本文中所做的主要工作:介绍Win2000 +JSP(J2DK+TOMCAT)系统并且嵌入 JAVABEAN的一般原理;阐述整个操作系统教学网站的概要设计,系统结构及工作原理;分析了系统实现中的特殊性、难点和重点;详细设计实现学院介绍、教学资源、课程表、课堂教学、在线答疑、其他课程、课件下载、留言反馈、自我测试、成绩管理、站内搜索、公告专栏、友情链接、校园风景、新闻中心、栏目导航等程序模块;各个模块的具体实现,且分析并解决实现中的若干技术问题;建立完整的实验网站,进行测试并分析结果。 关键字: JAVABEAN JSP 交互访问 JAVASCRIPT JDBC

Abstract Through the operating system teaching website construction, completed long-distance has taught regarding the operating system curriculum, was allowed to cause the student without the time space limit, and carried on the study through the network regarding this curriculum. Established based on the B/C network teaching system. This website uses the current most popular JSP network programming technology, may realize the data to be highly effective, dynamically, alternately visits, and has the formidable Server/Client interactive ability. In this article does main work: Introduced Win2000 +JSP (J2DK+TOMCAT) the system and to insert JA V ABEAN the general principle; Elaborates the entire operating system teaching website outline design, the system structure and the principle of work; Has analyzed in the system realization particularity, the difficulty and key; The detailed design realization institute introduced, in the teaching resources, the class schedule, the classroom instruction, the on-line Q/A, other curricula, class downloading, the message feedback, the self- test, the result management, the station search, program module and so on announcement column, friendship link, campus scenery, news center, column navigation; Each module concrete realization, also in analysis and solution realization certain technical questions; The establishment integrity experimental website, carries on the test and the analysis result. Key words: JA V ABEAN JSP alternately visits JA V ASCRIPT JDBC

数据库实验报告大全 广工 蔡延光版

自动化学院自动化专业班学号 姓名实验时间2011.3.14 教师评定 实验题目数据定义 实验报告一 一、实验目的与要求 目的:使用SQL语言实现数据库的创建、删除;基本表的创建、删除、更新工作;以及索引的创建、删除工作。 要求:1、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、DROP 命令实现数据库的创建及删除工作。 2、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表的创建、更新、删除工作,并实现基本表中各类完整性约束条件的限定。 3、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表中索引的创建、更新、删除工作。 4、完成上述工作后,在SQL SERVER 2000企业管理器中,查看是否成功创建实验所要求数据库、基本表、各类完整性约束条件及索引等内容。 二、实验方案 所有实验内容必须在SQL Server 2000的查询分析器中完成,设置查询分析器的结果区为Standard Execute(标准执行)或Executed Grid(网格执行)方式.发布执行命令.并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。要求完成如下内容: 1.定义数据库 定义一个借阅数据库,要求所定义的数据库大小为1M,且数据库名称为Labery_学号。 2.定义下列数据库基本表 在所定义的借阅数据库Labery_学号中,按要求定义如下数据库表: 1)书(book)

列名别名类型及长度是否可为空书号bno char(8)否 类别category varchar(10)否 书名title varchar(40)否 出版社press varchar(30)是 年份book_year Int否 作者author char(20)是 价格price decimal(7,2)否 总藏书量book_total Int否 2)借书证(card) 列名别名类型及长度是否可为空卡号cno char(7)否 姓名name char(8)否 单位department varchar(40)是 类别type char(1)否 3)借书记录(borrow) 列名别名类型及长度是否可为空卡号cno char(7)否 书号bno char(8)否 借书日期borrow_date smalldatetime否 还书日期return_date smalldatetime是 3.完整性约束条件: 主要内容为: 1)确定各基本表的主码; 2)确定各基本表的外码; 3)要求在定义各基本表的同时,确定如下完整性约束条件 1、定义各基本表主码,并且要求主属性不能为空; 2、如果有外码,定义各基本表外码; 3、要求检查借书证中属性Type的值是否为('T','G','U','F')); 4、借书记录borrow基本表中borrow_date默认日期为当前时间。4)确定各基本表哪些字段需要建立索引。

2016年4月全国自考《操作系统概论》真题及答案

2016年4月全国自考《操作系统概论》真题 (总分100, 考试时间90分钟) 1. 单项选择题 1. 以下操作系统中,属于自由软件的操作系统是 A MS-DOS B Windows98 C UNIX D Linux 答案:D 2. 非特权指令运行在 A 管态 B 目态 C 操作系统核心层 D 硬件固化层 答案:B 3. 在单处理机的计算机系统中,整个系统用于存放程序状态字的寄存器数量应该是 A 1个 B 2个 C 3个 D 当前运行程序的个数 答案:A 4. 为一个程序分配一个工作区和建立一个进程控制块,并置进程为就绪态,这个操作的原语是 A 撤销原语 B 创建原语 C 阻塞原语 D 唤醒原语 答案:B 解析:用于控制进程的原语有: (1)创建原语。为一个程序分配一个工作区和建立一个进程控制块,并置该进程为就绪状态。 (2)撤销原语。一个进程完成工作后,收回它的工作区和进程控制块 (3)阻塞原语。进程运行过程中发生等待事件时,把进程状态改为等待态。 (4)唤醒原语。当进程等待的事件发生时,把进程的状态改为就绪态。 5. 下列不属于进程特性的是 A 多样性 B 动态性 C 并发性 D 异步性 答案:A 解析:进程具有以下三个特性: (1)动态性。进程是程序的一次执行过程,在执行过程中进程状态不断发生变化。 (2)并发性。若干进程是可同时执行的,它们轮流占用处理器交替执行。 (3)异步性。进程的执行速度取决于自身与外界原因以及进程调度策略,因此以不可预知的速度向前推进。 6. 分时操作系统中,经常采用的进程调度算法是 A 短作业优先调度算法 B 先来先服务调度算法 C 最高优先级调度算法 D 时间片轮转调度算法 答案:D 7. 不可能被共享的存储器是 A 寄存器

操作系统教学计划.doc

操作系统 一、说明 (一)课程性质 本课程是计算机科学与技术专业的核心课程之一,属于必修课程。 “操作系统”是计算机系统不可缺少的组成部分,负责对系统中各种资源进行有效的管理和对各种活动进行正确的组织,使整个计算机系统协调一致且高效地工作,指挥计算机系统正常运行。操作系统基于硬件,并对硬件实施管理,并构成对所有软件运行的支持平台,给用户使用计算机而提供方便灵活友好的接口。 本课程的先修课为计算机组成原理、微机原理、数据结构、高级语言程序设计;后续课程为数据库系统原理、计算机网络、分布式系统等。 (二)教学目的 通过本课程的学习,使学生在深刻理解计算机系统整体概念的基础之上,掌握操作系统的基本内容及实现方法,掌握操作系统对计算机系统中各种资源的管理和控制功能,从而使学生具备一定的系统软件开发技能,为以后从事的研究、开发工作(如设计、分析或改进各种系统软件和应用软件)提供必要的软件基础和基本技能。 (三)教学内容 本课程内容包括:绪论,是对操作系统的一般性描述,包括什么是操作系统,操作系统在整个计算机系统的地位及其发展历史,它的功能、分类等;作业管理和linux用户接口,介绍作业和操作系统用户接口,包括作业的基本概念和作业的建立过程、linux介绍和它所提供的用户接口等;进程管理,主要介绍进程和线程的概念、进程控制、进程同步/互斥、死锁、进程间通信、线程等;处理机调度,主要介绍作业调度、进程调度、各种调度算法及其评价等;存储管理,介绍常见存储管理的方法,虚拟存储管理的实现等;linux进程和存储管理;文件系统,包括文件系统的概念、文件结构和文件存取、文件目录管理、linux文件管理等;设备管理;面向对象的操作系统和分布式操作系统。 (四)教学时数 课内学时:72 (五)教学方式 本课程的教学环节包括:课堂讲授、习题课、课堂讨论、批改作业、课外辅导、实验相结合,并逐步采用cai、网络教学等教学手段。通过本课程各个教学环节的教学,重点培养学生的自学能力、分析问题解决问题的能力。 教学方法:采用启发式教学,鼓励学生自己针对某种操作系统进行分析和研究,培养学生的自学能力,以“少而精”为原则,精选教学内容,精讲多练,调动学生学习的主观能动性。教学手段:开展电子教案、cai课件的研制、引进和应用,研制多媒体教学系统。 考试环节:考试形式采用笔试,考试题型分为:填空题、选择题、判断题、简答题、分析设计题。 二、本文 第1章绪论 教学要点: 操作系统的概念及其发展历史、分类,操作系统功能,研究操作系统的观点。本章是对操作系统的一般性描述。 教学时数:4学时 1.1 操作系统概念(0.5学时) 掌握操作系统的概念及其在计算机系统中的作用。 1.2 操作系统的发展历史(1学时)

2015广工操作系统实验报告(文档最后含源码下载地址)

操作系统实验报告 学生学院____ 计算机学院______ 专业班级13级计科9 学 号 学生姓名 指导教师 李敏 2015年12月29日

实验一进程调度实验 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。 二、实验内容和要求 设计一个有N个进程共行的进程调度程序。要求采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程),时间片轮转算法,多级反馈队列调度算法这三种算法。 每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。 重复以上过程,直到所要进程都完成为止。 三、实验主要仪器设备和材料 实验环境 硬件环境:IBM-PC或兼容机 软件环境:C++、C语言编程环境 四、实验方法 1、编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。 “最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。 静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。 动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。 例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。 2、编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。 简单轮转法的基本思想是:所有就绪进程按FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还为完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直至所有的进程运行完毕。 3、多级反馈队列调度算法的基本思想是:

相关文档
相关文档 最新文档