操作系统原理与实践学习要记

1、总述

并发性能够消除计算系统中各个部件之间的相互等待,有效的改善了系统资源的利用率,提高了系统的吞吐量和系统效率。并发是一个异步过程。

联机I/O:联机I/O的缺点是速度慢,I/O设备和CPU仍然串行工作,CPU时间浪费非常大,因此,在批处理系统中引入了脱机I/O技术。I/O工作脱离了主机,外围计算机和主机可以并行工作,大大加快了程序的处理和数据的输入和输出,这种技术被称为脱机I/O技术。

在操作系统中引入多道程序设计的优点:提高了CPU的利用率;提高了I/O设备和内存的利用率;改进了系统的吞吐率;充分发挥了系统的并行性。其缺点是延长了作业周转时间。

2、进程和线程

进程:一个具有独立功能的程序关于某个数据集合的一次运行活动。

多道程序在执行时,需要共享系统资源,从而导致了各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征。

进程队列:将处于同一状态的所有PCB链接在一起的数据结构成为进程队列。

在操作系统中引入线程是为了减少程序并发执行时所付出的时空开销,使得开发力度更细,并发性更好。进程是资源分配的单位,而线程是处理器调度的单位。

创建内核线程的开销会影响应用程序的性能。

线程池思想:在进程建立时就创建若干线程,把这些线程放在一个“池中”等待工作。当服务器收到请求,就唤醒池中一个线程处理请求,任务完成后返回池中在等待其他的工作。如果池中没有可用线程,服务器就一直等待,直到有空闲线程出现为止。优点:一般处理请求比等待创建新线程快,限定了任何时候可存在线程的数量。

CPU=40%轻负载系统 CPU=90%重负荷使用的系统

Linux提供了fork,这是传统进程复制功能的系统调用。还提供了clone,其功能类似于创建一个线程。通过fork和clone创建一个独立进程以共享原来调用进程的地址空间。通过共享父进程的地址空间,clone任务能像独立线程一样工作。

进程调度(低级调度和微观调度)是操作系统中最基本的一种调度,在一般的操作系统中都必须有进程调度,并且调度策略的优劣直接影响到整个系统的性能。决定哪一个进程是下一个得以执行的进程。

系统调度策略有:FCFS(first come first server非抢占式)、SJF(short job first)最佳调度算法,但因为不知道进程执行时间,无法在进程调度层实现、优先级调度、轮转调度(RR),时间片对于算法性能影响很大、多级队列调度、多级反馈队列调度,最通用的CPU调度算法、高响应比优先调度。

由于并发进程之间存在互斥问题,所以,如果进程的推进顺序不当,就可能造成死锁。

3、存储管理

用户程序经编译之后的每个目标模块都以0为基地址进行顺序编址,这种地址成为相对地址或逻辑地址;内存中各个物理储存单元的地址都是从统一的地址开始顺序编址的,这种地址称为绝对地址或物理地址。

虚拟储存器是一个物理上只受内存和外存总容量限制的存储系统,这要求储存管理系统只把进程执行时频繁使用或立即需要的指令与数据放在内存中,而把那些暂时不需要的部分放在外存中,待需要时再自动调入,以提高内存的利用率和并入内存执行的作业道数。

MR=(BR)+(VR)  (BR)、(VR)分别表示寄存器BR与VR中的内容。MR为内存地址即物理地址。BR为基地址寄存器,VR为逻辑地址寄存器。

内存的非连续分配技术,即允许物理空间为非连续的,这样只要有物理内存就可以为进程分配。这种方案有两种实现技术:分页和分段,也可以将两者合并起来使用。(避免连续内存分配即分区分配出现外部碎片导致内存使用率降低和拼凑付出的CPU代价)

交换是指先将内存中某部分的程序或数据写入外存交换区,再从外存交换区中调入指定的程序或数据到内存中,并让其执行的一种内存扩充技术。

页:在分页存储管理方式中,系统会把用户程序的地址空间划分成若干个大小相同的区域,每个区域称作一个页面或页。每个页都有个编号,叫做页号。类似的,也把内存空间划分成若干和页大小相同的物理块,这些物理块叫“帧”或内存块。同样,每个物理块也有一个编号。在不同的机器中页面的大小也不同。

两级页表结构的系统中,地址转换方法如下:利用外层页号p1检索外层页表,从中找到相应的内存页表的基址p2,在利用p2作为该内层页表的索引,找到该页面在内存的块号,用该块号和页内地址d拼接起来形成访问该块内存的物理地址。Pentium II处理器就是采用这种方法。(64位逻辑地址采用多级页表结构)



留言