操作系统复习
1. 进程和线程的区别。
(1)进程是资源分配和保护的基本单位,线程是处理器调度和分派的基本单位,程序执行的最小单元。
(2)同一个进程中可以包含多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程至少包含一个线程。
(3)进程结束后,它所有的线程都将销毁,而线程的结束不会影响同个进程中其他线程的结束。
(4)线程是轻量级的进程,它的创建和销毁所需时间和空间都比进程小很多,所有操作系统的执行功能都是创建线程去完成的。
(5)线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志
2.进程的几种状态
(1)运行状态:进程正在处理机上运行
(2)就绪状态:进程已经获得了除处理机之外的一切所需资源
(3)阻塞状态:进程正在等待某一事件而暂停执行
(4)创建状态:进程正在被创建,尚未转到就绪状态。
(5)结束状态:进程正在从系统中消失,分为正常结束和异常退出。
3.进程通讯的几种方式
(1)共享存储:
低级方式:基于数据结构的共享
高级方式:基于存储区的共享
(2)消息传递:
直接通信方式:直接把消息挂到接收进程的消息队列。
间接通信方式:挂到某个中间实体,接收进程找实体接收消息,类似电子邮件。
(3)管道通信:利用一种特殊的pipe文件连接两个进程
3.内核态和用户态
根据执行程序对资源和机器指令的使用权限可以将处理器的状态分为内核态和用户态。
内核是一组程序模块,运行于内核态,具有直接访问硬件设备和所有内存空间的权限,是仅有的能够执行特权指令的程序。
一般而言,内核具有以下功能:中断处理、时钟管理、原语、系统控制的数据结构及处理(进程管理、存储管理、设备管理)。
三种情况会发生用户态向内核态转换:(其实这三种情况都算是通过中断机制发生)
(1)系统调用(软中断)
(2)中断(外中断)
(3)异常(内中断)
4.什么是中断?
中断是指处理器接收到了来自硬件或者软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。
中断分为内中断和外中断:
(1)外中断,也称中断,指来自CPU执行指令以外的事件的发生,如I/O结束中断、时钟中断。
(2)内中断,又称异常,指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页以及专门的陷入指令等引起的事件。
5.死锁?死锁产生的原因,死锁的必要条件?怎么预防?怎么处理死锁?
死锁:相互等待资源而产生的一种僵持状态,如果没有外力的干预将一直持续这个状态。
产生原因:系统资源不足、相互竞争资源、资源请求顺序不当。
产生死锁的必要条件:
- 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
- 请求与保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不
- 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
- 循环与等待条件:存在一个循环链,互相等待资源的释放
预防死锁:破坏三个条件之一就可以,常见的方法有有序资源分配法、银行家算法。
处理死锁:因为互斥是不可改变的,所以只能破坏其他三个条件中的一个来解除死锁,方法:剥夺资源、杀死其中一个线程
6. 内存管理方式:段存储,页存储,段页存储。
见https://blog.csdn.net/u012813201/article/details/70143990
7. 什么是虚拟内存。
基于局部性原理,我们可以把程序的一部分装到内存,而将其余部分留在外存,就可以启动程序运行。
当所访问的信息不存在时,操作系统就将所需部分调入内存。
此外,操作系统会将内存中暂不需要的部份换出到外存中,从而腾出空间存放将要调入内存的信息。
这样系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。
8. 虚拟地址、逻辑地址、线性地址、物理地址的区别。
https://blog.csdn.net/rabbit_in_android/article/details/49976101