操作系统课程学习心得

操作系统课程学习心得

1 操作系统的功能:

操作系统通常有这几方面功能:任务管理、进程管理、作业管理、设备管理等等。

2 操作系统的应用:

操作系统是控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用。

3 操作系统的分类:

1、 按机型分:大型机、中、小型和微型机?? 2、 按用户数目分:单用户操作系统和多用户操作系统?? 3、 按功能特征分:批处理操作系统、实时操作系统、分时操作系统。 4 操作系统的作业调度,进程调度的关系:

高级调度:又称作业调度。其主要功能是根据一定的算法,从输人的一批作业中选出若干个作业,分配必要的资源,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程(如输人、输出进程),最后把它们的程序和数据调人内存,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作。

低级调度:又称进程调度。其主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。执行低级调度功能的程序称做进程调度程序,由它实现CPU在进程间的切换。进程调度的运行频率很高,在分时系统中往往几十毫秒就要运行一次。进程调度是操作系统中最基本的一种调度。在一般类型的操作系统中都必须有进程调度,而且它的策略的优劣直接影响整个系统的计能。????

5 操作系统中断的分类与中断的地位:

中断分类 (1)按中断处理方式,可分为简单中断和程序中断。简单中断采用周期窃用的方法来执行中断服务,有时也称数据通道或DMA;程序中断不是窃用中央处理机的周期来进行中断处理,而是中止现行程序的执行转去执行中断服务程序。

(2)按中断产生的方式,中断可分为自愿中断和强迫中断。自愿中断即通过自陷指令引起中断,或称软件中断,例如程序自愿中断;强迫中断是一种随机发生的实时中断,如外部设备请求中断、故障强迫中断、实时时钟请求中断和数据通道中断等。

(3)按引起中断事件所处的地点,中断可分为内部中断和外部中断。外部中断也称为外部硬件实时中断,他由来自CPU某一引脚上的信号引起;内部中断也称软件指令中断,他是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的中断。

(4)根据微处理器内部受理中断请求的情况,中断可分为可屏蔽中断和不可屏蔽中断。凡是微处理器内部的中断触发器(或许中断允许触发器)能够拒绝响应的中断,称为可屏蔽中断;凡是微处理器内部的中断触发器(或许中断允许触发器)不能够拒绝响应的中断,称为不可屏蔽中断。 6 该课程对自己的影响及认识:

我觉得,学习了这么课后对自己的影响还是挺大的,知道了一些以前不知道的东西,而通过这课程自己也学到了很多东西,也觉的这些东西多以后踏上社会会有用处的。反正通过这课使自己更加认识了操作系统。

 

第二篇:操作系统课程实习题目

设计1 进程管理

1. 设计目的

加深对进程概念的理解,明确进程和程序的区别;进一步认识并发执行的实质;实现Linux中进程通信的两种方式:软中断和管道通信。

2. 设计内容

1) 进程的创建和控制

编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。每个进程在屏幕上显示一个字符,记录屏幕上的显示结果,并分析原因。修改以编写的程序,将每个进程输出一个字符改为每个进程输出一句话。

2) 进程的软中断通信

使用系统调用fork()创建两个子进程,使用系统调用signal()让父进程捕捉用alarm函数设置时钟的时间段终止时产生的信号,当捕捉到该信号后,父进程使用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出子进程被杀死信息后终止,父进程等待两个子进程终止后,输出父进程被杀死信息后终止程序。记录屏幕上的显示结果,并分析原因。

3) 进程的管道通信

使用系统调用pipe()建立一个管道;两个子进程分别向管道写信息,父进程则从管道读出来自子进程的信息,显示在屏幕上。

记录屏幕上的显示结果,并分析原因。

3. 系统调用函数说明、参数值及定义

1. Fork()

创建一个新进程进程int fork()

其中返回int取值意义如下:

正确返回:在父进程中返回子进程的进程号,在子进程中返回0

错误返回:-1

2. Lockf(int files,int function,long size)

用作锁定文件的某些段或者整个文件。

file:文件描述符;function:锁定和解锁,1表示锁定,0表示解锁;size:是锁定或解锁的字节数,若用0,表示从文件的当前位置到文件尾。

3. Signal(int sig, (*func) function)

进程控制软中断信号的处理。signal()会依照参数sig指定的信号编号来设置该信号的处理函数。

sig: SIGALRM: alarm()函数设置的时钟的时间段终止时产生的信号. 其它信号略

function:信号处理的一个函数地址。

4. kill(int pid,int sig)

向一个进程或一个进程组发信号,可以用来送参数sig指定的信号给参数pid指定的进程。 pid: pid>0 将信号传给进程号为pid的进程

其它略

signumber: 送给进程号为pid进程指定信号量

5. alarm(unsigned int seconds)

设置一个指定时间的计时器

seconds: 设置时间秒数

6. int pipe(int filedes[2])

filedes为整数数组名,在调用这个函数后,系统为通道分配的两个文件描述符将通过这个数组返回到用户进程中, filedes[1]是文件输出描述符, filedes[0]是文件输入描述符

7. int wait(int *status)

暂停目前进程的执行,直到有信号到来或子进程的结束。子进程的结束状态指会由参数status返回,如果不在意结束状态时,则参数status可以设置成NULL

设计2 进程的同步与互斥

1. 设计目的

分析进程争用资源的现象,学习解决进程互斥的方法。

2. 设计内容

用程序实现生产者-消费者问题

? 问题描述:

一个仓库可以存放K件物品。生产者每生产一件产品,将产品放入仓库,仓库满了就停止生产。消费者每次从仓库中去一件物品,然后进行消费,仓库空时就停止消费。 ? 数据结构:

进程:Producer - 生产者进程,Consumer - 消费者进程

buffer: array [0..k-1] of integer;

in,out: 0..k-1;

in记录第一个空缓冲区,out记录第一个不空的缓冲区

s1,s2,mutex: semaphore;

s1控制缓冲区不满,s2控制缓冲区不空,mutex保护临界区;

初始化s1=k,s2=0,mutex=1

? 原语描述

producer(生产者进程):

Item_Type item;

{

while (true)

{

produce(&item);

p(s1);

p(mutex);

buffer[in]:=item;

in:=(in+1) mod k;

v(mutex);

v(s2);

}

}

consumer(消费者进程):

Item_Type item;

{

while (true)

{

p(s2);

p(mutex);

item:=buffer[out];

out:=(out+1) mod k;

v(mutex);

v(s1);

}

}

设计3 存储管理

1. 设计目的

通过请求页式存储管理中页面置换算法设计,了解存储技术的特点,掌握请求页式存储管理的页面置换算法。

2. 设计内容

? 将指令序列转换为用户虚存中的请求调用页面流。

i. 页面大小为1K

ii. 用户内存容量为4页到40页

iii. 用户外存的容量为40k

在用户外存中,按每K存放10条指令,400条指令在外存中的存放方式为:

0-9条指令为第0页

10-19条指令为第1页

。。。。。

390-399条指令为第39页

按以上方式,用户指令可组成40页

? 通过随机数产生一个指令序列,共400个指令(0-399)

? 模拟请求页式存储管理中页面置换算法

执行一条指令,首先在外存中查找所对应的页面和页面号,然后将此页面调入内存中,模拟并计算下列各述算法在不同内存容量下的命中率(页面有效次数/页面流的个数)

1) 先进先出的算法(FIFO)

2) 最久未使用算法(LRU)

3. 提示

? 随机指令的产生

rand() 或srand()

? 用户内存中页面控制结构采用链表

页面控制结构

struct p_str{

int pagenum; /* 页号 */

int count; /* 访问页面的次数 */ struct p_str next; /* 下一指针 */ }p_str;

 

第三篇:学习操作系统心得体会

学习操作系统心得体会

摘要:操作系统是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务

     转眼间,学习了一个学期的计算机操作系统课程即将结束。在这个学期中,通过老师的悉心教导,让我深切地体会到了计算机操作系统的一些原理和具体操作过程。

在学习操作系统之前,我只是很肤浅地认为操作系统只是单纯地讲一些关于计算机方面的操作应用,并不了解其中的具体操作过程和实用性。通过这一学期的学习,我才知道操作系统(Operating System,简称OS)是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。

    经过一个学期的学习,我也知道了计算机操作系统是铺设在计算机硬件上的多层系统软件,不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,由它实现了对计算机硬件操作的多层次的抽象。操作系统的一些原理在生活中也有所应用,以下是我通过这一学期的学习,把操作系统的一些原理联系生活所得的心得体会:

  1.生产—消费者问题

    在实际的操作系统操作过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。
  单单抽象出生产者和消费者,还够不上是生产者—消费者问题。该问题还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费者从缓冲区取出数据。
  为了理解这一问题,我们举一个寄信的例子。假设你要寄一封平信,大致过程如下:
  1、你把信写好——相当于生产者制造数据
  2、你把信放入邮筒——相当于生产者把数据放入缓冲区
  3、邮递员把信从邮筒取出——相当于消费者把数据取出缓冲区
  4、邮递员把信拿去邮局做相应的处理——相当于消费者处理数据
   2、银行家算法——避免死锁

    死锁的产生是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。我觉得操作系统所讲的死锁就好像两个人竟过独木桥,两辆车竟过单行桥等阻塞现象,原因是共享资源,即道路。

    为提高系统资源的利用率,避免死锁并不严格限制死锁必要条件的存在,而是在资源的动态分配过程中,使用某种方法去防止系统进入不安全状态,从而避免死锁的最终出现。然而,最有代表性的避免死锁的算法,是Dijkstra的银行家算法。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是安全的,才分配。

我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。为保证资金的安全,银行家规定:

(1)当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;

(2)顾客可以分期贷款,但贷款的总数不能超过最大需求量; 

(3)当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;

(4)当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金。

 另外,我们也可以把操作系统看作是建造房子,操作系统的资源看作是造房子的起吊机台数,进程向操作系统请求分配资源相当于建造房子时申请的起吊机台数。为保证工程的顺利进行,其操作过程如下:

1        当一栋房子对起吊机的最大需求量不超过建造房子现有的起吊机时可接纳该房子的建造;

1        所要建造的房子可以分开几次申请起吊机,但申请的起吊机的总数不能超过最大需求量;

1        当现有的起吊机台数不能满足某栋房子尚需的起吊机时,对该栋房子所需的起吊机数可推迟给予,但总能是房子在有限的时间里得到贷款;

1        当建造的房子得到所需的全部起吊机后,一定能在有限的时间里归还所有的起吊机数。

2        进程同步问题

    一个进程到达了确定的点后,除非另一些进程已经完成了某些操作,否则不得不停下来等待另一进程为它提供的消息,早未获得消息前,该进程处于等待状态,获得消息后被唤醒处于就绪状态,这就是进程同步。我们在生活中也可以找到相应的例子:

例如汽车司机和售票员,汽车司机负责开车、进站、开车门、关车门与进站;

售票员负责售票、进出站后观察车门,给司机发开关门信息;正常状态下,各自活动,司机开车,售票员售票;在进出站时双方要进行进程同步。

小结:

   总而言之,操作系统的一些原理在生活中都可以找到相应的例子。结合生活中的例子,可以化抽象为具体,我们会更加清楚地了解到其原理与操作过程。我觉得通过我们的不断学习,结合生活中的实际问题,我们就会把操作系统学得更好。

相关推荐