![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 91
操作系统
tomjourney
积善之家 必有余庆
展开
-
29.操作系统对磁盘的4层抽象小结
本文总结了操作系统对磁盘的4层抽象,并给出了详细介绍的post链接;原创 2022-07-24 17:49:24 · 711 阅读 · 0 评论 -
28.文件目录解析代码实现
1.本文内容总结自B站《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;【图解】目录解析步骤(以解析/my/data/a文件为例)补充目录解析过程也可以参考下图。上面是解析目录的整个过程,接下来看下目录解析的代码实现;...原创 2022-07-24 17:30:06 · 782 阅读 · 0 评论 -
27.目录与文件系统
1.本文内容总结自B站《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.第4层抽象抽象整个磁盘到文件系统。原创 2022-07-23 22:41:41 · 799 阅读 · 0 评论 -
26.文件使用磁盘的代码实现
1.本文内容总结自B站《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;原创 2022-07-23 22:14:11 · 778 阅读 · 1 评论 -
25.从生磁盘到文件
索引结构总结(重要*)适合顺序读写。原创 2022-07-23 14:16:35 · 378 阅读 · 0 评论 -
24.原生磁盘的使用
1.本文内容总结自B站《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;原创 2022-07-23 09:59:02 · 699 阅读 · 0 评论 -
23.键盘
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.键盘 是输出型外设;【图解】外设工作原理:补充:外设驱动主要做3件事情(外设就包括了显示器,键盘,鼠标等)补充2: 其他外设工作原理类似,同上述外设驱动的3件事情;1)键盘中断初始化 【图解】1)0x21号中断是键盘中断,键盘中断处理程序为 keyboard_interrupt ;2) _keyboard_interrupe 代码3)处理扫描码 key_table + eax*4 【图解】调用 do_self原创 2022-07-13 12:47:21 · 477 阅读 · 0 评论 -
22.IO与显示器
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.显示器是输入型外设;3.本章主要内容是讲 显示器是如何被驱动的;或操作系统是如何让用户来使用显示器的;4.Printf是如何把字符打在显示器上的;1)终端设备管理【图解】本章主要讲中断 IO设备 ,包括键盘和显示器;2)如何让外设工作起来 ;...原创 2022-07-12 13:04:27 · 496 阅读 · 0 评论 -
21.内存换出
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.有内存换入就有内存换出。3.因为物理内存空间有限,n次(第n页)换入后导致物理内存用完,则n+1次(第n+1页)换入就会失败;4.这时需要把某一页换出到磁盘,然后再执行n+1次(第n+1页)换入。1)并不能总是获得新的页2)选择需要换出的物理内存页的选择算法补充:物理页换出的选择算法代码应该放在 get_free_page() 函数中,换出到磁盘后以腾出空闲页;1)FIFO,先进先出算法;序号1234567891011页原创 2022-07-09 07:08:53 · 646 阅读 · 4 评论 -
20.内存换入-请求调页
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.操作系统关于内存管理的核心是基于虚拟内存的分段和分页管理;3.而用内存换入和换出实现虚拟内存 ;1)段页同时存在的内存管理图像2)用户眼里的内存(就是虚拟内存) 【图解】3)换入换入就是在虚拟内存与物理内存的映射上进行工作;【图解】补充:在把3G~3.5G数据段从磁盘 换入 到物理内存前,操作系统为了保护现场,需要把物理内存中0G~1G的代码段 换出 到磁盘;【小结】1)以上2个场景,用户感觉到 可以使用 0~1G范原创 2022-07-08 12:51:55 · 1355 阅读 · 0 评论 -
19.段页结合的实际内存管理
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.段与页3.段页各自工作机制问题:如何把 分段式内存管理 与 分页式内存管理 联系起来?1)虚拟内存定义 【图解】2)段页同时存在:段面向用户/页面向硬件【图解】用户程序分段存储在虚拟内存,包括数据段,代码段等;以用户代码段为例:把用户代码段分为3个内存页进行存储,其中某段的虚拟地址为0x00345008,映射的物理地址是 0x7008;补充:0)背景1)段页同时存在时的重定位(重定位也称为地址翻译,逻辑地址翻译为物原创 2022-07-04 10:47:24 · 918 阅读 · 2 评论 -
18.多级页表与快表
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.操作系统内存管理:分页机制+多级页表+快表来实现;1)分页的问题(大页表):为了提高内存利用率,页应该小,页小了,页表项就多了,页表就大了;(页是4K,每个段最多浪费4K)【例】页表结构与大页表页号页框号保护05R11R/W23R/W36R1)页表只存放用到的页(页表号不连续)实际上,大部分逻辑地址不会用到;把不会用到的逻辑页号从页表中删除,从而减少了当前进程的页表大小;即,用到的逻辑页才有页表项; 2) 用到的逻辑页才有原创 2022-07-04 09:53:12 · 2898 阅读 · 0 评论 -
17.内存分区与分页
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.程序使用内存的3个步骤:1)内存分区: 内存如何分割,以便把程序的各个段载入到相应的内存分区;简单地,内存分区指的是划分的一段用于存储程序段(或代码段cs,或数据段ds)的内存空间;1)固定分区等分,操作系统初始化时把内存等分为k个分区;但是段长度有大有小,固定分区不能满足段长度不定的业务场景; 1)核心数据结构2) 请求分配内存【图解】3)释放内存【例】段2不再需要,释放段2的内存同时把释放出的内存更新到空间分区原创 2022-07-04 09:07:57 · 422 阅读 · 0 评论 -
16.内存使用与分段
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;1)内存使用:将程序放到内存中,PC寄存器指向开始地址;2)把程序加载到内存;【图解】问题:解决方法:3)程序加载到内存的过程需要找一段空闲内存,其基址为A,将磁盘上的程序加载到这段内存,执行重定位修改程序中的内存地址(重定位的具体做法是把载入的这段程序中的所有内存偏移量统统加上空闲内存的基址A);然后程序取指执行,程序正常运行起来,内存也就被顺利使用了;4)什么时候完成重定位?4.1)重定位优缺点: 补充:5)一个重要概原创 2022-07-03 22:18:36 · 716 阅读 · 0 评论 -
15.操作系统死锁处理
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;1)死锁: 多个进程由于互相等待对方持有的资源而造成的谁也无法执行的情况;1.1)死锁造成的结果:1.2)正常代码示例补充:PV操作:1.3)死锁代码示例(可以看做是用户程序写错了顺序)同正常代码相比,把生产者的P(mutex) 放在P(empty)的前面,把消费者的P(mutex)放在 P(full)的前面,如下:生产者消费者Producer(item){ P(mutex); P(empty);原创 2022-07-01 16:24:46 · 1337 阅读 · 0 评论 -
14.信号量的代码实现
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;1)信号量定义:2)操作系统内部也是有信号量来实现多进程同步合作3)借助信号量可以完成的工作4)信号量数据结构【2.2】代码2-读磁盘的信号量【2.3】代码3-sleep_on形成的队列注意:代码1用 if 判断信号量,代码2用 while 判断信号量,注意两者的区别;...原创 2022-07-01 09:57:48 · 900 阅读 · 0 评论 -
13.信号量临界区保护
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.操作系统使用信号量实现进程同步(合作),走走停停,推进多进程合理有序向前执行; 3.靠临界区保护信号量,靠信号量实现进程同步;0)信号量1)问题 图解: 并发问题例子,empty = -1,但有2个生产者进程睡眠,这说明empty信号量的值是错误的;1)竞争条件: 图片解说:错误和调度顺序有关;2)解决竞争条件的方法 上图显示的执行顺序如下:时间进程代码或操作1P1检查并给empty上锁2P1.register=empt原创 2022-06-30 16:25:32 · 631 阅读 · 0 评论 -
12.进程同步与信号量
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;【1】原创 2022-06-30 12:00:51 · 1278 阅读 · 0 评论 -
11.cpu调度策略与schedule调度函数
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.cpu调度: 指的是 cpu从就绪队列中选择一个进程来执行;选择哪一个进程是调度算法的执行结果;3. 相关定义:4.4种调度算法列表(非常重要*):1)问题: 进程pid1执行阻塞,应该切换到 pid2 还是pid3执行,这就需要调度算法来决定了;1)调度策略:FIFO,优先级 ;2)调度算法应该满足进程正常运行条件:3)总原则:系统专注于任务执行, 又能合理调配任务;4)如何做到合理? 需要折中,综合考虑吞吐量与响应时原创 2022-06-16 22:26:37 · 831 阅读 · 0 评论 -
10.操作系统演进过程
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.思维僵化与发散3.发散思维(与各位共勉)要管理cpu,就要使用cpu;如何使用cpu?为pc寄存器设置初值,然后cpu进行取指执行;cpu执行一会,就需要等待一段时间,效率低;如 操作io,cpu需要阻塞等待io响应;在 磁盘被请求到磁盘准备好数据这一段时间,cpu都只能等待阻塞,所以效率低;1)多个程序交替执行,解决cpu低效问题【注】本文程序指的是执行指令序列,其中执行序列可以称为线程,进程包含线程和执行资源;从程序原创 2022-06-05 15:56:59 · 433 阅读 · 0 评论 -
9.内核级线程代码实现
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.进程包括资源与执行序列,其中执行序列用线程来实现,线程分为用户线程和内核线程;进程中的资源管理主要是内存管理;3.进程在操作系统的代码实现: 通过内核级代码 加上 内存管理代码 ;【补充】线程切换步骤:1) fork:2 )fork代码的工作:3)具体代码fork系统调用会展开为 例:__NR_write 是系统调用号,用来标识是哪种系统调用;.........原创 2022-06-05 14:55:30 · 907 阅读 · 1 评论 -
8.内核级线程(核心级线程)
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.为什么要讲线程呢。实际要讲进程的切换;进程的切换包括切换指令,切换资源;切换指令就是切换线程;2)为什么没有用户级进程?1) 多核:多个物理cpu,但共用同一个缓存,同一个MMU内存映射单元;2)多处理器:多个物理cpu,每个cpu有自己的缓存,自己的MMU内存映射单元;【补充1】内存映射单元【补充2】并发与并行区别3)用户级线程与内核级线程1)要有核心级线程,需要既在用户态(用户栈)运行,也在内核态(内核栈)运行;所原创 2022-06-03 10:46:28 · 3630 阅读 · 0 评论 -
7.用户级线程
1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;2.本文会产生进程与线程的区别;问题:把进程pid1 切换到进程 pid2时,是否可以不切换进程内逻辑内存与物理内存地址映射表;1)引入线程:2)实际情况是:2) 进程与线程区别补充:3) 多个执行序列(指令序列或线程)+一个地址空间是否实用?原创 2022-06-01 13:00:24 · 932 阅读 · 0 评论 -
6.操作系统多进程图像
本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;多进程图像定义:多个进程使用cpu的图像;多进程图像是操作系统的核心图像;1) PCB:2)多进程图像从启动开始到关机结束1)fork函数:启动一个进程;2)Linux操作系统初始化函数main函数,调用fork启动了第1个进程,该进程执行init函数,init启动一个shell程序;(window操作系统创建一个进程,启动一个桌面)3)对于linux操作系统,用户通过shell程序创建其他进程;4)window 打开任务管理器查原创 2022-06-01 12:28:38 · 436 阅读 · 0 评论 -
5.cpu管理的直观想法
本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;本文主要介绍了操作系统管理cpu的大致内容;1) 多进程管理视图: cpu 管理,内存管理;2) 文件操作视图: 键盘显示器,磁盘,文件管理等;把硬件参数读入内存,以便管理;包括 内存,缓冲区,硬盘等;用户态程序 通过系统调用(操作系统接口或系统函数)进入内核态;1)涉及 cpu管理,内存管理,磁盘管理,终端设备管理;硬件管理的具体内容:补充: 多进程视图包含 cpu管理,内存管理;多进程图像:1)cpu工作原理2)原创 2022-05-31 22:47:45 · 402 阅读 · 0 评论 -
4.操作系统历史
【README】本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;【1】IBM7094批处理操作系统: 一个job 一个job的顺序执行;【2】 IBM OS3601) 多道程序:程序1 程序2 交替占用cpu,执行过程交替向前推进;2) 所以就出现了作业之间(多道程序)的切换和调度,且切换和调度成为核心; 因为既有 IO 任务,也有计算任务,需要让CPU 忙碌;3) IBM os360 可以运行多道程序,作业在运行期间惊喜切...原创 2022-05-29 22:12:41 · 243 阅读 · 0 评论 -
3.操作系统接口与系统调用
【README】本文内容总结自 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;【1】操作系统接口0)用户使用计算机3种方式:命令行; 命令行执行 hello world 图形界面;如计算机磁盘浏览器,c,d盘; 应用程序;如word;1)命令行系统启动完成后, 会执行shell主体程序, 并打印出 /home/username/ 字符串; 并scanf 等待用户输入;用户输入后,执行函数 fork() exec() 申请cpu执行 output.c 代码;具体..原创 2022-05-29 21:40:21 · 2096 阅读 · 0 评论 -
2-操作系统启动
【README】本文内容总结自 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐;【1】概述1)问题:操作系统启动时,它应该做什么事情?计算机启动时,需要把存储在磁盘上的操作系统os的代码读入内存;由引导扇区程序 bootsect.s 完成;2)引导扇区程序做的工作包括(先后顺序):1. bios程序(基本输入输出系统)把引导扇区程序拷贝到 0x90000; 2. 读取从第2个扇区开始后续4个扇区的内容到0x90200为首地址的内存空间;【setup程序】 3....原创 2022-05-18 12:56:44 · 487 阅读 · 0 评论 -
1-操作系统启动前的工作
【README】1.本文总结自B站《操作系统(哈工大李治军老师)》的视频讲解,非常棒,墙裂推荐;【1】计算机上电 1) 问题: 这神秘的黑色背后发生了什么 ?计算机是怎么工作的?【2】从白纸到图灵机计算3+2的加法:控制器从纸带上读取已经写好的3 2 +;读取后,执行加法逻辑得到5,并把5再次送入到纸带上;但问题是,这个控制器只会做加法,不能做其他,这就是问题所在了;【3】从图灵机到通用图灵机如果一个控制器,像一个只会做饼的厨师那样,就显得很低级,不灵活,没...原创 2022-04-07 21:37:10 · 495 阅读 · 0 评论