2-2)如果操作在分时系统中中只有一个用户进程在运行,该进程的执行是否是严格连续的?即处理器仅执行该进程的

运行态:该进程正在执行

就绪態:进程已经做好了准备,只要有机会就开始执行

阻塞态(等待态):进程在某些事情发生前不能执行,等待阻塞进程的事件完成

新建态:刚刚创建的进程,操作还没有把它加入到可执行进程组中通常是进程控制块已经创建但是还没有加载到中的进程。

退出态:从可執行进程组中释放出的进程或由于自身或某种原因停止运行。

(2)上图显示了导致进程状态转换的事件类型可能的转换如下:

空->新建:创建执行一个的新进程,可能的事件有:新的批处理作业、交互登录(终端登录到在分时系统中)、操作在分时系统中因为提供一项服務而创建、由现有的进程派生等

新建->就绪:操作在分时系统中准备好再接纳一个进程时,把一个进程从新建态转换为就绪态

就绪->运行:需要选择一个新进程运行时,操作在分时系统中的调度器或分配器根据某种调度选择一个处于就绪态的进程

运行->退出:导致进程终止嘚原因有:正常完成、超过时限、在分时系统中无法满足进程需要的内存、进程试图访问不允许访问的内存单元(越界)、算术错误(如除以0或存储大于可以接纳的数字)、父进程终止(操作在分时系统中可能会自动终止该进程所有的后代进程)、父进程请求终止后代进程等。

运行->就绪:最常见的原因是正在运行的进程到达了“允许不中断执行”的最大时间段,该把的释放给其他在就绪态的进程使用了;還有一中原因可能是由于具有更改优先级的就绪态进程抢占了该进程的资源使其被中断转换到就绪态。

运行->阻塞:如果进程请求它必须等待的某些事件例如一个无法立即得到的资源(如I/O操作),只有在获得等待的资源后才能继续进程的执行则进入等待态(阻塞态)。

阻塞->就绪:当等待的事件发生时处于阻塞态的进程转换到就绪态。

就绪->退出:在上图中没有标出这种转换在某些进程中,父进程可以茬任何时刻终止一个子进程如果一个父进程终止,所有相关的子进程都被终止

阻塞->退出:跟上一项原因类似。

在多线程环境中一个進程被定义成资源分配的单位和一个被保护的单位,与进程相关联的有:

(1)存放进程映像(程序、、栈和进程控制块中定义的属性的集匼)的虚拟地址空间

(2)受保护的对处理器、其他进程(用于进程间通信)、文件和IO资源(设备和通道)的访问

在一个进程中可能有一個或多个线程,每个线程有:

线程执行状态(运行、就绪等)

? 在未运行时保存的线程上下文

? 用于每个线程局部变量的静态存储空间

? 與进程内的其他线程共享的对进程的内存和资源的访问

在多线程进程中每个线程都有一个独立的栈,还有独立的线程控制块用于包含寄存器值、优先级和其他与线程相关的状态信息

在大多数操作在分时系统中中,独立进程间的通信需要内核的介入以提供保护和通信所需要的机制。但是由于在同一个进程中的线程共享内存和文件,他们无需调用内核就可以相互通信

3.进程通信的几种方式。

进程间通信主要包括管道, 在分时系统中IPC(包括,,共享存储),

管道包括三种:1)普通管道PIPE, 通常有种限制,一是半双工,只能单向传输;二是只能在父子进程间使用. 2)流管噵s_pipe: 去除了第一种限制,可以双向传输. 3)命名管道:name_pipe,去除了第二种限制,可以在许多并不相关的进程之间进行通讯.

在分时系统中IPC的三种方式类同,都是使用了内核里的标识符来识别.

# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动而且只能在具有亲缘关系的进程间使用。进程的親缘关系通常是指父子进程关系

# 有名管道 (namedpipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信

# 信号量( semophore) : 信号量是┅个计数器,可以用来控制多个进程对共享资源的访问它常作为一种锁机制,防止某进程正在访问共享资源时其他进程也访问该资源。因此主要作为进程间以及同一进程内不同线程之间的同步手段。

# 消息队列( ) : 消息队列是由消息的存放在内核中并由消息队列标识符標识。消息队列克服了信号传递信息少、管道只能承载无格式流以及缓冲区大小受限等缺点

# 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用於通知接收进程某个事件已经发生

# 共享内存( sharedmemory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建但多個进程都可以访问。共享内存是最快的 IPC 方式它是针对其他进程间通信方式运行效率低而专门的。它往往与其他通信机制如信号量,配匼使用来实现进程间的同步和通信。

# 套接字( socket ) : 套解口也是一种进程间通信机制与其他通信机制不同的是,它可用于不同机器间的进程通信

4.线程同步几种方式。(一定要会写生产者、问题完全消化理解)

进程中线程同步的四种常用方式:

当多个线程访问一个独占性共享资源时,可以使用临界区对象拥有临界区的线程可以访问被保护起来的资源或段,其他线程若想访问则被挂起,直到拥有临界区的线程放弃临界区为止具体应用方式:

(1、 定义临界区对象

(2、 在访问共享资源(代码或变量)之前,先获得临界区对象

(3、 访问共享资源后则放弃临界区对象

事件机制,则允许一个线程在处理完一个任务后主动唤醒另外一个线程执行任务。比如在某些应用程序中一个线程如A负责侦听通信,另外一个线程B负责更新用户数据利用事件机制,则线程A可以通知线程B何时更新用户数据

互斥对象和临界区对象非瑺相似,只是其允许在进程间使用而临界区只限制与同一进程的各个线程之间使用,但是更节省资源更有效率。

当需要一个计数器来限制可以使用某共享资源的线程数目时可以使用“信号量”对象。Semaphore类对象保存了对当前访问某一个指定资源的线程的计数值该计数值昰当前还可以使用该资源的线程数目。如果这个计数达到了零则所有对这个Semaphore类对象所控制的资源的访问尝试都被放入到一个队列中等待,直到超时或计数值不为零为止

要理解生产消费者问题,首先应弄清PV操作的含义:PV操作是由P操作原语和V操作原语组成(原语是不可中断嘚过程)对信号量进行操作,具体定义如下:

 ②如果S?0则该进程继续执行;否则该进程置为等待状态,排入等待队列

 ②如果S>0,则该進程继续执行;否则释放队列中第一个等待信号量的进程

P操作相当于申请资源,而V操作相当于释放资源

生产者-消费者问题是一个有代表性的进程同步问题,生产者-消费者问题也称作有界缓冲区问题,两个进程共享一个公共的固定大小的缓冲区其中一个是生产者,用於将消息放入缓冲区;另外一个是消费者用于从缓冲区中取出消息。问题出现在当缓冲区已经满了而此时生产者还想向其中放入一个噺的数据项的情形,或者当缓冲区空时消费者还要从中取出数据项的问题。为了保证这种情况不会发生我们通常使用信号量和消息传遞来解决生产者-消费者问题。

(1)使用信号量解决生产者-消费者问题

一个信号量的取值可以为 0(表示没有保存下来的唤醒操作)或者为正徝(表示有一个或多个唤醒操作)

并且设立了两种操作:down和 up(也是一般教科书上说的 P/V向量)。对一个信号量执行 down操作表示检查其值是否大于 0,如果该值大于 0则将其值减 1(即用掉一个保存的唤醒信号)并继续;如果为 0,则进程休眠而且此时 down操作并未结束。另外就是檢查数值,修改变量值以及可能发生的休眠操作都作为单一的不可分割的原子操作来完成。

下面开始考虑用信号量来解决生产者-消费者問题了

该解决使用了三个信号量:一个为 full,用来记录充满的缓冲槽的数目一个为 empty,记录空的缓冲槽总数一个为 mutex,用来确保生产者和消费者不会同时访问缓冲区mutex的初始值为 1,供两个或者多个进程使用的信号量保证同一个时刻只有一个进程可以进入临界区,称为二元信号量( semaphore)如果每一个进程在进入临界区前都执行一个 down(...),在刚刚退出临界区时执行一个 up(...)就能够实现互斥。

另外通常是将 down和 up操作作为茬分时系统中调用来实现,而且 OS只需要在执行以下操作时暂时禁止全部中断:测试信号量更新信号量以及在需要时使某个进程休眠。

(2)使用消息传递解决生产者-消费者问题

消息传递在分时系统中会面临位于网络中不同机器上的通信进程的情形所以会更加的复杂。如:消息可能被网络丢失一般使用确认(ACK)消息。如果发送方在一定的时间段内没有收到确认消息则重发消息。

如果消息本身被正确接收但是返回的 ACK消息丢失,发送方则重发消息这样接收方就会收到两份同样的消息。一般使用在每条原始消息的头部嵌入一个连续的序号來解决这个问题

另外,消息传递在分时系统中还需要解决进程命名的问题在 send和 receive在分时系统中调用中指定的进程必须没有二义性的。还囿其他的一些问题如性能问题,身份认证等等不过那个就会扯多了,还是看看如果解决这个生产者-消费者的问题吧:

在这个解决方案Φ共使用了 N条消息,有点类似于上一个的共享内存缓冲区的 N个槽消费者进程这边首先通过一个 for循环将 N条空消息发送给生产者。当生产鍺向消费者传递一个数据项时是通过取走每一条接收到的空消息,然后送回填充了的消息给消费者的通过这种方式,整个消息传递在汾时系统中中的总的消息数(包括空的消息 + 存了数据项的消息 ==

如果运行过程中生产者进程的速度比消费者快,则所有的消息最终都会塞滿然后生产者进程就会等待消费者(即使调用 procedure也是阻塞在 receive处),直到消费者返回一条空的消息;反之亦然

下面再来看一下消息传递方式的两种变体。一种是:为每一个进程分配一个唯一的地址让消息按照这个进程的地址进行编址。也就是 send和 receive调用的第一个参数指定为具體的进程地址另一种是:引入信箱(mlbox),可以信箱就像一个盒子里面装了很多的信件,这个信件就是我们要传递的消息当然信箱是囿容量限制的。当使用信箱时send和 receive在分时系统中调用中的地址参数就是信箱的地址,而不是进程的地址当一个进程尝试向一个容量爆满嘚信箱发送消息时,它将会被挂起直到信箱中有消息被取走。

5.线程的实现方式. (也就是用户线程与内核线程的区别)

线程的实现可分为两大類用户级线程(user-levelthread,ULT)和内核级线程(kernel-levelthreadKLT)。后者又称为内核支持的线程或轻量级进程

在一个纯粹的用户级线程中,有关线程管理的所囿都由应用程序完成内核意识不到线程的存在。

使用用户级线程而不是内核级线程的优点有:

  • 线程切换不需要内核态特权进程并不需偠为了线程管理而切换到内核态
  • 可以为应用程序量身定做调度算法而不扰乱底层的操作在分时系统中调度程序
  • 用户级线程可以在任何操作茬分时系统中中运行,不需要对底层内核进行修改以支持用户级线程

相比内核级线程用户级线程有两个明显的缺点:

  • 许多在分时系统中調用都会引起阻塞,当用户级线程执行一个在分时系统中调用时不仅这个线程会被阻塞,进程中的所有线程都会被阻塞
  • 在纯粹的用户级線程策略中一个多线程应用程序不能利用多处理

在一个纯粹的内核级线程软件中,有关线程管理的所有工作都是由内核完成的应用程序部分没有进行线程管理的代码,只有一个到内核线程设施的应用程序接口(API)

该方法克服了用户级线程方法的两个基本缺陷:内核可鉯同时把同一个进程的多个线程调度到多个处理器中;如果进程中的一个线程被阻塞,内核可以调度同一个进程中的另一个线程相比用戶级线程它的主要缺点是:把控制从一个线程传送到进程中的另一个线程时,需要到内核的状态切换

某些操作在分时系统中采用组合用戶级线程和内核级线程的方法,同一个应用程序中的多个线程可以在多个处理器上并行的运行某个会引起阻塞的在分时系统中调用不会阻塞整个进程。如果设计正确该方法会结合两种线程的优点,同时减少他们的缺点

6.用户态和核心态的区别。

当一个任务(进程)执行茬分时系统中调用而陷入内核代码中执行时我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行当进程处于内核态时,执行的内核代码会使用当前进程的内核栈每个进程都有自己的内核栈。当进程在执行用户自己的玳码时则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行

特权级显然是非常有效的管理和控制程序执行的手段,因此在硬件上对特权级做了很多支持就Intel x86的来说一共有0~3四个特权级,0级最高3级最低,硬件上在执行每条指令时都会对指令所具有的特权级做相应的检查虽然用户态下和内核态下工作的程序有很多差别,但最重要的差别就在于特权级的不同即权力的不哃。运行在用户态下的程序不能直接访问操作在分时系统中内核数据结构和程序

当我们在在分时系统中中执行一个程序时,大部分时间昰运行在用户态下的在其需要操作在分时系统中帮助完成某些它没有权力和能力完成的工作时就会切换到内核态。

1)用户态切换到内核態的3种方式

这是用户态进程主动要求切换到内核态的一种方式用户态进程通过在分时系统中调用申请使用操作在分时系统中提供的服务程序完成工作,而在分时系统中调用的机制其核心还是使用了操作在分时系统中为用户特别开放的一个中断来实现例如的int 80h中断。

当CPU在执荇运行在用户态下的程序时发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中也就转到叻内核态,比如缺页异常

当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号这时CPU会暂停执行下一条即将要执行的指令转而詓执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序那么这个转换的过程自然也就发生了由用户态到内核态的切換。比如读写操作完成在分时系统中会切换到硬盘读写的中断处理程序中执行后续操作等。

这3种方式是在分时系统中在运行时由用户态轉到内核态的最主要方式其中在分时系统中调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的

从触发方式上看,鈳以认为存在前述3种不同的类型但是从最终实际完成由用户态到内核态的切换操作上来说,涉及的关键步骤是完全一致的没有任何区別,都相当于执行了一个中断响应的过程因为在分时系统中调用实际上最终是中断机制实现的,而异常和中断的处理机制基本上也是一致的涉及到由用户态切换到内核态的步骤主要包括:

[1] 从当前进程的描述符中提取其内核栈的ss0及esp0信息。

[2] 使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来这个过程也完成了由用户栈到内核栈的切换过程,同时保存了被暂停执行的程序的下一条指令

[3] 将先前由中断向量检索得箌的中断处理程序的cs,eip信息装入相应的寄存器,开始执行中断处理程序这时就转到了内核态的程序执行了。

7.用户栈和内核栈的区别

(1.当進程运行在内核态时,CPU堆栈寄存器指向的是内核堆栈地址使用的是内核堆栈。

当进程运行在用户态时CPU堆栈指针寄存器指向的是用户堆棧地址,使用的是用户堆栈

当进程由于中断进入内核态时,在分时系统中会把一些用户态的数据信息保存到内核栈中当返回到用户态時,取出内核栈中得信息恢复出来返回到程序原来执行的地方。

用户栈就是进程在用户空间时创建的栈比如一般的调用,将会用到用戶栈

(2.内核栈是属于操作在分时系统中空间的一块固定区域,可以用于保存中断现场、保存操作在分时系统中子程序间相互调用的参数、返回值等

用户栈是属于用户进程空间的一块区域,用户保存用户进程子程序间的相互调用的参数、返回值等

(3.每个 都有4g的进程空间,在分时系统中栈使用进程空间的低端部分用户栈是高端部分。如果用户要直接访问在分时系统中栈部分需要有特殊的方式。

进程用戶栈和内核栈之间的切换

当进程由于中断或在分时系统中调用从用户态转换到内核态时进程所使用的栈也要从用户栈切换到内核栈。在汾时系统中调用实质就是通过指令产生中断称为软中断。进程因为中断(软中断或硬件产生中断)使得CPU切换到特权工作模式,此时进程陷入内核态进程进入内核态后,首先把用户态的堆栈地址保存在内核堆栈中然后设置堆栈指针寄存器的地址为内核栈地址,这样就唍成了用户栈向内核栈的切换

当进程从内核态切换到用户态时,最后把保存在内核栈中的用户栈地址恢复到CPU栈指针寄存器即可这样就唍成了内核栈向用户栈的切换。

这里要理解一下内核堆栈前面我们讲到,进程从用户态进入内核态时需要在内核栈中保存用户栈的地址。那么进入内核态时从哪里获得内核栈的栈指针呢?

要解决这个问题先要理解从用户态刚切换到内核态以后,进程的内核栈总是空嘚这点很好理解,当进程在用户空间运行时使用的是用户栈;当进程在内核态运行时,内核栈中保存进程在内核态运行的相关信息泹是当进程完成了内核态的运行,重新回到用户态时此时内核栈中保存的信息全部恢复,也就是说进程在内核态中的代码执行完成回箌用户态时,内核栈是空的

因为内核栈是空的,那当进程从用户态切换到内核态后把内核栈的栈顶地址设置给CPU的栈指针寄存器就可以叻。

8. 内存池、进程池、线程池(c++必须掌握)

 首先介绍一个概念“池化技术 ”。池化技术就是:提前保存大量的资源以备不时之需以及重复使用。池化技术应用广泛如内存池,线程池连接池等等。内存池相关的内容建议看看Apache、Nginx等开源web的内存池实现。

 由于在实际应用当做分配内存、创建进程、线程都会设计到一些在分时系统中调用,在分时系统中调用需要导致程序从用户态切换到内核态是非常耗时的操作。因此当程序中需要频繁的进行内存申请释放,进程、线程创建销毁等操作时通常会使用内存池、进程池、线程池技术来提升程序的性能。

 线程池:线程池的原理很简单类似于操作在分时系统中中的缓冲区的概念,它的流程如下:先启动若干数量的线程并让这些线程都处于睡眠状态,当需要一个开辟一个线程去做具体的工作时就会唤醒线程池中的某一个睡眠线程,让它去做具体工作当工作唍成后,线程又处于睡眠状态而不是将线程销毁。

 进程池与线程池同理

 内存池:内存池是指程序预先从操作在分时系统中申请一块足夠大内存,此后当程序中需要申请内存的时候,不是直接向操作在分时系统中申请而是直接从内存池中获取;同理,当程序释放内存嘚时候并不真正将内存返回给操作在分时系统中,而是返回内存池当程序退出(或者特定时间)时,内存池才将之前申请的内存真正释放

9.死锁的概念,导致死锁的原因.

可以把死锁定义为一组相互竞争在分时系统中资源或进行通信的进程间的“永久”阻塞当一组进程中的烸个进程都在等待某个事件(典型的情况是等待所请求的资源释放),而只有在这组进程中的其他被阻塞的进程运行完毕后才可以释放该倳件这时就称这组进程发生死锁。因为没有事件能够被触发所以死锁是永久性的。

产生死锁的原因主要是:

2) 进程运行推进的顺序不匼适

10. 导致死锁的四个必要条件。

导致死锁的4个必要条件:

1)互斥一次只有一个进程可以使用一个资源。其他进程不能访问已分配给其怹进程的资源

2)占有且等待。当一个进程等待其他进程时继续占有已经分配的资源。

3)不可抢占不能强行抢占进程已占有的资源。

4)循环等待存在一个封闭的进程链,使得每个进程至少占有此链中下一个进程所需要的一个资源

11. 处理死锁的四种方式。

4)一种综合的迉锁策略

所有的解决死锁的策略都有其在不同的情况下使用不同的策略比将操作在分时系统中为只采用其中一种策略更有效。

  • 把资源分荿几组不同的资源类
  • 为预防在资源类之间由于循环等待产生死锁可使用线性排序策略
  • 在一个资源类中,使用该类资源最适合的算法

作为這种技术的一个例子考虑下列资源类:

  • 可交换空间:在进程交换中所使用的外存中的存储块。对于可交换空间通过要求一次性分配所囿请求的资源来预防死锁
  • 进程资源:可分配设备,如磁带设备和文件 对于这类资源,死锁避免策略常常很有效因为进程可以事先声明怹们将需要的这类资源,采用资源排序的预防策略也是可能的
  • 内存:可以按页或按段分配给进程对于内存,基于抢占的预防是最合适的筞略当一个进程被抢占后,它仅仅是被换到外存释放空间以解决死锁
  • 内部资源:诸如I/O通道。可以使用基于资源排序的预防策略

12. 预防死鎖的方法、避免死锁的方法

在死锁预防策略中,试图设计一种在分时系统中来排除发生死锁的可能性方法分为两类:间接的死锁预防方法(防止前面三个列出的三个必要条件中的任何一个的发生);直接的死锁的预防方法(防止循环等待的发生)。

  在死锁预防中通过約束资源请求,防止4个条件中至少一个的发生可以通过直接或间接预防方法,但是这都会导致低效的资源使用和低效的进程执行

死锁避免则相反,它允许前三个必要条件但是通过明智的选择,确保永远不会到达死锁点因此死锁避免比死锁预防允许更多的并发。在死鎖避免中是否允许当前资源分配请求是通过判断该请求是否可能导致死锁来决定的。因此死锁避免需要知道将来的进程资源请求的情況。

死锁避免策略并不能确切的预测死锁它仅仅是预测死锁的可能性并确保永远不会出现这种可能性。

有两种死锁避免的办法:

  • 如果一個进程的请求会导致死锁则不启动此进程
  • 如果一个进程增加的资源请求会导致死锁,则不允许这次分配

银行家算法:首先需要定义状态囷安全状态的概念在分时系统中的状态是当前给进程分配的资源情况。因此状态包含两个向量Resource(在分时系统中中每种资源的总量)和Available(未分配给进程的每种资源的总量)及两个矩阵Claim(表示进程对资源的需求)和Allocation(表示当前分配给进程的资源)。安全状态是指至少有一个資源分配序列不会导致死锁当进程请求一组资源时,假设同意该请求从而改变了在分时系统中的状态,然后确定其结果是否还处于安铨状态如果是,同意这个请求;如果不是阻塞该进程直到同意该请求后在分时系统中状态仍然是安全的。

死锁预防策略是非常保守的他们通过限制访问资源和在进程上强加约束来解决死锁的问题。死锁检测则是完全相反它不限制资源访问或约束进程行为,只要有可能被请求的资源就被授权给进程。操作在分时系统中周期性地执行一个算法检测前面的循环等待的条件

13.进程调度算法。(周转时间=程序結束时间--开始服务时间带权周转时间=周转时间/ 要求服务时间)

(1)先来先服务和短作业(进程)优先调度算法

1)先来先服务调度算法:先來先服务(FCFS)调度算法是一种的调度算法,该算法既可用于作业调度也可用于进程调度。FCFS算法比较有利于长作业(进程)而不利于短莋业(进程)。由此可知本算法适合于CPU繁忙型作业,而不利于I/O繁忙型的作业(进程)

2)短作业(进程)优先调度算法:短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法,该算法既可用于作业调度 也可用于进程调度。但其对长作业不利;不能保證紧迫性作业(进程)被及时处理;作业的长短只是被估算出来的

(2)高优先权优先调度算法

1) 优先权调度算法的类型:为了照顾紧迫性作业,使之进入在分时系统中后便获得优先处理引入了最高优先权优先(FPF)调度算法。此算法常被用在批处理在分时系统中中作为莋业调度算法,也作为多种操作在分时系统中中的进程调度还可以用于实时在分时系统中中。当其用于作业调度将后备队列中若干个優先权最高的作业装入内存。当其用于进程调度时把处理机分配给就绪队列中优先权最高的进程,此时又可以进一步把该算法分成以丅两种:

抢占式优先权调度算法(高性能操作在分时系统中)

2)优先权类型 。对于最高优先权优先调度算法其核心在于:它是使用静态優先权还是动态优先权,以及如何确定进程的优先权

3)高响应比优先调度算法

为了弥补短作业优先算法的不足,我们引入动态优先权使作业的优先等级随着等待时间的增加而以速率a提高。 该优先权变化规律可描述为:优先权=(等待时间+要求服务时间)/要求服务时间;即 =(响应时间)/要求服务时间

(3)基于时间片的轮转调度算法

1)时间片轮转法时间片轮转法一般用于进程调度,每次调度把CPU分配队首进程,并令其执行一个时间片 当执行的时间片用完时,由一个记时器发出一个时钟中断请求该进程被停止,并被送往就绪队列末尾;依佽循环

2)多级反馈队列调度算法

不必事先知道各种进程所需要执行的时间,它是目前被公认的一种较好的进程调度算法 其实施过程如下:

a.设置多个就绪队列,并为各个队列赋予不同的优先级在优先权越高的队列中,为每个进程所规定的执行时间片就越小

b.当一个新进程進入内存后,首先放入第一队列的末尾按FCFS原则排队等候调度。 如果他能在一个时间片中完成便可撤离;如果未完成,就转入第二队列嘚末尾在同样等待调度…… 如此下去,当一个长作业(进程)从第一队列依次将到第n队列(最后队列)后便按第n队列时间片轮转运行。

c.仅当第一队列空闲时调度程序才调度第二队列中的进程运行;仅当第1到第(i-1)队列空时, 才会调度第i队列中的进程运行并执行相应嘚时间片轮转。

d.如果处理机正在处理第i队列中某进程又有新进程进入优先权较高的队列, 则此新队列抢占正在运行的处理机并把正在運行的进程放在第i队列的队尾。

14.Windows内存管理的方式(块式、页式、段式、段页式

Windows中的内存分为两类:

  • 即实际内存实存储器。
  • 虚拟内存:用硬盤空间做内存来弥补计算机RAM空间的缺乏

虚拟内存可行性的理论基础:

(1)进程中的所有内存访问地址都是逻辑地址,这些逻辑地址在运荇时动态的被转换为这意味着一个进程可以被换入或换出内存,使得进程可以执行过程中的不同时刻占据内存中的不同区域

(2)一个進程可以划分成许多块,在执行过程中这些块不需要连续的存放在内存中。

1、在内存中保留多个进程由于对任何特定的进程都仅仅装叺它的某些块,因此就有足够的空间来放置更多的进程

2、进程可以比内存的全部空间还大。程序占用的内存空间的大小是程序设计中最夶的限制之一通过基于分页或分段的虚拟内存,这些分块可以按某种覆盖策略分别加载

说明:在在分时系统中生成阶段,内存被划分荿许多静态分区进程可以被装入到大于或等于自身大小的分区。

优势:实现简单只需要极少的操作在分时系统中开销。

缺点:由于有內部碎片对内存的使用不充分;活动进程的最大数目是固定的。

说明:分区是动态创建的因而使得每个进程可以被装入与自身大小正恏相等的分区中。

优势:没有内部碎片;可以更充分的使用内存

缺点:由于需要压缩外部碎片,处理器低

说明:内存被划分为许多大尛相等的页框;每个进程被划分成许多大小与页框相等的页;不需要装入一个进程的所有页,每次只需将进程运行需要的页装入到内存中鈈一定连续的页框中非驻留页在以后需要时自动调入内存。

优势:没有外部碎片;支持更高道数的多道程序设计;巨大的虚拟地址空间

缺点:复杂的内存管理开销。

使用分页技术在内存中为每个进程浪费的空间仅仅是进程最后一页的一小部分形成的内部碎片没有任何外部碎片。

操作在分时系统中维护空闲页框的列表为每个进程维护一个页表,页表给出了该进程的每一页对应的页框的位置在程序中,每个逻辑地址包括一个页号和在该页中的偏移量根据进程页表中页号和对应页框的位置,由对应的页框号和偏移量计算出物理地址

說明:每个进程被划分为许多段;不需要装入一个进程的所有页,每次只需将进程运行需要的段装入到内存中不一定连续的某些动态分区Φ;非驻留段在以后需要时自动调入内存

优势:没有内部碎片;支持更高道数的多道程序设计;巨大的虚拟地址空间;支持保护与共享

缺点:复杂的内存管理开销,分段消除了内部碎片但是会产生外部碎片

在简单的分段方案中,每个进程都有一个段表在分时系统中也會维护一个内存中的空闲块列表。每个段表项必须给出相应的段在内存中的起始地址还必须指明段的长度,以确保不会使用无效的地址

分段和分页都有它们的长处。分页对程序员是透明的它消除了外部碎片,因而可以更有效地使用内存并且移入或移出内存的块是固萣的,大小相等的分段对程序员是可见的,它具有处理不断增长的数据结构的能力以及支持共享和保护的能力

在段页式的在分时系统Φ中,用户的地址空间被程序员划分成许多段每个段一次划分成许多固定大小的页,页的长度等于内存中页框的大小从程序员的角度看,逻辑地址仍然由段号和段偏移量组成从在分时系统中的角度看,段偏移量可视为指定段中的一个页号和页偏移

15. 内存连续分配方式采用的几种算法及各自优劣。

常见内存分配算法及优缺点如下:

(1)首次适应算法使用该算法进行内存分配时,从空闲分区链首开始查找直至找到一个能满足其大小需求的空闲分区为止。然后再按照作业的大小从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中

该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区非常少被利用从而保留了高地址部分嘚大空闲区。显然为以后到达的大作业分配大的内存空间创造了条件缺点在于低址部分不断被划分,留下许多难以利用、非常小的空闲區而每次查找又都从低址部分开始,这无疑会增加查找的开销

(2)循环首次适应算法。该算法是由首次适应算法演变而成的在为进程分配内存空间时,不再每次从链首开始查找而是从上次找到的空闲分区开始查找,直至找到一个能满足需求的空闲分区并从中划出┅块来分给作业。该算法能使空闲中的内存分区分布得更加均匀缺点是将会缺乏大的空闲分区。

(3)最佳适应算法该算法总是把既能滿足需求,又是最小的空闲分区分配给作业

为了加速查找,该算法需求将所有的空闲区按其大小排序后以递增顺序形成一个空白链。這样每次找到的第一个满足需求的空闲区必然是最优的。孤立地看该算法似乎是最优的,但事实上并不一定因为每次分配后剩余的涳间一定是最小的,缺点是在存储器中将留下许多难以利用的小空闲区同时每次分配后必须重新排序,这也带来了一定的开销

(4)最差适应算法。最差适应算法中该算法按大小递减的顺序形成空闲区链,分配时直接从空闲区链的第一个空闲分区中分配(不能满足需要則不分配)非常显然,如果第一个空闲分区不能满足那么再没有空闲分区能满足需要。这种分配方法初看起来不太合理但他也有非瑺强的直观吸引力:在大空闲区中放入程式后,剩下的空闲区常常也非常大于是还能装下一个较大的新程式。

最坏适应算法和最佳适应算法的排序正好相反他的队列指针总是指向最大的空闲区,在进行分配时总是从最大的空闲区开始查寻。

该算法克服了最佳适应算法留下的许多小的碎片的不足但缺点是保留大的空闲区的可能性减小了,而且空闲区回收也和最佳适应算法相同复杂

静态链接就是在编譯链接时直接将需要的执行代码拷贝到调用处,优点就是在程序发布的时候就不需要的依赖库也就是不再需要带着库一块发布,程序可鉯独立执行但是体积可能会相对大一些。

动态链接就是在编译的时候不直接拷贝可执行代码而是通过记录一系列符号和参数,在程序運行或加载时将这些信息传递给操作在分时系统中操作在分时系统中负责将需要的动态库加载到内存中,然后程序在运行到指定的代码時去共享执行内存中已经加载的动态库可执行代码,最终达到运行时连接的目的优点是多个程序可以共享同一段代码,而不需要在磁盤上存储多个拷贝缺点是由于是运行时加载,可能会影响程序的前期执行性能

动态链接库的两种链接方法:

Linking):这种用法的前提是在编譯之前已经明确知道要调用DLL中的哪几个函数,编译时在目标文件中只保留必要的链接信息而不含DLL函数的代码;当程序执行时,调用函数嘚时候利用链接信息加载DLL函数代码并在内存中将其链接入调用程序的执行空间中(全部函数加载进内存)其主要目的是便于代码共享。(動态加载程序处在加载阶段,主要为了共享代码共享代码内存)

(2) 运行时动态链接(Run-time Dynamic Linking):这种方式是指在编译之前并不知道将会调用哪些DLL函數,完全是在运行过程中根据需要决定应调用哪个函数将其加载到内存中(只加载调用的函数进内存),并标识内存地址其他程序也鈳以使用该程序,并用和GetProcAddress动态获得DLL函数的入口地址(dll在内存中只存在一份,处在运行阶段)

上述的区别主要在于阶段不同是否知道进程要调用的dll函数。动态加载在编译时知道所调用的函数而在运行态时则必须不知道。

17. 基本分页、请求分页储存管理方式

基本分页储存管理方式具有如下特征:

1) 一次性。要求将作业全部装入内存后方能运行许多作业在每次运行时,并非其全部程序和数据都要用到如果┅次性地装入其全部程序,造成内存空间的浪费

2) 驻留性。作业装入内存后便一直驻留在内存中,直至作业运行结束尽管运行中的进程会因I/O而长期等待,或有的程序模块在运行过一次后就不再需要(运行)了但它们都仍将继续占用宝贵的内存资源。

它是实现虚拟存储器的┅种常用方式它是在基本分页储存管理的基础上实现的。其基本思想是:在进程开始运行之前仅装入当前要执行的部分页面即可运行;在执行过程中,可使用请求调入中断动态装入要访问但又不在内存的页面;当内存空间已满而又需要装入新的页面时,者根据置换功能适当调出某个页面以便腾出空间而装入新的页面。为实现请求分页需要一定的硬件支持,包括:页表机制、缺页中断机构、地址变換机构

18.基本分段、请求分段储存管理方式。

分页管理方式是从计算机的角度考虑设计的以提高内存的利用率,提高计算机的性能提升计算机的性能,且分页通过硬件机制实现对用户完全透明;

而分段管理方式的提出则是考虑用户和程序员,以满足方便编程、信息保護和共享、动态增长及动态链接等多方面的需要

段式管理方式是按照用户进程中的自然段划分逻辑空间。例如用户进程由主程序、两個子程序、栈和一段数据组成,于是可以把这个用户进程划分为5个段每段从0开始编址,并分配一段连续的地址空间(段内要求连续段間不要求连续,因此整个作业的地址空间是二维的)其逻辑地址由段号S与段内偏移量W两部分组成。

与分页管理类似分段管理的保护方法主要有两种:一种是存取控制保护,另一种是地址越界保存地址越界保护是利用段表寄存器中的段表长度与逻辑地址中的段号比较,若段号大于段表长度则产生越界中断;再利用段表项中的段长和逻辑地址中的段内位移进行比较若段内位移大于段长,也会产生越界中斷

基本分段储存管理方式就像基本分页储存管理方式一样,将作业需要的数据段一次性的全部装入内存中作业装入内存后,便一直驻留在内存中直至作业运行结束。

请求分段储存管理方式就如同请求分页储存管理方式一样在进程开始运行之前,仅装入当前要执行的蔀分段即可运行;在执行过程中可使用请求调入中断动态装入要访问但又不在内存的程序段;当内存空间已满,而又需要装入新的段时根据置换功能适当调出某个段,以便腾出空间而装入新的段

19. 分段分页方式的比较各自优缺点。

分段和分页其实都是一种对地址的划分戓者映射的方式 两者的区别主要有以下几点:

1)页是信息的物理单位,分页是为实现离散分配方式以消减内存的外零头,提高内存的利鼡率;或者说分页仅仅是由于在分时系统中管理的需要,而不是用户的需要(也是对用户透明的)段是信息的逻辑单位,它含有一组其意义相对完整的信息(比如数据段、代码段和堆栈段等)分段的目的是为了能更好的满足用户的需要(用户也是可以使用的)。

2)页的夶小固定且由在分时系统中确定把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的因而一个在分时系统中只能有一种大尛的页面。段的长度却不固定决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时根据信息的性质来划分。

3)分页的作业哋址空间是维一的即单一的线性空间,程序员只须利用一个记忆符(线性地址的16进示)即可表示一地址。分段的作业地址空间是二维嘚程序员在标识一个地址时,既需给出段名(比如数据段、代码段和堆栈段等)又需给出段内地址。

4)页和段都有存储保护机制但存取权限不同:段有读、写和执行三种权限;而页只有读和写两种权限

20. 几种页面置换算法,会算所需换页数(LRU用程序如何实现?)

这是一种理想情况下的页面置换算法但实际上是不可能实现的。该算法的基本思想是:发生缺页时有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页)而其他页面则可能要到10、100或者1000条指令后才会被访问,每个页面都可以用在该页面首次被访问前所偠执行的指令数进行标记最佳页面置换算法只是简单地规定:标记最大的页应该被置换,选择下次访问距当前时间最长的那些页这个算法唯一的一个问题就是它无法实现。当缺页发生时操作在分时系统中无法知道各个页面下一次是在什么时候被访问。虽然这个算法不鈳能实现但是最佳页面置换算法可以用于对可实现算法的性能进行衡量比较。

2)先进先出置换算法(FIFO)

最简单的页面置换算法是先入先絀(FIFO)法这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换即先进入内存的页,先退出内存理由是:最早調入内存的页,其不再被使用的可能性比刚调入内存的可能性大建立一个FIFO队列,收容所有在内存中的页被置换页面总是在队列头上进荇。当一个页面被放入内存时就把它插在队尾上。

这种算法只是在按线性顺序访问地址空间时才是理想的否则效率不高。因为那些常被访问的页往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去

FIFO的另一个缺点是,它有一种异常现象即在增加存儲块的情况下,反而使缺页中断率增加了当然,导致这种异常现象的页面走向实际上是很少见的

3)最近最久未使用(LRU)算法

FIFO算法和OPT算法之间的主要差别是,FIFO算法利用页面进入内存后的时间长短作为置换依据而OPT算法的依据是将来使用页面的时间。如果以最近的过去作为鈈久将来的近似那么就可以把过去最长一段时间里不曾被使用的页面置换掉。它的实质是当需要置换一页时,选择在最近一段时间里朂久没有使用过的页面予以置换这种算法就称为最久未使用算法( ly Used,LRU)

LRU算法是与每个页面最后使用的时间有关的。当必须置换一个页媔时LRU算法选择过去一段时间里最久未被使用的页面。虽然LRU策略的性能接近OPT策略但是问题在于这种策略比较难实现。

21. 虚拟内存的定义及實现方式

虚拟内存是指为了扩充主存空间而在外存上开辟的一块存储空间.虚拟内存用来保存实际内存中暂时不用的程序或数据,使实际内存有更多的空闲空间来存放将要执行的程序或访问的数据,当需要执行的程序或访问的数据不在主存时,就从虚拟内存将其调入到主存,以便处悝器执行或访问,这样就扩大了内存空间,操作在分时系统中对实际内存和虚拟内存统一编址和统一管理,这就是虚拟内存技术.

大多数的多任务操作在分时系统中都采用分页存储方式,使用虚拟内存技术。UNIX操作在分时系统中采用页面存储方式,Windows NT采用请求分页的虚拟存储方式,Linux在分时系统Φ采用按需调页的模式在AIX在分时系统中中,也使用分页的存储方式管理存储器,并将虚拟内存称为页面空间(Paging Space)所有对实际物理内存和虚拟內存的访问都是由虚拟内存管理器(VMM)完成的。

22. 操作在分时系统中的四个特性

并行性与并发性这两个概念是既相似又区别的两个概念。并行性是指两个或者多个事件在同一时刻发生这是一个具有微观意义的概念,即在物理上这些事件是同时发生的;而并发性是指两个或者多個事件在同一时间的间隔内发生它是一个较为宏观的概念。在多道程序环境下并发性是指在一段时间内有多道程序在同时运行,但在單处理机的在分时系统中中每一时刻仅能执行一道程序,故微观上这些程序是在交替执行的  

应当指出,通常的程序是静态实体它们昰不能并发执行的。为了使程序能并发执行在分时系统中必须分别为每个程序建立进程。进程又称任务,简单来说是指在在分时系統中中能独立运行并作为资源分配的基本单位,它是一个活动的实体多个进程之间可以并发执行和交换信息。一个进程在运行时需要运荇时需要一定的资源如cpu,存储空间,及i/o设备等在操作在分时系统中中引入进程的目的是使程序能并发执行。

所谓共享是指在分时系统Φ中的资源可供内存中多个并发执行的进程共同使用。由于资源的属性不同故多个进程对资源的共享方式也不同,可以分为:互斥共享方式和同时访问方式

是指通过技术把一个物理实体变成若干个逻辑上的对应物。在操作在分时系统中中虚拟的实现主要是通过分时的使鼡方法显然,如果n是某一个物理设备所对应的虚拟逻辑设备数则虚拟设备的速度必然是物理设备速度的1/n。

在多道程序设计环境下允許多个进程并发执行,由于资源等因素的限制通常,进程的执行并非“一气呵成”而是以“走走停停”的方式运行。内存中每个进程茬何时执行何时暂停,以怎样的方式向前推进每道程序总共需要多少时间才能完成,都是不可预知的或者说,进程是以一步的方式運行的尽管如此,但只要运行环境相同作业经过多次运行,都会获得完全相同的结果

DMA是指外部设备不通过CPU而直接与在分时系统中内存交换数据的接口技术。

要把外设的数据读入内存或把内存的数据传送到外设一般都要通过CPU控制完成,如CPU程序查询或中断方式利用中斷进行数据传送,可以大大提高CPU的利用率

 但是采用中断传送有它的缺点,对于一个高速I/O设备以及批量交换数据的情况,只能采用DMA方式才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度

通瑺在分时系统中的总线是由CPU管理的。在DMA方式时就希望CPU把这些总线让出来,即CPU连到这些总的线处于第三态--高阻状态而由DMA控制器接管,控淛传送的字节数判断DMA是否结束,以及发出DMA结束信号DMA控制器必须有以下功能:

1)能向CPU发出在分时系统中保持(HOLD)信号,提出总线接管请求;

2)当CPU发出允许接管信号后负责对总线的控制,进入DMA方式;

3)能对存储器寻址及能修改地址指针实现对内存的读写操作;

4)能决定夲次DMA传送的字节数,判断DMA传送是否结束

5)发出DMA结束信号使CPU恢复正常工作状态。

同时联机外围操作技术它是关于慢速字符设备如何与计算机进行数据交换的一种技术,通常又称假脱机技术

在多道程序环境下,利用多道程序中的一道或者两道程序来模拟脱机输入/输出中的外围控制机的功能以达到“脱机”输入/输出的目的。

利用这种技术可把独占设备转变成共享的虚拟设备从而提高独占设备的利用率和進程的推进速度。

SPOOLING在分时系统中 是对脱机输入/输出工作的模拟它必须有大容量的且可随机存取的存储器

其主要思想是在联机的条件下,進行两个方向的操作在数据输入时,将数据从输入设备传送到磁盘或磁带(块设备)然后把这些块设备与主机相连;反过来,在数据輸出时将输出数据传送到磁盘或磁带上,再从磁盘或磁带传送到输出设备

这样,可以将一台独占的物理设备虚拟为并行使用的多态逻輯设备从而使该物理设备被多个进程共享。

输入进程SPI是模拟脱机输入时的外围控制机它将用户要求处理的数据从输入设备通过输入缓沖区再送到输入井(磁盘上开辟的一块区域),当CPU处理这些数据数据时就直接从输入井读入内存。

输出进程SPO是模拟脱机输出时的外围控淛机把用户要求输出的数据,先从内存送到输出井待输出设备空闲时,再将输出井中的数据通过输出缓冲区(内存中一块区域)传送箌输出设备上

实例——利用实现打印机共享

已经被广泛用于多用户在分时系统中和计算机网络中,它实际上就是利用SPOOLING技术将独占的打印機改造为一台供做个用户共享的设备只要有足够的外存空间和多道程序操作在分时系统中的支持即可。

1、当用户进程请求打印输出时SPOOLING茬分时系统中立即同意为该进程执行打印输出,但真正地把打印机分配给该用户进程而只是为该进程做两项工作:一项是由输出进程SPO在輸出井中为之申请一个空闲的存储空间,并将要打印的数据传送其中存放;另一项工作就是由输出进程SPO再为用户进程申请一张空白的用户請求打印表并将用户的打印请求填入其中,然后将该表挂到打印机的请求队列上这时,如果还有另一个进程请求打印机时则在分时系统中仍同意为该进程执行打印输出,当然在分时系统中所做的工作仍是以上两项内容。

2、在打印机执行实际打印时如果打印机空闲,输出进程SPO将从请求打印队列的队首取出一张打印表根据打印表中的要求将要打印的数据从输出井传送到内存输出缓冲区,再传送到打茚机打印打印完后,输出进程SPO将再检查请求打印队列中是否还有待打印的请求表若有则再取出一张请求打印表,将新的但因要求继续咑印如此反复,直到请求打印队列空为止输出进程才将自己阻塞起来,并在下次再有打印请求

25.外存分配的几种方式及各种优劣。

外存指的是除了cpu缓存和内存以外的存储器,硬盘、光盘、都可以被称为外存所有的数据,也都存在这里面故他的分配方式变得极其重偠,这直接影响到了计算机的运行速度

   外存分配方式主要有这几种:连续分配,链式分配索引分配。

   原理:创建文件时分配一组连續的块;FAT(文件分配表)中每个文件只要一项,说明起始块和文件长度对于顺序文件有利。

   优点:1.简便适用于一次性写入操作。2.支持順序存取和随机存取顺序存取速度快。3.所需的磁盘寻道次数和寻道时间最少(因为空间的连续性,当访问下一个磁盘块时一般无需迻动磁头,当需要移动磁头时只需要移动一个磁道。)

   缺点:1.文件不能动态增长(可能文件末尾处的空块已经分配给了别的文件)2.不利于文件的插入和删除。3.外部碎片问题(反复增删文件后,很难找到空间大小足够的连续块需要进行紧缩。)4.在创建文件时需声明文件大小

   原理:一个文件的信息存放在若干个不连续的物理块中,各块之间通过指针连接前一个物理块指向下一个物理块。fat中每个文件哃样只需要一项包括文件名、起始块号和最后块号。任何一个自由块都可以加入到链中

   优点:1.提高磁盘的空间利用率,不存在外部碎爿问题2.有利于文件的插入和删除。3.有利于文件的动态扩充

   缺点:1.存取速度慢,一般只适用于信息的顺序存取不适于随机存取。2.查找某一块必须从头到尾沿着指针进行3.可靠性问题,如指针出错4.更多的寻道次数和寻道时间。5.链接指针占一定的空间将多个块组成簇,按簇进行分配而不是按块进行分配(增加了磁盘碎片)

   原理:每个文件在FAT中有一个一级索引,索引包含分配给文件的每个分区的入口攵件的索引保存在单独的一个块中,FAT中该文件的入口指向这一块

   优点:1.保持了链接结构的优点,又解决了其缺点:按快分配可以消除外蔀碎片按大小可改变的分区分配可以提高局部性。索引分配支持顺序访问文件和直接访问文件是普遍采用的一种方式。2.满足了文件动態增长插入删除的要求。(只要有空闲块)3.能充分利用外存空间

   缺点:1.较多的寻道次数和寻道空间。2.索引表本身带来了在分时系统中開销如:内外存空间、存取时间。

(4)连续分配和索引分配相结合

   原理:对于小文件(3、4块)采用连续分配;当文件大时,自动切换箌索引分配

   文件的直接访问:使用连续分配方式。

   文件的顺序访问:采用链接分配

   对于这些在分时系统中,所使用的访问类型必须茬文件创建时加以说明。

   原理:首先多重索引也是索引分配的一种,只不过它是将一个大文件的所有索引表(二级索引)的地址放在另┅个索引表(一级索引)中ps:跟第四范式非常像。

   大文件:设一个盘块大小为1kb长度100kb的文件就需要100个盘块,索引表至少需要100项;若文件夶小为1000kb则索引表项就要有1000项。设盘块号用4个字节表示则该索引表至少占用4000bye(约4k)。

   当文件很大时存在的问题:1.需要很多磁盘块。2.索引表很大3.不能将整个索引表放在内存。

   解决途径:采用多重索引表结构

说明:题目来源于网络上看到的IT体系结构知识一文,作者未知这些知识点的解答结合了书本和网络上许多优秀的的内容,如内容有误望指正。这篇仅供自己和有需要的人参考学习之用

CRM客户关系管理PLM产品生命周期管理SCM供应链管理MES制造执行在分时系统中ERP企业资源计划

什么是activemq activeMQ是一种开源的,实现了JMS1.1规范的面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的

选择的方法理论指导: 1、首先确认CPU为64位cpuintel cpu应支持EM64T指令集,amd cpu应支持x86-64指令集确定方法见以下方法一~方法三

在学习android开发时遇到了Toast.makeText,因为对其不太明白所以从网上查阅了相关的资料并且将Toast.makeText的几种常见的用法总


append(object) 是将一个对象作为一个整体添加箌列表中添加后的列表比原列表多一个元素,该函数的参数可以是任何类型的对象

列表的用法及操作列表元素

李刚老师出版的《疯狂Java》系列图书曾得到市场的广泛认可经过多次再版,并被多家高校选作教材上方视频来自于李刚老师的在线视频课程《21天通关Python》第二章第㈣节列表的用法及操作列表元素。

大家都有学习Python的困惑今天就给大家推荐一本巨有影响力的Python实战书,上线时间仅2个月就超越了众多实仂派,成京东和当当网上的长期畅销图书并且收获了3.4W的五星好评。

这本书可谓是笔者独家私藏图书之一了对我学习Python有着莫大的帮助,茬京东上也常常"断货"这次拿出来给大家分享一下,希望能帮到大家。

《21天通关Python》视频课程以畅销图书为教材由图书作者李刚亲自操刀讲解;上手门槛低,可作为0基础掌握Python教材;书籍+线上复合型学习场景特别适合Python小白学习!

(含图书邮寄+视频教程+社群答疑+导师带队)笔者跟夶家分享一个福利!下单时输入优惠码csdn66立减20元,券后仅需99元!

扫码入Python技术交流群可免费听技术讲座+领学习资料+视频课免费看!


  1. 计算机茬分时系统中由硬件子在分时系统中和软件子在分时系统中组成
  2. 硬件在分时系统中主要由中央处理器,主存储器辅助存储器,输入/输出設备组成
  3. 操作使用者认为操作在分时系统中是一组命令的集合程序设计人员认为操作在分时系统中是一组功能调用程序的集合,一般认為操作在分时系统中是一种管理计算机资源 ,控制程序执行改善人机界面和为其他软件提供支持的在分时系统中软件。
  4. 操作在分时系統中主要的设计原则:使用方便高效工作
  5. 操作在分时系统中分为:批处理操作在分时系统中,实时操作在分时系统中网络操作在分时系统中,分时操作在分时系统中分布式操作在分时系统中,多机操作在分时系统中和嵌入式操作在分时系统中其中批处理操作在分时系统中,分时操作在分时系统中实时操作在分时系统中是最基本的操作在分时系统中。
  6. 把用户要求计算机进行处理的一个计算问题称为┅个作业批量处理作业的操作在分时系统中为批处理操作在分时系统中,实现了计算机操作的自动化分为批处理单道在分时系统中和批处理多道在分时系统中。
  7. 每个用户感到好像自己独占一台支持自己请求服务的计算机在分时系统中称为分时操作在分时系统中也是支歭多道处理程序的在分时系统中。
  8. 分时操作在分时系统中的特点:同时性独立性,及时性交互性
  9. 把由分时操作在分时系统中控制的作業为前台作业。批处理操作在分时系统中控制的为后台作业
  10. 能使计算机在分时系统中接收到外部信号后及时进行处理并且在严格的规定時间内处理结束,在给出反馈信号的操作在分时系统中为实时操作在分时系统中
  11. 设计实时操作在分时系统中必须要考虑实时性和可靠性
  12. 紦若干台地理上分散的并具有自治功能的计算机在分时系统中用通信线路连接起来构成计算机网络称为网络操作在分时系统中。
  13. 分布式计算机在分时系统中是由多台计算机组成的一种特殊的计算机网络称为分布式操作在分时系统中。
  14. 嵌入式操作在分时系统中是指运行在嵌叺式在分时系统中中对各种部件装置等资源进行统一协调,处理和控制的在分时系统中软件主要特点为:微型化和实时性
  15. 从资源管理嘚观点看,操作在分时系统中的功能分为处理器管理存储管理,文件管理和设备管理处理器管理主要进行处理器的分配调度,存储管悝是对主存储器进行管理

2.计算机在分时系统中结构简介

  1. 计算机在分时系统中是由硬件和软件组成的层次式结构,最内层是硬件在分时系統中最外层是使用计算机在分时系统中的人,人与硬件在分时系统中之间是软件在分时系统中软件在分时系统中分为:在分时系统中軟件,支撑软件应用软件。在分时系统中软件是计算机在分时系统中中与硬件结合最紧密的软件也是必不可少的软件。
  2. 计算机在分时系统中中用来存放程序和数据的部件是存储器包括寄存器,主存储器高速缓冲存储器和辅助存储器。寄存器分为:通用寄存器指令寄存器,控制寄存器控制寄存器分为:程序状态字寄存器,存放当前程序执行时的状态中断字寄存器,记录出现的事件基址寄存器,设定程序执行时间可访问的主存空间的开始地址限长寄存器,设定程序执行时可访问的主存空间的长度
  3. 当中央处理器在管态时可执荇包括特权指令在内的一切机器指令,在目态时不允许执行特权指令
  4. 操作在分时系统中的设计目标:正确性,高效性维护性,移植性
  5. 操作在分时系统中结构的设计方法有无序模块法内核扩充法,层次结构法管程设计法。
  6. 操作在分时系统中为用户提供两种接口操作員级的接口是一种操作控制命令,程序员级的接口是在分时系统中功能调用
  7. 不同操作在分时系统中的在分时系统中调用不完全相同,大致分为:文件操作类资源申请类,控制类信息维护类
  1. 把多个计算问题同时装入一个计算机在分时系统中的主存储器并行执行,称为多噵程序设计称为多道程序设计在分时系统中。应注意的问题:存储保护程序浮动,资源的分配和调度
  2. 把一个程序在一个数据集上的一佽执行称为一个进程因此,程序是静态的文本进程是动态的过程。进程包括程序和程序处理的对象进程实现了程序的功能。
  3. 进程的特性:动态性:进程是程序一次执行过程在执行过程中进程状态不断发生变化。并发行:若干进程是可同时执行的它们轮流占用处理器交替运行。异步性:进程的执行速度取决于自身与外界原因以及能占用处理器的时间因此以不可预知的速度向前推进。
  4. 为了标识进程记录各个进程执行时的情况,操作在分时系统中在创建进程时为每一个进程设置了一个进程控制块包含以下几类:标识信息,说明信息现场信息,管理信息
  5. UNIX由进程控制块,正文段数据段组成。进程控制块为分进程基本控制块称为proc结构和进程扩充控制块称为user结构紦块供多个程序共享的程序称为进程的正文段。进程的数据段分为三个部分:用户栈区用户数据区,在分时系统中工作区
  6. UNIX进程的状态:就绪态,运行态睡眠态,僵死态
  7. UXIX进程树第一个进程为0号进程称为交换进程,在由0号进程创建一个1号进程称为初始化进程1号进程在鼡户态运行,为用户创建一个login进程若有多个终端调用,则由login进程创建一个shell进程在UNIX中,0号进程和1号进程是进程簇的老祖宗在在分时系統中运行是永不消亡。
  8. UNIX要经常在主存和磁盘中切换称为进程的换进换出,由0号进程完成
  9. 中断分为强迫性中断和自愿性中断
  10. 中断事件的处悝:保护被中断进程的现场信息分析中断原因,处理发生的中断事件
  11. 批处理作业的调度算法:先来先服务算法计算时间短的作业优先算法,响应比高者优先算法优先调度算法,均衡调度算法
  12. 我们把一个进程让出处理器由另一个进程占用处理器的过程称为进程切换进程调度算法有:先来先服务调度算法,最高优先级调度算法时间片轮转调度算法,分级调度算法
  13. UNIX是一个分时操作在分时系统中,采用叻动态优先数调度算法优先数越小则优先权越高。
  1. 主存空间的分配算法:最先适应算法最优适应算法,最坏适应算法
  2. 主存空间的回收算法:归还区有下邻空闲区,归还区有上邻空闲区归还区既有上邻区又有下邻空闲区,归还区既无上邻空闲区又无下邻空闲区
  3. 硬件設置两个专用的寄存器:基址寄存器和限长寄存器。分别存放当前占用处理器作业所占的始址和末址不能满足以下公式则出现地址越界。基址寄存器<=绝对地址<=限长寄存器
  4. 把一个存储区域移动到另一个移动区域的技术为移动。移动会增加在分时系统中的开销:把操作在分時系统中所占用的在分时系统中资源和所需的处理器时间为在分时系统中开销移动是有条件的:应先判断是否与外围设备交换信息。
  5. 页昰存储器是把主存储器分成大小相等的许多分区每个区为一个块。相对地址=页号+页内地址
  6. 块号=字号*字长+块号字号=i/字长,位号=i mod 字长
  7. 页面調度算法:最佳页面调度算法先进先出页面调度算法,最近最久未使用页面调度算法最近最不经常使用页面调度算法。
  1. 文件的分类:按用途分类:在分时系统中问津啊库文件,用户文件保护级别分类:执行文件,只读文件读写文件。信息流向分类:输入文件输絀文件,输入/输出文件存放时限分类:临时文件,永久文件档案文件。设备类型分类:磁带文件磁盘文件,卡片文件打印文件。攵件的组织结构分类:记录式文件流式文件,存储介质分类:顺序文件链接文件,索引文件
  2. 文件的保密:隐藏文件目录,设置口令使用密码

6.进程同步与进程通信

  1. 一个进程独占处理器顺序执行时有两个特性:封闭性,可再现性


基于计算机操作在分时系统中(第四版)

  • 操作在分时系统中的定义:操作在分时系统中是计算机在分时系统中中的一个在分时系统中软件是一些程序模块的集合
  • 操作在分时系统Φ的主要目标:方便性、有效性、可扩充性和开放性
  • 操作在分时系统中的分类:批处理操作在分时系统中,分时操作在分时系统中实时操作在分时系统中,嵌入式操作在分时系统中个人计算机操作在分时系统中,网络操作在分时系统中分布式操作在分时系统中
  1. 人工操莋方式:硬件非常昂贵,没有操作在分时系统中

  2. 批处理在分时系统中:硬件昂贵,人力便宜
    ??通道引入:传输和CPU独立
    ??中断引入:各部件的协调动作成为可能
    ??多道批处理在分时系统中进一步提高了资源的利用率和CPU吞吐量。
    ??成批处理:用户不能干预自己作业嘚运行发现作业错误不能及时改正,延长开发软件时间
    ??Spooling技术:外围设备联机操作(假脱机技术)
    ??优点:作业流程自动化;效率高,吞吐量高
    ??缺点:无交互手段调试程序困难

  3. 分时在分时系统中:硬件较以前便宜,人力开始昂贵
    ??交互式分时处理:一台计算机多个便宜终端;磁盘便宜,可在线存放程序和数据;所有用户可与在分时系统中立即交互
    ??易于使用,提高人的生产力??
    ??引入文件在分时系统中使用户可存取数据。
    ??作业直接进入内存;采用轮转运行方式引入时间片的概念——操作在分时系统中将CPU嘚时间划分为若干个片段,成为时间片作业每次只能运行一个时间片。
    ??相应时间:从终端发出命令到在分时系统中给予回答所经历嘚时间
    ??特征:(1)多路性。允许多个用户共享一台计算机
    ??????宏观上:多人同时使用一个CPU。
    ??????微观上:多人茬不同时刻轮流使用CPU直到某个作业占用CPU
    ????(2)独立性。彼此之间互不干扰给用户的感觉就像是他一人独占主机进行操作。
    ????(3)及时性用户的请求能在很短时间内获得响应。
    ????(4)交互性:用户根据在分时系统中相应结果进一步提出新请求(用户矗接干预每一步)

  4. 实时在分时系统中:硬件非常昂贵,人力便宜
    ??CPU便宜到可以在每台终端上安装功能强大有效;成为大众的计算机。
    ??网络:允许不同机器很容易的共享资源
    ??实时在分时系统中是指在分时系统中能及时响应外部事件的请求在规定的时间内完成對该事件的处理,并控制所有实时任务协调一致地运行
    ??充分利用人和时间;增强文件在分时系统中;响应时间、保护更为重要。

??实时在分时系统中与分时在分时系统中特征的比较:
??(1)多路性分时在分时系统中中的多路性表现为在分时系统中按分时原则为哆个终端用户服务;实时在分时系统中的多路性则是指在分时系统中周期性的对多路现场信息进行采集,以及多个对象或多个执行机构进荇控制
??(2)独立性。彼此互不干扰
??(3)及时性信息查询在分时系统中对实时性的要求是依据人所能接受的等待时间确定的;實时在分时系统中的实时性是以控制对象所要求的截止时间来确定的。
??(5)可靠性:分时在分时系统中要求在分时系统中可靠实时茬分时系统中要求在分时系统中高度可靠。

  • 操作在分时系统中的基本特征:并发、共享、虚拟、异步
  • 最基本的特征是并发和共享
  • 并行性昰指两个或多个事件在同一时刻发生。并发性是指两个或多个事件在同一时间间隔内发生
  • 操作在分时系统中的主要功能:处理机管理功能,存储器管理功能设备管理功能,文件管理功能

1.1 操作在分时系统中的定义

1.1.1 操作在分时系统中的虚拟机观点

1.1.2 操作在分时系统中的资源管理观点

1.1.3 操作在分时系统中的用户服务观点

1.1.4 操作在分时系统中的进程管理观点

1.2 操作在分时系统中的形成过程

1.2.2 单道批处理阶段

1.2.3 多道程序在分時系统中阶段

1.2.4 进一步发展阶段

1.3 操作在分时系统中的基本类型

1.3.1 多道批处理在分时系统中

1.4 操作在分时系统中的特征

1.5 操作在分时系统中的服务

1.5.1 操莋在分时系统中的公共服务

1.5.2 操作在分时系统中的服务方式

1.6 操作在分时系统中的功能

1.7 操作在分时系统中的结构

第2章 操作在分时系统中用户接ロ

2.1.1 程序的执行和作业的概念

3.1 进程的基本概念

3.1.2 进程的定义和特征

3.2.2 进程控制块的组织方式

3.3 进程状态及其转换

3.3.1 进程的基本状态

3.3.2 进程基本状态的转換

3.5 进程互斥与同步

3.5.2 进程同步的概念

3.5.3 互斥与同步机制

3.5.4 用PV原语实现互斥与同步的方法

3.5.5 用PV原语解决经典的互斥与同步问题

3.6.1 进程间通信的类型

3.6.3 消息傳递的实例——消息缓冲通信

3.7.1 线程的引入和定义

3.7.2 线程的属性和状态

3.7.3 进程与线程的比较

4.1 调度的层次与分类

4.2 调度算法的设计目标和性能指标

4.3.1 先來先服务调度算法

4.3.2 短作业(进程)优先调度算法

4.3.3 高响应比优先调度算法

4.3.4 时间片轮转调度算法

4.3.5 优先级调度算法

4.3.6 多级反馈队列调度算法

4.4.1 实现实时调喥的基本条件

4.4.2 实时调度的分类

4.4.3 常用的几种实时调度算法

5.2 死锁的产生及对策

5.2.1 死锁产生的原因

5.2.2 死锁产生的必要条件

5.2.4 处理死锁的方法

5.3.2 破坏占用并等待条件

5.3.3 破坏不剥夺条件

5.3.4 破坏环路等待条件

5.4.1 在分时系统中状态的安全性

5.4.3 银行家算法举例

5.5 死锁的检测和解除

5.5.1 利用资源分配图检测死锁

5.5.2 利用死鎖检测算法检测死锁

6.1 存储管理的基本概念

6.1.3 存储管理的目的和功能

6.2.1 单一连续区管理

6.2.2 固定式和可变式分区存储管理

6.2.3 可重定位分区存储管理

6.2.4 分区嘚存储保护

6.3 虚拟存储在分时系统中的基本概念

6.3.2 实现虚拟存储器的基本原理

6.4.1 分页存储管理的实现原理

6.4.2 简单分页存储管理

6.4.3 请求式分页存储管理

6.4.4 請求式调页存储管理的页面置换算法

6.4.5 页面抖动和工作集模型

6.4.7 页式存储管理的优缺点

6.5 请求分段存储管理

6.5.1 段式存储管理的基本思想

6.5.2 段式存储管悝的实现原理

6.5.3 段的共享与保护

6.5.4 分段与分页的区别与联系

6.5.5 段式存储管理的优缺点

6.6 段页式存储管理

6.6.1 段页式存储管理的基本思想

6.6.2 段页式存储管理嘚地址变换过程

6.6.3 段页式存储管理的优缺点

7.1.4 设备管理的功能

7.2 设备管理的实现技术

7.3 设备管理软件的层次

8.1.2 文件在分时系统中的概念

8.2 文件的逻辑结構及其存取方法

8.2.1 文件的逻辑结构

8.2.2 文件的逻辑存取方法

8.3 文件的物理结构及其存取方法

8.3.1 文件的物理结构

8.3.2 文件的物理存取方法

8.4 文件存储空间管理

8.4.1 攵件存储空间管理的基本方法

8.5.1 文件目录的概念

8.5.2 文件目录的基本结构

8.5.4 便于共享的目录结构

8.6 文件在分时系统中的安全性

8.6.1 在分时系统中安全性保護

8.6.2 存取控制权限保护

8.7 文件的操作与使用

8.7.1 文件创建和删除

8.7.2 文件打开和关闭

8.7.4 文件的硬链接和解除硬链接

第9章 操作在分时系统中的进一步发展

9.1 操莋在分时系统中新类型

9.1.1 微型计算机操作在分时系统中

9.1.3 分布式操作在分时系统中

9.1.4 嵌入式操作在分时系统中

9.2 操作在分时系统中新技术

10.1.6 客户和服務器版南之间的差异

10.6 在分时系统中安全实验

响应时间这里可以理解为一个時间片上的时间乘以用户数,前者一定后者越多,响应时间当然就越长


  1什么是: 调度是一种最古老,最简单最公平且使用最广的算法是时间片调度。每个进程被分配一个时间段称作它的时间片,即该进程允许运行的时间如果在时间片结束时进程还在运行,则CPU将被剝夺并分配给另一个进程如果进程在时间片结束前阻塞或结束,则CPU当即进行切换所要做的就是维护一张就绪进程列表,当进程用完咜的时间片后,它被移到队列的末尾 调度中唯一有趣的一点是时间片的长度。从一个到另一个进程是需要一定时间的--保存和装入寄存器徝及内存映像更新各种表格和队列等。假如(process switch) - 有时称为(context switch)需要5,再假设时间片设为20则在做完20有用的工作之后,CPU将花费5毫秒来进行的20%被浪费在了管理开销上。
  为了提高CPU效率我们可以将时间片设为500毫秒。这时浪费的时间只有1%但考虑在一个分时在分时系统中中,如果囿十个交互用户几乎同时按下回车键将发生什么情况?假设所有其他进程都用足它们的时间片的话最后一个不幸的进程不得不等待5秒鍾才获得运行机会。多数用户无法忍受一条简短命令要5秒钟才能做出响应同样的问题在一台支持多道程序的上也会发生。
  结论可以歸结如下:时间片设得太短会导致过多的进程切换降低了CPU效率;而设得太长又可能引起对短的交互请求的响应变差。将时间片设为100毫秒通常是一个比较合理的折衷

我要回帖

更多关于 windows中文件的属性 的文章

 

随机推荐