操作系统知识点

1.进程的状态

就绪状态:进程已获得除CPU外的所需资源,等待分配CPU资源,只要分配到CPU就可执行。在某一时刻,可能有若干个进程处于该状态。

运行状态:占用CPU资源运行,处于此状态的进程的数目小于等于CPU的数目。

阻塞状态:由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把CPU分配给该进程,也无法执行。

进程转换图

只要就绪队列非空,一个进程由运行态–>阻塞态,必然会立即导致另一个进程由就绪态–>运行态。

2.进程与线程的区别

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

进程是系统进行资源分配和调度的一个独立单位

线程是进程的一个实体,是CPU调度和分派的基本单位。

线程是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),线程可与同属一个进程的其他线程共享进程所拥有的全部资源。

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行

进程是死的只是一些资源的集合,真正的程序运行都是线程来完成的。

程序启动的时候操作系统就帮你创建了一个主线程。

每个线程都有自己的堆栈。

3.进程和程序的区别

进程即运行中的程序,晋城市在运行的,程序是非运行的。

程序可以存在外存中,也可以存在内存中。

主要是静态和动态的区别。

4.进程通信(IPC)的几种方式

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

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

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

4.消息队列:消息队列是消息链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号量传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

5.信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生

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

7.套接字

5.线程同步的几种方式

生产者消费者问题

6.用户态与内核态的区别

当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(内核态)。

当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。

用户态切换到内核态的3种方式:系统调用、异常、外围设备中断。

7.死锁,导致死锁的原因

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,他们都将无法推进下去。此事称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

导致死锁的主要原因:

1.系统资源不足

2.进程运行推进的顺序不合适

3.资源分配不当

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

1.互斥条件:一个资源每次只能被一个进程使用

2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

3.不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。

4.循环等待条件:若干进程之间形成一种头尾相连的循环等待资源关系。

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,只要上述条件之一不成立,就不会发生死锁。

9.页面置换算法,缺页数的计算

地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出。用来选择淘汰哪一个页面的规则叫页面置换算法。

1.最佳置换算法(OPT) 置换以后不再被访问,或者在将来最迟才回被访问的页面,缺页中断率最低。但是该算法需要依据以后各业的使用情况,而当一个进程还未运行完成是,很难估计哪一个页面是以后不再使用或在最长时间以后才会用到的页面。所以该算法是不能实现的。但该算法仍然有意义,作为很亮其他算法优劣的一个标准。

2.先进先出置换算法(FIFO) 置换最先调入内存的页面,即置换在内存中驻留时间最久的页面。按照进入内存的先后次序排列成队列,从队尾进入,从队首删除。但是该算法会淘汰经常访问的页面,不适应进程实际运行的规律,目前已经很少使用。

中断次数为n,内存中分配了m个物理块,缺页中断率为n/m*100% 。

3.最近最久未使用(LRU) 置换最近一段时间以来最长时间未访问过的页面。根据程序局部性原理,刚被访问的页面,可能马上又要被访问;而较长时间内没有被访问的页面,可能最近不会被访问。

  LRU算法普偏地适用于各种类型的程序,但是系统要时时刻刻对各页的访问历史情况加以记录和更新,开销太大,因此LRU算法必须要有硬件的支持。

堆栈实现LRU

缺页率计算:缺页率计算

4.Clock置换算法

5.最少使用(LFU)置换算法

10.操作系统的四个特性

并发性、共享性、虚拟性、异步性

Table of Contents