摘要:
内存管理 使用物理内存,不安全。 交换: 运行时把进程载入内存,不运行时放回磁盘。利用基址寄存器和界限寄存器计算动态地址。没法动态分配堆内存。 覆盖: 把程序分为很多段,先装入段0,运行完段0再装入段1,有空间就放在段0上边,否则就覆盖段0。 虚拟内存:让程序只有一部分被调入内存的情况下运行。 动态 阅读全文
posted @ 2024-02-29 13:46
hellozhangjz
阅读(26)
评论(0)
推荐(0)
摘要:
死锁的必要条件 资源互斥。 占有且等待:进程占有的资源在任务完成前不会主动释放。 不可抢占:进程不会强制抢占其他进程的资源。 循环等待。 死锁避免 在分配资源前看是否满足全部条件,不满足则不分配。(银行家算法。) 检测死锁 画出资源分配图,检测是否存在环路。检测环路前要将资源分配图化简,化简的原理是 阅读全文
posted @ 2024-02-29 13:13
hellozhangjz
阅读(23)
评论(0)
推荐(0)
摘要:
1、生产者消费者问题 信号量版本: # 定义缓冲区大小 bufferSize = 10 # 定义互斥锁和信号量 mutex = Semaphore(1) full = Semaphore(0) empty = Semaphore(bufferSize) # 定义生产者函数 def producer( 阅读全文
posted @ 2024-02-29 13:03
hellozhangjz
阅读(182)
评论(0)
推荐(0)
摘要:
1、 先来先服务 简单,但对短作业不公平。 2、 短作业优先 有抢占和非抢占版本。对长作业不公平,会导致饥饿问题。 3、 高响应比优先 响应比:等待时间/预计运行时间 没有饥饿问题。 4、 时间片轮转 没有饥饿问题。 若时间片小,进程切换频繁,吞吐量低;若时间片长,则响应时间过长,实时性得不到保证 阅读全文
posted @ 2024-02-29 11:06
hellozhangjz
阅读(23)
评论(0)
推荐(0)
摘要:
进程拥有资源,包括:内存空间中的代码、数据等;I/O 资源;打开文件;CPU等。 线程执行任务,线程只拥有CPU和少量寄存器,线程之间共享进程的资源。 为什么需要线程 进程切换开销大,主要包括: CPU的上下文切换:保存和恢复相关寄存器的内容 进程相关的数据结构切换:页表、文件描述符、消息队列等. 阅读全文
posted @ 2024-02-29 10:51
hellozhangjz
阅读(15)
评论(0)
推荐(0)
摘要:
为什么区分内核态和用户态 用户会进行不安全的访问和修改。 操作系统没法进程调度,因为拿不到cpu的执行权。 所以要区分权限,普通进程需要执行特殊操作的时候,需要让内核代为操作(陷入内核)。 什么时候陷入内核 系统调用(trap)、中断(interrupt)和异常(exception)。 系统调用是用 阅读全文
posted @ 2024-02-29 10:18
hellozhangjz
阅读(44)
评论(0)
推荐(0)

浙公网安备 33010602011771号