操作系统
williamgavin
这个作者很懒,什么都没留下…
展开
-
intel 8086的内存分段管理机制
前言intel 8086是一个16位的CPU。CPU内部结构如下图 可以看到,在CPU内部的数据总线是十六位的,但是8086外部的地址总线是20位的,也就是说8086的实际物理地址是1MB。在BIU区域存在一个地址加法器,地址线经过这个加法器之后从16位变成了20位。那么这个过程是如何实现的呢?这就是这篇博客的需要讲的。正文为什么要分段管理?CPU内部的数据总线和段寄存器都是...原创 2018-03-12 10:33:19 · 6007 阅读 · 0 评论 -
操作系统(十) -- 段页结合的实际内存管理模型
文章目录虚拟内存虚拟内存的引入什么是虚拟内存一个实际的段、页式内存管理分配内存、建立段表分配内存、建立页表MMU地址处理参考资料前面说过用户程序喜欢分段来管理内存,但是实际的物理内存更加倾向于分页管理,因为这样可以使内存的利用率最大化。作为操作系统,既要向上负责,又要向下负责。这一篇博客主要谈谈用户程序需要的段和物理内存需要的页是如何结合到一起的。虚拟内存虚拟内存的引入首先两个条件,第一:...原创 2018-10-23 13:11:42 · 1591 阅读 · 0 评论 -
操作系统(九) -- 多级页表与快表
文章目录单级页表的缺点多级页表的提出第一种尝试:页表里面只存放用到的页第二种尝试:多级页表,页目录表+页表多级页表的缺点相连快速存储TLB(快表)小结参考资料单级页表的缺点前面说了为了提高内存的利用率,内存是分页管理的,并且有一个页表用来存储页号与页框的对应关系。这个思想理论上是没有问题的,但是实际使用的时候就不行了,为什么?为了更好的提高内存的利用率,每一页就应该做得足够小,但是每一页都要...原创 2018-10-21 12:00:11 · 14351 阅读 · 0 评论 -
操作系统(八) -- 内存的分段与分页
前言cpu的使用基本上告一段落,接下来是内存部分。正文内存如何使用:内存使用就是放在内存中的程序能够按照正确的逻辑顺序执行首先让程序进入内存:问题引入假设一段c代码int main (int argc, char * argv[]){ ………………}编译之后形成的汇编代码如下:_entry: call _main call_exit_main:…………………...原创 2018-10-20 19:27:51 · 7579 阅读 · 6 评论 -
操作系统(七) -- 死锁
文章目录死锁举例死锁的基本概念死锁的定义:死锁会造成什么后果呢?死锁的成因死锁的四个必要条件死锁的处理方法概述死锁的处理方法死锁预防死锁避免死锁检测+恢复死锁忽略参考资料多个进程在交替执行的时候,如果控制不好,就会出现死锁的情况;这个问题需要操作系统去处理。死锁举例如下例子:Producer(item){ P(mutex); P(empty); // 代码 V(mutex...原创 2018-10-19 21:38:51 · 732 阅读 · 0 评论 -
操作系统(五) -- CPU的调度策略
常见的调度策略以及考虑的内容。CPU调度就是当前进程需要进行IO操作或者时间片结束了,如何从就绪队列中选择下一个执行的进程。CPU调度的直观想法:FIFO先入先出,根据队列的前后顺序执行。类似于银行和食堂排队,但是有问题,如果一个人只是简单的询问这样的算法肯定对他不公平。Priority(优先级)给每个进程都设置优先级,根据优先级来选取下一个执行的进程。对于一些时间短的任务可以适当增加...原创 2018-10-17 11:03:05 · 6691 阅读 · 2 评论 -
操作系统(四) -- 用户级线程与核心级线程(线程的切换)
文章目录为什么要说线程的切换线程的引入用户级线程用户级线程作用举例两个线程与一个栈。。。从一个栈到两个栈。。。核心级线程多处理器和多核的区别:核心级线程与用户级线程有什么区别呢?用户栈与内核栈之间的关联:参考资料为什么要说线程的切换操作系统是多进程的,我们关注的应该是进程之间的切换,那为什么关注线程的切换呢?因为理解了线程的切换之后可以更好的理解进程的切换,换句话说线程的切换是进程切换的基础。...原创 2018-10-15 18:17:43 · 26298 阅读 · 13 评论 -
操作系统(六) -- 多进程合作与信号量
文章目录前言多进程合作实例:多进程共同完成一个任务的实例生产者-消费者实例信号量的提出信号量用信号量解决生产者消费者问题:信号量的临界区保护信号量为什么要进行保护呢?临界区(Critical Section)临界区代码的保护原则:临界区保护的直观想法:两个进程之间的调度进入临界区的第一个尝试 - 轮换法:进入临界区的又一个尝试 - 标记法:Peterson算法:多个进程调度面包店算法:通过开关中断...原创 2018-10-18 09:49:59 · 1514 阅读 · 0 评论 -
操作系统(三) --CPU管理与多进程图像
前言操作系统里面有两个非常重要的图像,一个是多进程图像,另外一个就是文件管理图像。这一篇博客来和大家探讨一下什么是多进程图像,以及操作系统是如何支持多进程图像的。多进程操作系统的由来多进程图像对操作系统非常重要,是操作系统的核心部分,明白了它之后对于操作系统就明白了一大部分。那么多进程图像是怎么想出来的呢?操作系统的核心就是管理硬件,CPU是计算机的核心硬件,操作系统就是在管理cpu的时...原创 2018-09-17 22:53:52 · 1634 阅读 · 0 评论 -
操作系统(二) -- 操作系统的接口与实现
前言操作系统的接口什么是操作系统的接口POSIX标准系统调用的实现1,用户程序能不能直接调用系统内核2,如果不能直接调用,为什么?如何实现的3,用户程序如何才能调用系统内核系统调用的核心:具体实现:以printf为例总结一下系统调用的实现:参考资料前言前面说了操作系统启动时发生的事情,最后一个文件main.c中有这样一行代码:if(!...原创 2018-09-16 23:33:07 · 16039 阅读 · 1 评论 -
操作系统(一) -- 操作系统的启动(bootsect、setup、head、main)
宏观认识操作系统什么是操作系统操作系统可以干什么开始进入操作系统开机的一瞬间,电脑在干嘛bootsect.sbootsect.s小结setup.ssetup小结head.smain.c总结参考资料宏观认识操作系统什么是操作系统操作系统是底层计算机硬件与上层应用软件之间的一个软件,计算机的一切活动都是通过cpu、内存、显卡、显示器等硬件...原创 2018-09-12 18:23:34 · 6357 阅读 · 6 评论 -
操作系统(十一) -- 内存的换入与换出及换出的基本算法
文章目录前言换入换入概述一个实际系统的请求调页换出FIFO(先入先出)MIN算法LRU算法LRU算法的准确实现:用时间戳LRU算法的准确时间:用页码栈clock算法二次机会算法给进程分配多少个页框参考资料前言前面说过为了保证内存在用户程序看起来是分段,而实际是分页的效果,引入了虚拟内存。对于用户来说,虚拟内存是一个完整的内存,用户可以随意使用该“内存”,假设为4G,那么对于用户来说就有4G的空...原创 2018-10-24 09:41:34 · 5088 阅读 · 0 评论