avatar
文章
464
标签
16
分类
76

Believe it

Believe it

Maven
发表于2020-04-02|LanguageJava
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial maven依赖管理 maven工程可以帮助我们管理jar包的依赖,他有一个jar包仓库,这导致我们自己的项目会非常小。 maven启动1mvn tomcat:run maven仓库启动 先本地,然后私服,然后中央仓库 Java代码 核心代码+配置文件+测试代码+测试配置文件 传统项目123workspace src config maven项目123456789workspace src main java(核心代码) config(配置文件) webapp(css,js) test java config maven命令12345mvn clean # 清除编译文件mvn compile # 编译mvn test # 编译+测试mvn package # 编译+测试+打包mvn install # 编译+测试+打包 ...
操作系统13-文件系统
发表于2020-04-02|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 文件系统和文件 一种持久性存储的系统抽象。 文件头 储存文件信息,保存文件属性,跟踪那一块储存块属于逻辑上文件结构的哪一个偏移。 需要哪些元数据来管理打开的文件 文件指针,文件打开计数,文件储存位置,访问权限 访问2-12字节的空间 读一个或者多个扇区,然后返回 访问方式 基于顺序一次读取,随机访问,基于内容查找的访问 文件类型 操作系统不关心 文件的锁 锁粒度?操作系统提供了不同的锁 目录 目录是特殊的文件,每个目录都有一张表 目录如何存 数组、链表、hash、其他数据结构都可以 名字解析 一层一层解析,为了提高效率,可以使用当前工作目录(缓冲) 文件系统挂载 mount和unmount 文件别名 硬链接: 多个文件项指向一个文件 软链接: 存路径, 删除文件 引用计数 stat指令 间接层,目录项数据结构存指针,根据指针来定位 如何避免目录死循环 通过检测来避免死循环 文件系统的类别 磁 ...
操作系统12-死锁
发表于2020-04-02|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 资源分配图 有两个集合,一个是进程集合,另一个是资源集合,如果进程i需要某资源j的一部分,则连边$i\to j$, 如果一个资源j的一部分被分配给了进程i,则连边$j\to i$, 资源分配图出现了有向环是发生了死锁的必要不充分条件。因为边只表示一部分资源的分配,而不是全部资源 死锁的必要条件 互斥、持有并等待、无抢占、循环等待 死锁预防 破坏互斥不现实,破快占用并等待不实现,因为资源无法动态预判,可能发生饥饿,破坏抢占也不现实,破坏循环等待有效,将资源排序并让进程按顺序申请。 死锁避免 判断某个资源的分配是否导致了死锁,需要系统具有额外的先验信息提供, 安全状态: 存在序列$P_1$,$P_2$…,针对每个$P_i$,$P_i$要求的资源能够由当前可用资源+所有的$P_j$持有的资源来满足$j\lt i$ 银行家算法 寻找安全序列是否存在的算法。 死锁的检测 1简化资源分配图为线程等待图 ...
操作系统11-同步
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 信号量 就是一个整型加上一个队列 1234class Semaphore{ int sem; WaitQueue q;} P操作 让信号量减少1,如果<0,把自己挂起 12345678// 有原子性P(){ sem--; if(sem<0){ Add this thread to q; block(t); }} V操作 让信号量加1,如果&le;0,唤醒挂起的一个线程 12345678// 有原子性V(){ sem++; if(sem<=0){ Remove a thread t from q; wakeUp(t); }} 简单的同步 这是A的代码 12do a1do a2 这是B的代码 12do b1do b2 我 ...
操作系统10-进入临界区
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial n个进程互斥,留坑 禁用中断 进入临界区以后禁用中断,离开临界区以后开启中断 一但禁用了中断,整个系统都停止,可能导致饥饿,要是临界区有个死循环就完蛋,多个CPU无法解决问题。 利用软件解决轮换1234567do{ while(turn!=i); // 进入临界区 // do something turn=j // 离开临界区}while(1); peterson算法123456789do{ flag[i]=true; // 自己要进去 turn = j; // 把机会让给别人 while(flag[j]&&turn==j); // 进入临界区 // do something flag[i]=false; // 离开临界区}while(1); n个进程的互斥 Bakery算法, 进入临界区以前,进程接受一 ...
操作系统9-CPU调度
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial # CPU调度 # 调度指标 CPU使用率(CPU忙状态所占的时间比例),吞吐量(单位时间内完成的进程数量),周转时间(一个进程从初始化到结束,花费的所有时间), 等待时间(进程在就绪队列中等待的总时间), 响应时间(一个请求从提交到产生相应所花费的时间) # FCFS first come first served 先来先服务 # SPN Shortest Process Next 短进程优先 (抢占或者不抢占) 导致长任务饥饿 # HRRN Highest Response Ratio Next 最高响应比优先,等待时间/执行时间 不可抢占,关注等待,防止无期限推迟。 # Round Robin 时间片轮循 时间片太长导致退化为FCFS,太短导致吞吐量受影响 # Multilevel Feedback Queue 优先级队列中的轮循,把所有就绪进程分为不同的级别队 ...
操作系统8-线程
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 线程管理线程控制块 TCB 类似PCB 线程优点 一个进程可以同时存在多个线程,各个线程之间可以并发执行,各个线程之间可以恭喜那个地址空间和文件资源。 线程缺点 一个线程崩溃会导致所属进程的所有线程崩溃。 进程与线程 进程是资源分配单位,线程是CPU调度单位 进程拥有完整的资源平台,线程只独享其中的寄存器和栈 线程也有就绪阻塞执行三种状态和状态转化关系 线程能减少并发执行的时间和空间开销,线程创建终止块,切换快,共享资源可直接进行不依赖内核通信。 用户线程和内核线程 用户线程操作系统看不到,内核线程操作系统看得到 用户线程 线程的创建终止同步和调度都是线程库实现的。TCB在进程内部 用户线程的缺点 当一个线程阻塞以后,整个进程都阻塞了,因为操作系统看不到用户心线程,只能看到进程。 内核线程 内核线程是操作系统看得到的,他的TCB在和PCB放在一起 内核线程的创建终止等都是通过系统调用或 ...
操作系统7-进程
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 进程管理进程的组成 代码+数据+程序计数器中的值,堆和栈,一组资源(打开的文件) 进程的特点 动态创建,并发或者并行,独立(执行的正确性不受其他进程影响) 进程控制块(PCB) 操作系统为每个进程维护了一个进程控制块,用来保存与该进程有关的各种状态信息。是进程存在的唯一标示。 包含了进程标识信息(父进程,用户标识), 处理器状态信息保存区(用户可见寄存器,PC寄存器,程序状态字,栈指针), 进程控制信息(调度和状态信息、进程键通讯信息,储存管理信息,进程所用资源信息,数据结构连接信息) PCB的组织方式: 链表或者索引表 进程的创建的时机 系统初始化, 用户的请求,进程的请求 进程的运行 由操作系统调度执行 进程的等待 请求并等待系统服务,启动某种操作,需要的数据没有到达 进程的唤醒 被阻塞的进程需要的资源得到满足,等待的事件到达,PCB被插入到就绪队列。 进程的退出 正常退出、错误退出 ...
操作系统5-虚拟内存
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 虚拟内存覆盖技术 把一些不会相互调用的函数分配到相同的地址空间,当需要调用的时候覆盖内存就可以了。 需要程序员来设计,费时费力,模块的覆盖是时间换空间 交换技术 让暂时不运行的程序交换到磁盘中,当使用的时候换回内存。 只在内存不够的时候交换,磁盘的交换区的空间必须足够大,换出然后换入的时候物理内存不一定一样了,但是我们可以用虚地址解决这个问题。 虚存技术 像覆盖技术一样不把程序所有的内容都放入内存,想交换技术那样,只对进程的部分内容进行交换, 虚存技术的页表项 逻辑页号+访问位+修改位+保护位+驻留位+物理页号 驻留位表示页面是否在内存中,保护位表示权限,修改位表示这个页是否被写过用于支持内存硬盘的一致性,访问位表示这个页面最近是否被访问过 如果我们发现驻留位为0,则触发缺页中断,操作系统把页面读入,然后修改页表,最后跳回发生缺页中断的位置继续执行 后备存储 可以映射到已有的二进制文件中 ...
操作系统4-非连续内存分配
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 非连续内存分配优点: 一个程序的物理空间是非连续的,更好的内存利用,允许共享代码与数据(共享库等),支持动态加载和动态链接 分段机制 程序等栈段、堆段、数据段、等等分散到多个物理空间, 硬件堆分段寻址方案 段号+偏移量,高位为段号,低位为偏移量,用段表来映射,段表中存了起始地址和长度信息,CPU可以在访问前做安全检测, 分页机制 让段的长度固定,就成了分页机制。 页帧 物理内存被分割为大小相等的帧 页表 dirtybit+residentbit+clockbit+页帧号 分页机制的性能 访问一个内存单元需要两次访问: 页表+数据 页表太大怎么办,多个程序多个页表,更大了,这个不能放到cpu,放到内存又会很慢 TLB快表 本质上是页表的缓存,容量有限,速度快 多级页表 多了一次查找,但是空间占用更加低了,就像一个字典树一样,当然省空间 反向页表 那么页表项的数量就只和物理内存大小有关了,和 ...
1…192021…47
avatar
fightinggg
O ever youthful, O ever weeping
文章
464
标签
16
分类
76
Follow Me
公告
This is my Blog
最新文章
智慧的疆界:从图灵机到人工智能2023-05-17
Transformer2023-03-28
2023你好2023-02-06
VPN与代理那些事2022-07-24
CPU架构介绍2022-07-19
分类
  • ACM238
    • 刷题实战56
      • CodeForces7
      • bzoj4
      • hdu19
      • uoj1
      • 比赛15
      • 洛谷3
标签
AI AspectJ CPU docker 结构体中的引用 SpringFox使用 跟我一起写编译器 GPT linux指令 读书,HTTP 读书 flag Transformer Proxy VPN nginx
归档
  • 五月 20231
  • 三月 20231
  • 二月 20231
  • 七月 20223
  • 五月 20221
  • 三月 20221
  • 二月 20221
  • 一月 20221
网站资讯
文章数目 :
464
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2023 By fightinggg
框架 Hexo|主题 Butterfly