操作系统
1.进程PCB(控制块)包含
进程标识符,内部标识符用来给操作系统使用,外部标识符给用户使用。
处理机状态,包括通用寄存器,指令计数器
进程调度信息,包括进程状态是阻塞还是运行,进程优先级等
进程控制信息,程序和数据的地址,资源清单,进程同步等
2.进程与线程区别
进程是资源分配的实体,线程是资源调度的实体,一个进程可以有多个线程,线程之间共享进程资源,线程有自己独立的堆栈,不与进程共享,线程更轻量级。
3.进程之间通信方式
管道、系统IPC(消息队列、共享内存),socket。
管道分为普通管道和命名管道,命名管道可以在无亲缘关系的进程之间通信,普通管道用于有亲缘关系,管道是一种半双工的通信方式。
4.用户态和核心态的区别
运行在用户态的程序不能访问操作系统的内核数据结构和程序。切换到内核态的三种方式,系统调用、异常、外围设备中断。
系统调用是为用户设计的一种访问操作代码的方式,实现方式为中断。异常比如缺页。设备中断比如设备IO完成。中断过程:发出中断请求,操作系统保存当前进程的上下文信息,检查中断向量表是那种中断,然后开始中断处理,执行程序。
5.用户栈和内核栈的区别
操作系统内存存在二个区域,一个是用户区,一个是内核区。用户栈数据存放在用户区,当中断或者系统调用之后,系统进入内核态执行程序,执行之后的结果是保存在内核区,需要从内核区将数据再拷贝到用户区
6.线程池是生成若干个线程睡眠,需要就从池中唤醒一个,使用完毕之后归还在睡眠。
7.死锁的必要条件:
互斥、请求保持、不可剥夺、环路等待。
8进程调度算法
先来先服务、时间片轮转、短作业优先,高响应比优先,多级反馈队列。
多级反馈队列:新来的放到队列尾端,按照FCFS原则调度,如果没有完成,就放到第二级队列中。对于短作业可以及时处理,长作业也不会长时间不处理。
9.内存分配算法
首次适应是从分区链表中地址值选择一个合适的区域,循环首次是开始的位置是上次查找的位置。最佳适应算法是将分区链表按照大小排序,每次取合适的最小的,最坏适应算法也是排序,取最大的。伙伴系统是存在多个大小不一的分区链表,每次找2的i次方的分区,如果没有就从2的i+1次方分裂。
10.虚拟内存
段是信息的逻辑单位,页是信息的物理单位。一个程序被分为若干段,包括数据段、代码段、堆栈段。段更利于代码共享和调试
11.页面置换算法
最佳置换算法:理想化的模型,不可能预知系统状态
先进先出.LRU clock