软考网络工程师--操作系统考点

考点一:PV操作

(1)进程概述和进程状态

进程是一个程序关于某个数据集的一次运行,通俗的说,当打开了两个“QQ”时,其程序是一个,但是创建两个互不相关的进程。进程是运行中的程序,具有动态性和并发性的特点。进程也是系统资源分配、调度、管理的最小单位(现在操作系统中还引入了线程钟,即轻量级进程,它是处理器分配的最小单位)。

一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以刻画。为了便于管理进程,把进程划分为三种状态。进程的运行态、就绪态、阻塞态。

一个进程在创建后将处于就绪状态,在执行过程中,每个进程任一时刻当且仅当处于上面三种状态之一,同时,在一个进程执行过程中,他的状态将会发生改变。

运行状态的进程将由于出现等待事件而进入等待状态,当等待事件结束之后等待状态的进程将进入就绪状态,而处理器的调度策略又会引起运行状态和就绪状态之间的切换。引起进程状态转换的具体原因如下所示:

在操作系统中通常使用进程控制块(PCB)来标记进程,因此从某种意义上来说进程由进程控制块、程序、数据构成。

(2)信号量与P、V操作

在操作系统中,进程之间经常会存在互斥(都需要共享独占性资源)和同步(完成异步的两个进程的协作)两种关系。为了有效地处理这两种情况则提出了信号量和P、V操作的概念。

信号量:一种特殊的变量,表现形式是一个整形S和一个队列。

P操作:也称为down()、wait()操作,是S=S-1,若S<0,进程暂停执行,放入信号量的等待队列。

V操作:也称为up()、signal()操作,是S=S+1,若S<=0,唤醒等待队列中的一个进程。

信号量、P操作、V操作的结合常见一下四种情况:

  • 完成互斥控制

这也是一种保护共享资源,不让多个进程同时访问这个共享资源,就是阻止多个进程同时进入访问资源的代码段,这个代码段称为临界点(也称为管程),而一次仅允许一个进程访问的资源称为临界资源,临界区的代码:

P(信号量)

临界区

V(信号量)

信号量中整型值得初始值应为1,该值表示允许多少个进程进入。当值<0时,则绝对值就是等待使用的进程数,也就是等待队列中的进程数。而当一个进程从临界区出来时,会将整型值加1,如果等待队列中还有进程,则调入一个新的进程进入。

  • 完成同步控制

最简单的同步形式是:进程A在另一个进程B到达L2以前,不应前进到超过点L1,则使用程序:

进程A            进程B

.......               .......

L1:P(信号量)   L2:V(信号量)

.......               .......

因此要确保进程B执行V操作之前,不让进程A的运行超过L1,信号量的初始值就应该为0,如果进程A先执行到L1,执行P操作后,信号量的整型值就会小于1,停止执行。直到进程B执行到L2时,将信号量的整型值减1,并唤醒它以继续执行。

  • 生产者-消费者问题

生产者--消费者问题不仅要解决生产者进程与消费者进程的同步关系,还要处理缓冲区的互斥关系,因此通常需要三个信号量来实现。其中,两个用来管理同步:empty信号量(说明空闲的缓冲区数量,其初始值应为0)。另一个mutex信号量用来管理互斥,保证同时只有一个进程在写缓冲区(初始值应为1)

生产者     消费者

loop         loop

......          ......

生产一个产品;P(full);

P(empty); P(mutex);

P(mutex);从缓冲区中取一个产品;

将新产品放入缓冲区;V(mutex);

V(mutex);V(empty);

V(full);使用产品;

.......            .....

Endloop endloop

注:如果对缓冲区的读写无需进行互斥控制的话,那么就可以省去mutex信号量。

  • 阅读者-写入着问题

假设有一个数据集被多个并行进程共享,其中有些进程只是读这个数据集,而有些进程则需要修改这个数据集的内容。这里存在着一个什么样的并发关系呢?读者相互不影响,但写入者则是互斥访问的。因此,解决这个问题的最简单的方法是:当没有写入者在访问共享数据集时,阅读者可以进入访问,否则必须等待。下面则是一个读者优先的解法(其中信号量 access 用来控制写入互斥;而信号量rc则用来控制rc(读者统计值)得互斥访问。

阅读者    写入者
loop       loop
P(rc)    ...
ReaderCount=ReaderCount+1;   P(access);
if (ReaderCount==1)   修改数据;
P(access);   V(access);
V(rc);      ...
访问数据;   endloop
P(rc);
ReaderCount=ReaderCount-1;
IF   (ReadCount ==0)
V(access);
V(rc);
...
Endloop

  • 理解P、V操作

信号量与P、V操作是用来解决并发问题的,而在并发问题中最重要的是互斥与同步两个关系,也就是说,只要有这两个关系存在,信号量就有用武之地。因此,在解题时,应该先从寻找互斥与同步关系开始。这个过程可以套用简单互斥、简单同步、生产者一消费者、阅读者一写入者问题。
一般来说,一个互斥或一个同步关系可以使用一个信号量来解決,但要注意经常会忽略一些隐藏的同步关系。例如,在生产者一消费者问题中,就有两个同步关系,一是判断是否还有足够的空间给生产者存放产物,另一个是判断是否有足够的内容让消费者使用。
信号量的初始值通常表示资源的可用数。而且对于初始值为0的信号量,通常会先做V操作。
在资源使用之前,将会使用P操作。在资源用完之后,将会使用V操作。在互斥关系中,P、V操作是在一个进程中成对出现的。而在同步关系中,P、V操作则一定是在两个进程甚至多个进程中成对出现的。值得一提的是,操作系统还提供了一些高级通信原语,如 Write/Read,Send/Receive可以实现相同的功能,它们能够更好地补充P、V操作的不足,完成更多的功能。

考点二:进程死锁和银行家算法

进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一个不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁。

下面是造成系统死锁的四个必要条件。

①互斥条件:即一个资源每次只能被一个进程使用,在操作系统中这是真实存在的情況。

②保持和等待条件:有一个进程己获得了一些资源,但因请求其他资源被阻塞时,对已获得的资源保持不放。

③不可剥夺条件:有些系统资源是不可剥夺的,当某个进程已获得这种资源后系统不能强行收回,只能由进程使用完时自己释放。

④环路等待条件:若干个进程形成环形链,每个都占用对方要申请的下一个资源。
对于这些内容,关键在于融会贯通地理解与应用,通常都会涉及到银行家算法。所谓银行家算法,是指在分配资源之前,先看清楚,如果资源分配下去后,是否会导致系统死锁。如果会死锁,则不分配,否则就分配。

在了解了进程死锁和银行家算法之后,接下来我们了解下解决死锁的策略:

①死锁预防:“解铃还需系铃人”,随便破坏导致死锁的任意一个必要条件就可以预防死锁。例如:要求用户申请资源时一次性申请所需要的全部资源,这样就破坏了保持和等待条件。将资源分层,得到上一层资源后,才能够申请下一层资源,它破坏了环路等待条件。预防通常会降低系统的效率。

②死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全,典型算法是银行家算法。但这种算法会增加系统的开销。

③死锁检测:前两者是事前措施,而死锁的检测则是判断系统是否处于死锁状态,如果是,则执行死锁解除策略。

④死锁解除:这是与死锁检测结合使用的,它使用的方式就是剥夺。即将某进程所拥有的资源强行收回,分配给其他的进程。

考点三:文件的组织架构

文件控制块的集合称为文件目录,文件目录也被组织成文件,常称为目录文件。
文件管理的一个重要方面是对文件目录进行组织和管理。文件系统一般采用一级目录结构、二级目录结构和多级目录结构。DOS、UNIX、 Windows系统都采用多级树型目录结构。
在多级树型目录结构中,整个文件系统有一个根,然后在根上分枝,任何一个分枝上都可以再分枝,枝上也可以长出树叶。根和枝称为目录或文件夹。而树叶则是一个个的文件。实践证明,这种结构的文件系统效率比较高。例如,如图所示的就是一个树型目录结构,其中方框代表目录,圆形代表文件。

在树型目录结构中,树的根结点为根目录,数据文件作为树叶,其他所有目录均作为树的结点。系统在建立每一个目录时,都会自动为它设定两个目录文件,一个是“.”,代表该目录自己;另一个是“..”,代表该目录的父目录。对于根目录,“.”和“..”都代表其自己。

从逻辑上讲,用户在登录到系统中之后,每时每刻都处在某个目录之中,此目录被称作工作目录或当前目录,工作目录是可以随时改变的。
对文件进行访问时,需要用到路径的概念。路径是指从树型目录中的某个目录层次到某个文件的一条道路。在树型目录结构中,从根目录到任何数据文件之间,只有一条唯一的通路,从树根开始,把全部目录文件名与数据文件名依次用“/”连接起来,构成该数据文件的路径名,且每个数据文件的路径名是唯一的。这样,可以解决文件重名问题,不同路径下的同名文件不一定是相同的文件。例如,在图中,根目录下的文件和/D1/W1目录下的文件f们可能是相同的文件,也可能是不相同的文件。
用户在对文件进行访问时,要给出文件所在的路径。路径又分相对路径和绝对路径。绝对路径是指从根目录开始的路径,也称为完全路径;相对路径是指从用户工作目录开始的路径。应该注意到,在树型目录结构中到某一确定文件的绝对路径和相对路径均只有一条。绝对路径是确定不变的,而相对路径则随着用户工作目录的变化而不断变化。
用户要访问一个文件时,可以通过路径名来引用。例如,在图中,如果当前路径是D1,则访问文件2的绝对路径是/D1/W2/f2,相对路径是W2/2。如果当前路径是W1,则访问文件2的绝对路径仍然是/D1/W2/2,但相对路径变为.W2/f2。
在 Windows系统中,有两种格式的文件,分别是FA1T32(FAT16)文件和NTFS文件。NTFS在使用中产生的磁盘碎片要比FAT32少,安全性也更高,而且支持单个文件的容量更大,超过了4GB,特别适合现在的大容量存储。NTFS可以支持的分区(如果采用动态磁盘则称为卷)大小可以达到2TB。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被流放的波仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值