上一页 1 2 3 4 5 6 ··· 14 下一页
摘要: 1、互斥量 可以确保同一时间只有一个线程访问临界区,防止出现竞态条件。 2、原子操作 std::atomic<int> mutex(1); 对原子变量的操作是线程安全的。 3、读写锁 std::shared_mutex mutex; // 读者:共享锁定 mutex.lock_shared(); m 阅读全文
posted @ 2024-03-07 19:55 hellozhangjz 阅读(135) 评论(0) 推荐(0) 编辑
摘要: Iterator Traits 萃取出 Iterator 的性质:迭代器种类、迭代器所指数据类型、迭代器距离类型、迭代器所指数据引用、迭代器所指数据指针。根据不同的迭代器种类可以采取不同的算法策略。但是用iter::interator_categotry、iter::value_type、iter: 阅读全文
posted @ 2024-03-07 13:28 hellozhangjz 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 创建数据库 CREATE DATABASE NAME; 创建表 # 中括号[]是可选的意思,命令中不带中括号 CREATE TABLE table_name ( column1 datatype [NULL or NOT NULL] [DEFAULT 默认值] [AUTO_INCREMENT PRI 阅读全文
posted @ 2024-03-07 10:41 hellozhangjz 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 内存管理 使用物理内存,不安全。 交换: 运行时把进程载入内存,不运行时放回磁盘。利用基址寄存器和界限寄存器计算动态地址。没法动态分配堆内存。 覆盖: 把程序分为很多段,先装入段0,运行完段0再装入段1,有空间就放在段0上边,否则就覆盖段0。 虚拟内存:让程序只有一部分被调入内存的情况下运行。 动态 阅读全文
posted @ 2024-02-29 13:46 hellozhangjz 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 死锁的必要条件 资源互斥。 占有且等待:进程占有的资源在任务完成前不会主动释放。 不可抢占:进程不会强制抢占其他进程的资源。 循环等待。 死锁避免 在分配资源前看是否满足全部条件,不满足则不分配。(银行家算法。) 检测死锁 画出资源分配图,检测是否存在环路。检测环路前要将资源分配图化简,化简的原理是 阅读全文
posted @ 2024-02-29 13:13 hellozhangjz 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 1、生产者消费者问题 信号量版本: # 定义缓冲区大小 bufferSize = 10 # 定义互斥锁和信号量 mutex = Semaphore(1) full = Semaphore(0) empty = Semaphore(bufferSize) # 定义生产者函数 def producer( 阅读全文
posted @ 2024-02-29 13:03 hellozhangjz 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 1、 先来先服务 简单,但对短作业不公平。 2、 短作业优先 有抢占和非抢占版本。对长作业不公平,会导致饥饿问题。 3、 高响应比优先 响应比:等待时间/预计运行时间 没有饥饿问题。 4、 时间片轮转 没有饥饿问题。 若时间片小,进程切换频繁,吞吐量低;若时间片长,则响应时间过长,实时性得不到保证 阅读全文
posted @ 2024-02-29 11:06 hellozhangjz 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 进程拥有资源,包括:内存空间中的代码、数据等;I/O 资源;打开文件;CPU等。 线程执行任务,线程只拥有CPU和少量寄存器,线程之间共享进程的资源。 为什么需要线程 进程切换开销大,主要包括: CPU的上下文切换:保存和恢复相关寄存器的内容 进程相关的数据结构切换:页表、文件描述符、消息队列等. 阅读全文
posted @ 2024-02-29 10:51 hellozhangjz 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 为什么区分内核态和用户态 用户会进行不安全的访问和修改。 操作系统没法进程调度,因为拿不到cpu的执行权。 所以要区分权限,普通进程需要执行特殊操作的时候,需要让内核代为操作(陷入内核)。 什么时候陷入内核 系统调用(trap)、中断(interrupt)和异常(exception)。 系统调用是用 阅读全文
posted @ 2024-02-29 10:18 hellozhangjz 阅读(9) 评论(0) 推荐(0) 编辑
摘要: IO 多路复用 普通情况下,一个进程只能监视一个文件描述符(阻塞),如果使用非阻塞 IO,则会使 CPU 频繁陷入内核和空转,降低效率。而IO 多路复用是操作系统提供的接口,他会帮你同时监视多个 fd,当fd没有事件发生,调用这个接口的用户进程会阻塞,当有事件发生时,返回事件发生的 fd。这样就实现 阅读全文
posted @ 2024-02-28 10:54 hellozhangjz 阅读(15) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 14 下一页