1.线程与进程,进程间的通信方式。
线程:是轻量型进程,由进程创建,是系统进行独立调度和分配的基本单位,线程会与同属于一个进程的其他线程共享该进程所具备的资源,但是线程本身也具备一些自己特有的信息,比如程序寄存器等。
进程:计算机上所有可以运行的程序,通常包括操作系统,被组织成若干顺序进程。是系统进行资源分配的基本单位,创建一个进程,系统会为其分配相应的内存空间等资源。(我们平时用的exe类型的就是一个进程,比如WeChat和QQ以及浏览器)。一个进程可以拥有一个或者多个线程,线程的引入增加了并发度。
进程间通信方式:
- 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
- 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
- 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
- 共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。
- 信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
- 套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
- 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
互斥:以某种手段确保当一个进程在使用一个共享变量或文件时,其他进程不能做同样的操作。
读写者问题是用进程实现。
2.操作系统的特点?功能?
操作系统是管理软硬件资源、控制程序执行改善人机界面,合理组织计算机工作流程和为用户使用计算机提供良好运行环境的一种系统软件。
由IO设备、存储器、运算器、控制器组成。
操作系统的特性:
(1)并发性:区分并行和并发,并发性指的是系统中同时存在多个运行的程序。并发:一个cpu上交替地同时执行多个程序,宏观并行,微观有时序。并行:同一时刻多个程序都在执行。
(2)共享性:指的是资源的共享,是指同一资源可为多个并发执行的进程所共享。
两种共享的方式:互斥共享(临界资源)和同时访问
(3)虚拟性:时分复用技术(分时系统)和空分复用技术(虚拟存储技术)
(4)异步性:指进程并非一次性执行完,而是走走停停已不可预知的速度向前推进。
3.进程。
进程可以分为五个状态,分别是:
- 创建状态
- 就绪状态
- 运行状态
- 阻塞状态
- 终止状态
4.死锁。
如果一个进程集合中的每一个进程都在等待只能由本集合中的其他进程才能引发的事件。
死锁的必要条件:
- 互斥:只允许一个进程使用;
- 占有与等待:已分配到资源的进程可以请求新资源;
- 不可抢占:资源只能显式释放;
- 环路等待:环路中的进程都在等待下一个进程的资源。
解决死锁:
- 鸵鸟算法;
- 破坏死锁产生的后三个条件;
- 银行家算法。
5.银行家算法。
进程资源分配避免死锁的调度算法。
要求进程预先提出自己的最大资源请求,并假设系统拥有固定的资源总量。
维护进程序列的已分配资源表、还需要资源表、系统剩余量;在进程请求资源时比对是否能避免死锁。
6.进程调度算法。
- 先来先服务FCFS:非抢占式;利于长进程,利用cpu繁忙的系统;
- 最短作业优先:非抢占式,不利于长进程,提高了吞吐量;
- 最短剩余时间优先:抢占式;
- 时间片轮转调度:抢占式,不利于紧急,对性能影响大;
- 多级队列:设置不同优先级队列。
7.系统调用与中断。
系统调用:操作系统与用户程序之间的接口由操作系统提供的扩展指令集来定义,这些扩展指令集就是系统调用。系统调用执行是在核心态,用户程序是在用户态运行的。
中断:改变cpu执行顺序的事件。当一个中断信号达到肘, CPU 必须停止它当前正在做的事情,并且切换到一个另一个 活动。
8.存储管理。
存储管理器作用:
- 记录存储器的使用情况;
- 分配回收进程所需的存储空间;
- 若内存太小,容不下所有进程,需要把内存中暂时不能运行的进程送到磁盘上。
存储管理主要涉及内存空间的分配与回收、地址的转换、内存空间的扩充(覆盖和交换)、存储保护。
进程换进换出和页面置换是由于内存不足导致的。
重定位:逻辑地址到物理地址的映射。
存储保护:防止跳转访问任意地址。
为了解决重定位和存储保护:增加两个特殊的硬件寄存器,基地址寄存器和边界寄存器。进程被调度执行时,把该进程所在分区的起始地址放在基地址寄存器中,把分区长度放在边界寄存器中,
其中覆盖技术:是指同一个进程内进行的,不需要将所有的数据全部移入内存,分为固定区和覆盖区。现代技术改为虚拟内存技术。
交换:指的是进程之间的,是中级调度,将阻塞的进程调出到外存中去。
待更新……