禁用中断
进入临界区以后禁用中断,离开临界区以后开启中断
一但禁用了中断,整个系统都停止,可能导致饥饿,要是临界区有个死循环就完蛋,多个CPU无法解决问题。
类似PCB
一个进程可以同时存在多个线程,各个线程之间可以并发执行,各个线程之间可以恭喜那个地址空间和文件资源。
一个线程崩溃会导致所属进程的所有线程崩溃。
进程是资源分配单位,线程是CPU调度单位
进程拥有完整的资源平台,线程只独享其中的寄存器和栈
线程也有就绪阻塞执行三种状态和状态转化关系
线程能减少并发执行的时间和空间开销,线程创建终止块,切换快,共享资源可直接进行不依赖内核通信。
用户线程操作系统看不到,内核线程操作系统看得到
线程的创建终止同步和调度都是线程库实现的。TCB在进程内部
当一个线程阻塞以后,整个进程都阻塞了,因为操作系统看不到用户心线程,只能看到进程。
优点: 一个程序的物理空间是非连续的,更好的内存利用,允许共享代码与数据(共享库等),支持动态加载和动态链接
程序等栈段、堆段、数据段、等等分散到多个物理空间,
段号+偏移量,高位为段号,低位为偏移量,用段表来映射,段表中存了起始地址和长度信息,CPU可以在访问前做安全检测,
让段的长度固定,就成了分页机制。
物理内存被分割为大小相等的帧
dirtybit+residentbit+clockbit+页帧号
访问一个内存单元需要两次访问: 页表+数据
页表太大怎么办,多个程序多个页表,更大了,这个不能放到cpu,放到内存又会很慢
DISK中放操作系统,BIOS是基本的IO系统,检测外设,Bootloader能够加载OS,BIOS从CS段寄存器;IP指令寄存器开始执行,然后BIOS会POST(加电自检),然后BIOS找到bootloader加载Bootloader,并传递控制权,然后Bootloader找到OS,读到内存吧控制权交给OS
系统调用是应用程序主动想操作系统发出服务请求,
异常是来源于不良的应用程序的非法指令
中断是来自不同硬件设备到额计时器和网络的中断
我们不能让应用程序直接访问外设,这不安全,另外OS可以提供更好的借口,通用可移植
保存现场、查表、中断处理、清楚中断标志、恢复现场